如何对您的网站进行人工智能可提取性审计(我发现有6个标题标签导致了我被扣分)
当人工智能助手回答问题时,它会从寥寥几页内容中提取相关句子并加以引用。你的页面是否适合被人工智能系统引用,并非什么难以理解的现象,而是与你所使用的HTML代码的某些机械性特性有关——这些特性是可以被测量、评估并加以调整的。 本教程将详细介绍我对自己网站进行的那次审计过程:它发现了哪些隐藏在代码中的标题标签,以及如何通过一次简单的修改就能解决这些问题,同时还会讲解如何利用持续集成系统来防止类似问题再次发生。 重点在于:我的主页在可提取性方面的得分是65分(满分100分)。造成这一问题的原因在于有五个UI组件将其标题标记为 或 标签。将这六个标题修改为符合ARIA标准的段落格式后,页面的得分便提高
当人工智能助手回答问题时,它会从寥寥几页内容中提取相关句子并加以引用。你的页面是否适合被人工智能系统引用,并非什么难以理解的现象,而是与你所使用的HTML代码的某些机械性特性有关——这些特性是可以被测量、评估并加以调整的。
本教程将详细介绍我对自己网站进行的那次审计过程:它发现了哪些隐藏在代码中的标题标签,以及如何通过一次简单的修改就能解决这些问题,同时还会讲解如何利用持续集成系统来防止类似问题再次发生。
重点在于:我的主页在可提取性方面的得分是65分(满分100分)。造成这一问题的原因在于有五个UI组件将其标题标记为或标签。将这六个标题修改为符合ARIA标准的段落格式后,页面的得分便提高到了100分——而这一切都没有改变任何可见的内容或文字。
在过去的90天内,微软的Bing网站管理工具记录显示,在我的33个页面中,共有1,600次被人工智能系统引用的情况发生。本教程所讲解的审计流程,正是针对这一环节进行的。
目录
可提取性审计究竟检测什么
人工智能系统对页面的引用过程实际上是一个包含三个阶段的自动化流程,而你的页面必须通过每一个阶段才能被成功引用:
获取数据:搜索引擎的爬虫会尝试访问你的页面,并成功获取到相关内容。
提取信息:人工智能模型会在你的HTML代码中找到清晰、完整的答案。
确定来源:系统会确认这些信息究竟是由谁提供的,然后才会将你的网站名称显示在引用结果旁边。

