为个人网站实现 JSON-LD"}],
为个人网站实现 JSON-LD
JSON-LD (JSON Linked Data) 是一种用于向网页添加结构化数据的标准化格式,允许网络爬虫和 AI 引擎理解网站的语义结构。实现 JSON-LD 可以带来更丰富的链接预览、提高搜索排名,并提升 LLM 爬虫的引用准确性。
JSON-LD 基础知识
JSON-LD 是通过在 HTML 文档的 <head> 部分添加一个 MIME 类型为 application/ld+json 的 <script> 标签来实现的。这可以确保浏览器的 JavaScript 引擎忽略其内容,而专门的爬虫(如 Googlebot)则会对其进行解析。
JSON-LD 文档的核心组件
- @context: 定义所使用的词汇表。大多数网络爬虫都遵循 Schema.org 标准。
- @graph: 一个带标签的有向图,包含由弧连接的多个节点。
- Nodes: 图中的单个实体,由以下内容定义:
- @type: 节点的类别(例如,
WebSite、Person)。 - @id: 唯一标识符,通常是一个带有哈希值的 URL(例如,
https://example.com/#website),这允许爬虫在不同页面间合并同一实体的属性。 - Properties: 描述节点属性的键值对。
- @type: 节点的类别(例如,
个人网站必备节点
为了最大限度地提高 SEO 和可发现性,个人网站应实现一组特定的 Schema.org 节点。
WebSite 和 WebPage
WebSite 节点提供有关整个域名的层级元数据,例如网站名称和描述。虽然根页面应该包含一个详尽的 WebSite 节点,但后续页面可以使用精简版本,为单页爬虫提供足够的上下文。
WebPage 描述了物理 HTML 页面及其内容。它是一个通用节点,可以进一步细化为子类型,如 ProfilePage(用于“关于”页面)或 CollectionPage(用于博客索引或个人资料列表)。
Person
Person 节点对于内容质量指标和 LLM 引用至关重要。它应该包含在个人网站的每个页面上,以建立一致的身份标识。关键属性包括:
- url: 锚定身份的根页面。
- name, givenName, familyName: 对个人的清晰标识。
- sameAs: 其他专业个人资料的 URL 列表(GitHub、LinkedIn 等),这有助于爬虫构建知识图谱并区分同名人士。
- image: 与该人相关的规范照片或 Logo。
SoftwareApplication
对于展示项目的开发者,SoftwareApplication 节点(或其子类型,如 MobileApplication 或 WebApplication)提供了有关软件的元数据。建议为免费和开源软件 (FOSS) 添加一个价格为 0 的 offers 属性,以确保元数据的完整性。
内容组织与导航
BreadcrumbList
BreadcrumbList 允许网站所有者控制搜索引擎如何在搜索结果中表示页面层级。这对于将长 URL 路径缩短为可读格式(例如,Home > Blog > Post Title)特别有用。
Blog 和 BlogPosting
对于带有技术博客的网站,使用两层结构:
- Blog: 此节点放置在博客索引页,作为
WebSite与单个文章之间的桥梁。它可以包含license属性(例如, Creative Commons)以告知爬虫使用权限。 - BlogPosting: 此节点应用于单个文章。它应包含
headline、datePublished、dateModified和author(指向回Person节点)。image属性应与用于社交链接预览的 Open Graph (OG) 图片保持一致。
实现总结表
| Node Type | Recommended Placement | Primary Purpose |
|---|---|---|
WebSite |
所有页面 (根页面使用完整版) | 域名级元数据和网站命名 |
Person |
所有页面 | 身份、权威性和 LLM 引用 |
WebPage |
所有页面 | 对特定 HTML 文档的描述 |
BreadcrumbList |
所有非根页面 | 搜索引擎路径表示 |
Blog |
博客索引页 | 博客文章的聚合器 |
BlogPosting |
单个博客文章 | 文章特定元数据和富摘要 |