使用Google Tag Manager动态生成Schema/JSON-LD出现不可解析结构化数据错误
问题排查与解决方法
- 确认JSON-LD注入时机
动态生成的结构化数据需要在页面DOM加载完成后立刻注入,避免使用延迟加载、异步执行的逻辑加载注入代码,防止Google爬虫抓取页面时还未完成结构化数据的渲染。如果使用服务端渲染,优先选择服务端直接输出JSON-LD,兼容性最好。 - 校验JSON格式合法性
Google搜索控制台的结构化数据解析器比富结果测试工具规则更严格,需要重点排查两个问题:- 所有动态插入的字段内容要提前转义,双引号、换行符、特殊符号都要做转义处理,字段内容不能包含未剥离的HTML标签
- 不要出现对象/数组末尾的多余逗号,这类语法在部分环境能正常运行,但会触发Google解析失败
- 标准JS注入JSON-LD示例
按照以下写法注入结构化数据可以避免绝大多数解析错误:// 构造新闻文章Schema对象 const newsArticleSchema = { "@context": "https://schema.org", "@type": "NewsArticle", "headline": "新闻标题", "datePublished": "发布时间", "dateModified": "修改时间", "author": { "@type": "Person", "name": "作者名" } // 补充其他所需字段 } // 生成标签插入页面 const ldScript = document.createElement('script') ldScript.type = 'application/ld+json' ldScript.textContent = JSON.stringify(newsArticleSchema) document.head.appendChild(ldScript) - 其他注意事项
不要在单页面重复注入多个相同类型的NewsArticle结构化数据,使用React、Vue等框架时不要用innerHTML属性插入JSON-LD内容,用textContent赋值可以避免自动转义导致的格式错误。
你提供的JSON-LD脚本截图如下:
内容的提问来源于stack exchange,提问作者Svetlana Wilson
相关产品推荐
相关产品推荐