大多数关于提升AI可识别性的建议都集中在第1阶段(robots.txt文件、站点地图、llms.txt文件)和第3阶段(数据结构规范、实体标识信息)。然而,在第2阶段,我发现了能够带来最大收益的方法——因为这纯粹属于HTML技术层面的优化,而且这些问题的存在往往不会产生任何明显的错误提示:如果一个页面虽然能够正确获取内容及其属性,但提取结果质量很差,那么这样的页面根本就不会出现在搜索结果中,也没有任何机制能告诉你原因何在。
可提取性实际上就是第2阶段的量化指标:当解析器遍历你的HTML代码时,它能否在范围明确的标题下找到完整的答案内容?本教程中的检测方法会使用五个具体的检查项,按照0到100的分值来评估这一指标,而你也可以亲自验证这些检查项的有效性:
| 检查项 | 测试内容 | 权重 |
|---|---|---|
| F1 | 每个H2标题下的第一句话能否独立构成一个答案 | 30 |
| F2 | 页面前200个字符中是否包含直接答案 | 20 |
| F3 | 每个H2标题段落的开头部分是否为40到60字的答案内容 | 20 |
| F4 | H2/H3标题中是否有用户可能会用来提问的表述方式 | 20 |
| F5 | 文章底部是否设有常见问题解答部分 | 10 |
如果得分达到75分或以上,说明该页面属于“可提取”类别;40到74分则为“部分可提取”;低于40分的则属于“不可提取”类别。这些评分标准来源于我维护的AI可识别性评估框架,但其中的五个检查项本身与具体的技术平台无关——它们只是描述了那些能够利用检索技术优化页面结构的系统是如何对内容进行分类、整合的,以及如何选取与查询内容匹配的部分来生成答案的。
对于本教程来说,一个关键点是需要明确:检测时会统计你渲染后的DOM结构中所有的、和标签,而不是你在内容管理系统中自定义设置的标题标签,也不是组件库自动生成的标题。正是这些差异导致了我在实际测试中发现了许多问题。
先决条件
一个可以对其进行测试和部署的在线网站(使用任何技术栈均可。我的示例中使用的是SvelteKit,但同样的优化方法也适用于React、Vue或纯HTML项目。)
Python 3.10及以上版本,并安装
requests和beautifulsoup4库(执行命令:pip install requests beautifulsoup4)能够访问你的搜索分析数据(如Google Search Console或Bing Webmaster Tools),以便确定需要检测的页面。
一个持续集成系统(示例中使用了GitHub Actions)
大约需要90分钟的时间:其中20分钟用于检测,40分钟用于优化代码,30分钟用于进行持续集成测试。
步骤1:选择需要检测的页面
不要对整个站点地图进行检测,而应该重点检查那些已经获得一定传播效果的页面——因为对这些页面进行优化,会进一步提升你的内容被检索到的概率。
打开Google Search Console,进入“性能”板块,按照过去28天内的展示次数对页面进行排序,这样就能清楚地了解到哪些页面真正获得了较好的传播效果。
以下是我针对那次数据导出所得到的分析结果(7月21日):
| 页面地址 | 展示次数(28天内) | 点击次数 | )平均排名 |
|---|---|---|---|
| /blog/claude-fable-5-vs-opus-4-8 | 17,315 | 462 | 6.2 |
| /blog/how-i-built-polymarket-trading-bot | 13,649 | 104 | 7.6 |
| /blog/claude-code-production-trading-bot | 6,540 | 94 | 8.5 |
| /blog/aeo-answer-engine-optimization-explained | 4,189 | 1 | 8.2 |
其中,个别文章的展示次数最多,但请注意:这些文章都有一个共同点:它们都是使用相同的布局结构和组件来呈现内容的。
只要修复了某个组件,所有使用该组件的页面都会立即得到优化效果。因此,我选择对排名前3到5位的内容索引页进行审计,而不是针对单个文章:比如首页、博客索引页,以及各类主题或分类页面。
索引页几乎完全是由重复使用的组件构成的,因此一旦这些组件出现问题,其影响就会最为明显;任何修复措施都会对所有相关页面产生效果。
我最终选择了以下三个页面进行审计:
chudi.dev/(首页)chudi.dev/blog(博客文章索引页)chudi.dev/topics(主题分类页面)
审计对象确认:你现在应该已经得到了一份包含3到5个URL地址的列表。这个列表就是本次审计的范围。
步骤2:执行五项检查
使用大约60行Python代码,你就可以完成这五项检查。这个版本是专门为测试目的而设计的简化版;它包含了用于检测组件故障的两项检查(F3和F4),同时还进行了全面的标题内容统计分析,这些功能已经足以帮助我们找出本教程所针对的那些错误类型。
import re
import sys
import requests
from bs4 import BeautifulSoup
QUESTION = re.compile(
r"^\s*(what|how|why|when|where|who|which|is|are|can|do|does|should|will|did)\b|\?\s*$",
re.IGNORECASE,
)
def audit(url):
html = requests.get(url, timeout=8, headers={"User-Agent": "extract-audit/1.0"}).text
soup = BeautifulSoup(html, "html.parser")
headings = [(h.name, " ".join(h.get_text().split())) for h in soup.find_all(["h1", "h2", "h3"])]
subheads = [(n, t) for n, t in headings if n in ("h2", "h3")]
question_rate = (
sum(1 for _, t in subheads if QUESTION.search(t)) / len(subheads) if subheads else 0.0
)
in_band = 0
h2s = soup.find_all("h2")
for h2 in h2s:
first_p = h2.find_next("p")
words = len(first_p.get_text().split()) if first_p else 0
if 40 <= words <= 60:
in_band += 1
print(f"URL: {url}")
print(f"标题内容统计(共{len(headings)}条):")
for name, text in headings:
print(f" <{name}> {text[:70]}")
print(f"F4格式检查通过率:{question_rate:.1%}(目标值 >= 50%)")
print(f"标题字数在40到60字之间的比例:{in_band}/{len(h2s)}")
if __name__ == "__main__":
audit(sys.argv[1])
将此脚本应用于你列表中的每一页:
python3 extract_audit.py https://yoursite.com/
需要重点关注的是那些标题信息。该脚本会按顺序输出解析器检测到的所有H1/H2/H3标题,而这些标题往往并不是你实际发布的结构。
如果你想要获得包含五项检查结果以及0到100分权重评分的完整报告,可以通过citability.dev上的自动审计工具来执行所有五项检查,该工具还会进行信息检索和出处标注等操作。不过上面的手动检查方法也已经足以完成本教程的要求。
“Artifact检查”:该检查会为每一页生成终端输出结果,其中包含标题信息、F4标签的使用频率以及F3标签的出现次数。请将这些输出结果截图保存下来,这些数据就是你在开始检查之前的初始状态。
步骤3:查看失败原因
以下是从修复前的提交记录中提取的关于我主页的检查结果(日期为2026-05-23):
得分:65/100,部分可提取,低于及格分数线10分
F4标签使用比例:26.7%,远低于及格线50%
原因:检查结果显示有超过十个标题其实并不是我手动设置的标题
通过这个检查结果,问题变得一目了然。在我刻意设置的一些章节标题(如“如何查看实时运行效果?”、“检索标题是什么?”)之外,还有很多内容被标记为
或标签,但实际上这些内容并不是我手动输入的标题。这些错误其实是由页面组件自动生成的。
这里有一个重要的经验教训,值得作为一条规则来记住:
分母其实就是设计上的问题。你的页面组件生成的每一个标题都会被用于所有的比率检查中。如果有十个
标签,那就意味着你精心设计的问题标题会被那些看不见的标记内容以4比1的比例盖过风头。
针对不同的失败原因,相应的修复方法如下:
| 检查结果中的具体表现 | 失败原因 | 修复步骤 |
|---|---|---|
| 你未手动设置的标题,以小组形式重复出现 | 页面组件自动生成的标题 | 步骤4和步骤5 |
| 你自己编写的H2标签实际上应该表示问题,而不是陈述事实 | 标题格式错误 | 将标题改写成疑问句形式 |
| 章节开头使用了过长的介绍性文字 | 未达到规定的字数要求 | 将开头部分修改为40到60字的简短内容 |
| 没有设置FAQ板块 | 缺少F5标签 | 在页面底部添加FAQ板块 |
在我的三页页面中,都存在这四种问题。其中,“组件生成的标题”这一项造成的影响最为严重,而且因为人们通常不会仔细查看内容管理系统中的设置,所以这个问题很容易被忽视。需要特别说明的是,我在其他页面上进行的修复确实与表格中描述的方法一致:在框架页面上,将两个H2标签改写成了疑问句形式;在主题介绍部分,也将原本37字的开头文字扩展到了大约50字,从而符合要求。
检查结果:你的代码中存在被标记为四种错误类型的元素。请统计一下有多少标题是你本不应该使用的。步骤4:找出那些会生成虚假标题的组件
代码分析结果显示确实存在虚假标题,而你的组件库能帮助你确定这些虚假标题的来源。请在组件目录中查找标题标签,而不是在内容文件中搜索:
grep -rn "
(对于React项目,使用命令:grep -rn ".vue文件进行搜索。)
在我的网站中,共在五个组件中发现了六个生成虚假标题的元素:
| 组件名称 | 生成的标签类型 | 出现次数 |
|---|---|---|
BlogCard.svelte |
|
2次 |
BlogCardFeatured.svelte |
|
1次 |
ProductCard.svelte |
|
1次 |
ProjectCard.svelte |
|
1次 |
JourneyCard.svelte |
|
1次 |
乍一看,这六个标签似乎没什么大问题,但如果你考虑到这些组件会被重复使用,那么情况就不同了。例如,如果一个博客页面显示了10个BlogCard组件,那么就会在页面中生成10个标签。网站上的每一个由这些组件构成的页面都会受到同样的影响,因此我的内容索引页的排名才会如此低下。
为什么组件库会这样做呢?因为组件标题看起来确实像段落标题,而且无障碍访问指南也提倡使用语义化的HTML标签。
但实际上这种做法存在隐患:组件标题其实是一个链接标签,它指向的是另一个文档,而不是当前文档的某个部分。页面的真实结构应该是“这里是我的推荐文章”,而不是每篇文章下面的标题。由于HTML中没有专门用于表示“其他页面的标题”的标签,因此组件默认使用H2/H3标签,而任何解析这些代码的工具都会误判页面的结构。
检查结果:你需要列出所有使用了H2/H3标签的组件、它们生成的标签类型以及出现次数。这份清单就是你的修改列表。
步骤5:在不影响无障碍访问功能的前提下调整标题级别
一种显而易见的解决方法是将标签替换为带有样式的或标签,但这种做法会带来负面影响:使用屏幕阅读器的用户是通过标题结构来导航的,而组件标题在浏览文章列表时确实起到了重要的作用。如果完全去除这些语义化标签,虽然可以提高人工智能分析的效率,但却会损害无障碍访问功能。其实并没有必要做出这样的取舍。
一种既能保留语义化标签又能保证无障碍访问功能的解决方法就是使用ARIA属性来调整标题级别:可以将原来的标签替换为一个包含role="heading"属性的段落,并明确指定其aria-level值。
在讨论这些修改之前,有几点需要明确:ARIA的第一条规则就是优先使用原生的HTML元素,而这个修改并没有违反这一规则。这条规则适用于那些确实属于当前文档标题的文本;而第4步的目的恰恰是确定“卡片标题”并不属于这种情况——它们实际上只是指向其他文档的链接标签而已。
使用原生的`
`标签并不符合语义规范,而赋予其ARIA角色则是一种额外的考虑,目的是为了满足那些已经习惯通过标题进行导航的屏幕阅读器用户的需求。
以下是我对`BlogCard.svelte`文件所做的实际修改内容,除了代码格式上的调整外,其他部分都没有变化:
-
{post.title}
+
text-[var(--color-text-primary)]
group-hover:text-[var(--color-primary)]
transition-colors line-clamp-2">
{post.title}
哪些内容发生了变化,哪些没有变化呢?
辅助技术会识别出相同的结构。`role="heading"`加上`aria-level="3"`,正好符合ARIA标准中`
`标签的作用。那些依靠标题进行导航的屏幕阅读器仍然会在这里停下来,并正确地读取这个标题的级别。
视觉样式没有发生任何变化。所有的CSS类依然保留在了原来的元素上,没有任何位置的代码被移动或调整。
内容本身也没有任何改变。这个修改并没有删除任何文字;因为大多数关于数据提取的建议都会建议用户重新编写代码,但这种类型的错误其实根本不需要重新编写代码就能解决。
HTML标签解析器也不会再把这类元素计算在内了。数据提取工具会按照`
`、`
`、`
`等标签类型来划分内容。这样一来,那些被标记为“卡片标题”的元素就不再会被计入统计范围了,你原本设置的标题级别也会重新恢复正常,从而保证各种比例计算的正确性。
在你们列出的需要修改的页面上,都应用这一条相同的修改即可。在我的例子中,只需要一次代码提交,就能影响到五个组件中的六个地方。
之后重新部署网站,并再次进行第2步的检查。在我的主页上,数据提取的可读性分数从65分提高到了100分;其中,以问题形式呈现的标题的可读性比例也从26.7%上升到了超过50%。这是因为我在页面中设置的四个问题标题,成为了该页面上唯一的H2/H3级别的标题。
验证结果:在检查后的截图旁边,会显示终端输出的结果。现在,标题统计列表中应该只包含那些你故意添加的标题了。
第6步:在持续集成系统中应用这些修改
关于数据提取分数,有一个不容忽视的事实:这些分数会发生变化。内容被修改了,新的组件被添加了,或者页面进行了重新设计,都会导致这些分数发生变化。
在我编写这篇教程的时候(7月21日),我的主页再次接受了检查,目前的得分是80分——仍然属于“可提取”的范围,但已经低于修改后的100分了。这是因为在这段时间里,我的主页进行了重新设计,页面的结构再次发生了变化。不过,博客索引和主题中心部分的得分依然保持在100分。
正是这种渐进式的变化,导致本教程所提供的解决方案并不能彻底解决问题。实际上,真正关键的是“回归检测机制”。如果没有这个机制,下一个被开发出来的组件可能会引入新的 `
` 标签,从而导致整体得分逐渐下降。由于没有任何明显的错误出现,因此这些变更也不会在审查过程中被发现。
在我的系统中,这个检测流程是通过 GitHub Actions 工作流来执行的。每当一次生产环境的部署成功完成时,这个流程就会自动运行;如果有任何被审计的 URL 的可提取性指标低于预设阈值,那么整个流程就会立即失败:
name: 部署后的可提取性审计
on:
deployment_status:
jobs:
audit:
if: |
github.event.deployment_status.state == 'success' && github.event.deployment.environment == 'Production'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- run: pip install requests beautifulsoup4
- name: 在实际网站地址上检测可提取性
run: |
for url in "https://yoursite.com/" "https://yoursite.com/blog"; do
python3 scripts/extract_audit.py "$url" --min-score 75 || exit 1
done
为了让这个检测脚本能够适应持续集成流程,只需在步骤 2 的脚本中添加一个 `--min-score` 参数即可。这样,当检测结果低于阈值时,脚本就会立即退出并返回错误代码。这种修改只需要对代码进行五行左右的修改而已。
在我的系统中,生产环境版本的检测流程会同时检查五个 URL,并将这些URL的可提取性指标与 Lighthouse 的可访问性标准进行对比。这样,步骤 5 中规定的 ARIA 规范就能得到有效执行:可提取性指标不能低于 75,可访问性指标也不能低于 95。这种双重约束机制能够确保各项指标始终处于合格范围内。
测试示例:在 GitHub Actions 的设置中,如果将 `--min-score` 参数设置为 101,那么检测流程就会失败;而当阈值设为 75 时,检测流程则会正常通过。
实际发生了哪些变化
这是我三个页面的可提取性得分对比表,所有数据都来自同一检测工具:
| 页面 | 修复前得分 | 修复后得分 | 7月21日实时审计得分 |
|---|---|---|---|
| 首页 | 65分(部分内容可提取) | 100分(全部内容可提取) | 80分(部分内容可提取) |
| 博客索引页 | 低于最低阈值 | 100分(全部内容可提取) | 100分(全部内容可提取) |
| 主题中心页面 | 低于最低阈值 | 100分(全部内容可提取) | 100分(全部内容可提取) |

审计所起的作用,就在于为后续的指标分析提供依据:Bing Webmaster Tools中的AI性能报告是目前唯一一个由第一方提供的、专门用于监测AI引用的仪表盘。你可以在“BWT”设置中的“搜索性能”板块找到这个报告。根据该报告,在截至7月19日的90天内,我的网站通过Microsoft Copilot及其合作伙伴提供的辅助工具,在33个页面上获得了1,600次AI引用。而在4月底,也就是开始进行这些优化工作的时候,这一数字还为671次;到了6月底,这一数字已经增加到了约1,500次。
需要说明的是,这里存在因果关系判断上的复杂性——因为通常人们会高估AI技术对内容可见性的提升作用:引用的增加确实与相关优化工作有关,但并不能完全将其归因于这些优化措施。在同样的时间段内,我还发布了新的内容、解决了数据检索方面存在的问题,并且常规搜索流量也有所增加。
我可以肯定的是,审计结果所反映的效应确实是具有因果关系的——因为使用的是相同的评估工具,在进行优化前后所获得的结果确实存在差异;这种优化的机制也是引擎的官方行为规范(即通过标题来进行内容分割);而且,在问题得到解决之后,引用的次数仍然在持续增加。不过,我无法为你提供一个能够专门针对六种不同的标题标签进行控制的实验来验证这一因果关系……其实,根本没有人能够做到这一点。
我拒绝了哪些优化措施,以及原因
像这样的教程往往容易受到选择偏差的影响,因此以下是我考虑过但最终没有采纳的一些优化方案:
重新编写页面内容:这本来是标准的优化建议。但我拒绝了这个方案,因为统计分析结果显示存在的问题在于页面的结构设计,而非文字表达本身。我自己编写的内容已经通过了评估标准,重新编写内容只会浪费时间,还会影响评估结果的准确性。
直接删除
/标签对,同时不使用ARIA属性:
这样做会减少每个元素所包含的属性数量。但我拒绝了这个方案,因为这会破坏屏幕阅读器用户能够使用的导航结构。虽然审计工具可能检测不出这种变化,但用户肯定会察觉到。在每一页上都添加FAQ相关的元数据:虽然这样做可以提升评分,但JSON-LD格式的元数据成本相对较低。但我还是首先放弃了这个方案,因为这种做法只是治标不治本——它只是用元数据来改善页面的表现形式,而页面的实际结构问题并没有得到解决。
对站点地图中的每一页都进行审计:追求完整性确实很容易让人产生冲动。但我拒绝了这个方案,因为很多优化措施实际上会提升数据的检索效率,而对于那些检索效率本来就不高的页面来说,这种优化效果并不明显。因此,只需对三个索引页面进行优化,就能达到预期的效果。
将得分目标定在100分:在我观察到自己的首页得分从100分降到了80分之后——尽管这次设计变更与搜索引擎排名并无直接关系——我最终将持续集成测试的合格标准设定在了75分,而不是100分。如果把完美作为唯一的目标,那么每一次内容优化尝试都可能会以失败告终,而且还会让团队忽略真正重要的评估标准。
常见问题解答
降低标题的层级会影响我的常规SEO表现吗?
对于搜索来说,真正重要的标题是那些能够描述文档自身结构的标题,这些标题应该保持原样不变。你需要删除的,只是那些将“其他文档”的标题标示为文档大纲的标记内容。 在问题得到解决后的几个月里,我的自然搜索展示次数确实有所增加。谷歌的任何指导方针中,都没有要求卡片标题必须使用标题元素来表示。这个只是关于游戏的一个审计脚本吗?
这五种检查方法实际上反映了检索增强系统是如何处理页面内容的:它们会按照标题将页面内容分块处理,提取相关内容,并选取匹配内容的开头句子。如果使用了错误的标题结构,无论使用哪种评估工具,都会影响整个处理流程。你所做的并不是在为某个特定的审计工具进行优化,而是在修改所有解析器都能看到的DOM结构。评分结果只是一个参考指标,正因为如此,第6步才会根据这个评分来决定是否通过审核,而不是依据具体的数字。我使用的是React或Vue,而不是Svelte。这会有什么影响吗?
没有任何结构上的变化。这个错误在JSX和SFC模板中表现是一样的(在Card.tsx文件中,都是使用{title}
这种格式),第4步中的grep工具能够检测到这个问题,而role="heading"与aria-level的组合在所有框架中都是有效的,因为它们本质上就是普通的HTML代码。
那么我文章中的标题该怎么办呢?
把它们保留为真正的/元素吧。文章正文中的标题本身就是文档结构的重要组成部分,它们理应被包含在统计分析中。只有那些用于显示“其他”页面标题的组件,比如卡片、预告内容、相关文章插件以及导航面板,才需要调整其标题设置。
我应该多久重新进行一次审计呢?
应该持续地进行审计,第6步正是为了实现这一点:持续集成系统会在每次生产环境部署时自动重新进行审计,这样你就再也不用手动进行审计了。 如果你跳过了这个自动审核流程,那么就需要每月运行一次第2步中的脚本,并且在布局组件、导航结构或模板有任何更改时也要及时重新执行审计。页面内容本身的修改很少会导致评分有显著变化,真正能改变评分结果的是组件和模板的改动,而这些改动往往不会被人们想到需要重新进行评估。我自己的首页评分从100降到了80,就是因为进行了设计上的调整,而不是因为添加了新的内容。我的评分很低,而且我没有使用任何卡片组件。现在该怎么办呢?
如果出现这种情况,问题通常出在代码的编写方式上,而不是结构本身:可能是声明性的标题被改成了用户可能会输入的问题形式,也可能是开头句子的字数超出了40到60字的范围,又或者是缺少了FAQ板块。第2步中的统计分析会告诉你具体是哪个方面出了问题,相应的修复工作也需要通过修改代码来完成,而不是调整组件结构。你所取得的成果
你成功地测量到了很多网站所有者都从未注意过的信息:你的组件实际生成的标题结构,以及由此计算出的可提取性评分。<您找出了导致分数较低的具体原因,采用了一种既能满足提取解析工具的要求,也能让屏幕阅读器正常工作的优化方案,并设置了相应的监控机制,以确保分数不会再出现下降的情况。 <从本系列的前两篇指南中,我们可以了解到更广泛的背景信息:如何衡量你的AI在各种引擎中的被引用率可以帮助你了解自己的内容是否真的被他人所引用;而使用WebMCP为交互式应用开发用户界面则能帮助你的网站更好地适应那些需要与系统进行互动而非仅仅阅读内容的用户。 <本教程正好填补了这一环节中的空白——它帮助你让已经存在的内容具备被有效利用的条件。信息检索机制决定了各种引擎是否会注意到你的内容;归属判定机制决定了它们是否会提及你的名称;而你刚刚审核过的提取过程,则决定了这些内容是否足够规范、适合被他人引用。 <这周,请对你网站中排名前三的页面进行一次检查。如果你的各个组件确实起到了应有的作用,那么你现在就应该知道如何让这些组件的效果得到更好的发挥了。相关文章
如何使用纯JavaScript使静态HTML页面在浏览器中可被编辑
当你为他人维护文档时,比如简历、一页的作品集或可打印的菜单,瓶颈往往不在于布局设计,而在于编辑流程本身。 任何微小的修改(“把这个项目符号上移”、“删除那行内容”、“这个链接已经失效了”)都需要由你这位使用代码编辑器的人来完成,尽管提出修改要求的人自己非常清楚他们想要做什么。 我在为一位家庭成员维护简历时遇到了这个问题。那份简历被制作成了一个静态的HTML文件,设计已经完成,内容也是由当事人提供的。但每次进行修改——无论是重新排列职位顺序、添加证书信息、修复链接,还是调整打印分页设置——都意味着要再次发送修改内容给我,然后让我去编辑文件。经过第十次这样的循环后,我终于意识到:其实应该让页面能够
阅读全文
如何利用Gemini构建人工智能功能:面向开发者的提示工程实用指南
大多数关于提示工程的教学教程都遵循相同的流程:安装SDK,输入API密钥,调用 generateContent 函数,然后打印输出结果。模型会生成一些看似合理的内容,之后教学教程也就结束了。 但当你真正尝试将这个系统投入实际使用时,才会发现其实真正的准备工作根本还没有开始。 “API返回的文本”与“让用户感到可信的实际功能”之间的差距,正是需要耗费大量精力去解决的地方。 这个差距中充满了各种棘手的问题:模型生成的内容听起来和其他聊天机器人没什么两样;它会编造用户从未说过的话;它返回的数据会被用Markdown格式包裹起来;系统会在凌晨2点出现故障;而对于那些只是想得到答案的用户来说,系统展示的
阅读全文
如何使用 shadcn/ui 在 React 中构建一个可重复使用的日期时间选择器
日期和时间选择器这类组件,在设计文件中看起来可能很简洁,但一旦开始实际开发,就会发现它们会消耗大量的资源。你需要一个日历、一个时间选择器,以及一个能够保证这两者同步的状态管理系统,通常还需要范围选择功能以及对应的多语言版本。 本指南将介绍一些现成的选择器组件,你可以直接将这些组件应用到你的React项目中:组合型日期和时间选择器、日期范围选择器以及时间选择器。 所有这些组件都可以作为 Shadcn日期和时间选择器 组件使用,你只需通过一条CLI命令即可安装它们,而无需从头开始开发。 这些组件都是基于Radix和Base UI的基础架构构建的,下面介绍的版本是使用Base UI实现的。此外,这些
阅读全文
如何使用LangSmith来追踪和监控人工智能代理的行为
在本教程中,我将向您展示如何使用LangSmith来追踪和监控本地的AI代理。我们会构建一个简单的本地AI代理,然后为其启用LangSmith追踪功能,这样我们就能通过Web界面查看模型调用情况、工具使用情况以及请求处理延迟等信息。 我们将使用LangChain v1、Ollama、Qwen以及Python这些工具。除了用于实现观测功能的组件外,所有操作都在您的本地机器上完成,因此代理本身不会产生任何与模型API相关的费用。 目录 背景知识 什么是可观测性与监控? 什么是LangSmith? 开发动机与架构设计 步骤1:安装Ollama并下载模型 步骤2:安装Python相关依赖库 步骤3:启
阅读全文