SuperAPI AI 工具集

Searching AEM Documentation

编程与开发

查看项目

更新于 10-15 10:06

技能介绍

用途

本技能用于高效搜索完整的 aem.live 文档(包括文档页面和博客文章),避免在无关页面上浪费上下文。它通过提供的搜索脚本查找相关文档页面,然后使用 WebFetch 读取最相关结果的完整内容。

何时使用

在以下情况使用本技能:

  • 需要了解 aem.live 功能或概念的信息
  • 已经查看过项目代码库以获取上下文
  • 尝试过基本网络搜索但未找到相关的 aem.live 文档
  • 需要关于实现 aem.live 功能的技术指导
  • 正在寻找官方文档中的最佳实践或示例

在以下情况不要使用本技能:

  • 需要可复用的代码片段或区块示例(改用 block-collection-and-party)
  • 已经知道具体的文档 URL
  • 正在寻找通用 Web 开发信息(非 aem.live 特定)

使用方式

第 1 步:确定关键词

确定 1-3 个与搜索内容相关的具体关键词。要具体而非宽泛。

好的关键词:

  • "block decoration"
  • "metadata"
  • "universal editor"
  • "sidekick plugin"

差的关键词:

  • "aem"(过于宽泛,会被作为停用词过滤)
  • "how to build website"(过于宽泛)
  • "the"(停用词)

第 2 步:运行搜索脚本

从项目根目录执行搜索脚本:

node .claude/skills/docs-search/scripts/search.js [--all] <keyword1> [keyword2] [...]

选项:

  • --all:返回所有匹配结果(默认:限制为 10 个最相关结果)
  • 不使用 --all:返回前 10 个结果

示例:

# 搜索区块装饰信息
node .claude/skills/docs-search/scripts/search.js block decoration

# 搜索 metadata 并返回所有结果
node .claude/skills/docs-search/scripts/search.js --all metadata

# 多词搜索
node .claude/skills/docs-search/scripts/search.js universal editor blocks

第 3 步:查看搜索结果

脚本返回 JSON,结构如下:

[
  {
    "path": "/developer/markup-sections-blocks",
    "title": "Markup, Sections, Blocks, and Auto Blocking",
    "description": "To design websites and create functionality, developers use the markup and DOM...",
    "snippet": "Markup, Sections, Blocks, and Auto Blocking\n\nTo design websites...",
    "type": "doc",
    "deprecation": null,
    "relevanceScore": 141
  }
]

字段说明:

  • path:文档页面的 URL 路径
  • title:页面标题
  • description:简要摘要(通常约 150 字符)——用于快速了解上下文
  • snippet:页面内容中显示关键词上下文的相关摘录
  • type:"doc" 或 "blog"
  • deprecation:功能已弃用时的警告消息(或 null)
  • relevanceScore:相关度分数(越高越相关)

重要说明:

  • 结果按相关度排序(最高在前)
  • 已弃用页面的相关度分数会降低,但仍会出现在结果中
  • description 字段提供最佳的快速摘要
  • snippet 显示关键词上下文,但可能不全面

第 4 步:使用 WebFetch 获取完整内容

搜索结果提供概览。要获取详细信息,使用 WebFetch 读取完整页面:

WebFetch: https://www.aem.live{path}

最佳实践:从最相关的前 2-3 个结果开始,用 WebFetch 完整阅读,然后决定是否需要更多。

第 5 步:向用户提示弃用信息

如果任何结果的 deprecation 字段有内容,告知用户该功能已弃用并包含弃用消息。建议他们查看排名更高(未弃用)的替代方案。

搜索行为细节

搜索范围

  • 主要:完整文档(docpages-index.json)——150+ 页面,包含完整内容
  • 次要:博客文章(query-index.json)——仅在找到少于 5 个文档结果时搜索

停用词(自动过滤)

以下常见词在搜索中被忽略:

  • 冠词:the, a, an
  • 连词:and, or, but
  • 介词:in, on, at, to, for, of, with, by
  • AEM 特定:aem, cms, edge, delivery, services

相关度评分

  • 标题匹配:每次出现 10 分
  • 描述匹配:每次出现 5 分
  • 内容匹配:每次出现 1 分
  • 多关键词奖励:多个关键词匹配时 1.5 倍乘数
  • 弃用惩罚:已弃用功能 0.5 倍乘数(分数减半)

缓存

索引文件在本地缓存 24 小时,位于 .claude/skills/docs-search/.cache/。这可以加速后续搜索。

示例

示例 1:查找区块文档

用户请求:"How do I decorate blocks in aem.live?"

好的做法:

  • 搜索:node .claude/skills/docs-search/scripts/search.js block decoration
  • 查看前 3 个结果
  • WebFetch 最相关的:https://www.aem.live/developer/markup-sections-blocks
  • 阅读完整内容并提供答案

差的做法:

  • 改用 WebSearch(在无关结果上浪费时间)
  • 不使用搜索脚本(可能错过最佳文档页面)

示例 2:了解 Metadata

用户请求:"I need to add metadata to my pages"

好的做法:

  • 搜索:node .claude/skills/docs-search/scripts/search.js metadata
  • 注意顶部结果是 "/docs/bulk-metadata"(分数:63)
  • 还看到 "/docs/metadata"(分数:30)
  • WebFetch 两者以了解页面级与批量 metadata
  • 提供包含两种方法的全面答案

差的做法:

  • 只阅读第一个结果而错过批量 metadata 选项
  • 需要全面覆盖时不使用 --all

示例 3:弃用功能警告

用户请求:"How do I use folder mapping?"

搜索结果:

[
  {
    "path": "/developer/authoring-path-mapping",
    "title": "Path mapping for AEM authoring",
    "relevanceScore": 51,
    "deprecation": null
  },
  {
    "path": "/developer/folder-mapping",
    "title": "Folder Mapping",
    "relevanceScore": 34.5,
    "deprecation": "Please contact us if you have a use case for folder mapping..."
  }
]

好的回应: "我找到了关于 folder mapping 的信息,但此功能已弃用。弃用通知说:'Please contact us if you have a use case for folder mapping...'。当前推荐的方法是 Path mapping for AEM authoring(顶部结果)。让我改为阅读该文档。"

差的回应:

  • 忽略弃用警告并实现已弃用的功能
  • 不提及更好的替代方案

相关技能

  • block-collection-and-party:需要可复用代码示例或区块实现时使用
  • building-blocks:从头创建新区块时使用
  • content-modeling:为区块设计内容模型时使用

重要提醒

  • 始终检查弃用警告并提醒用户
  • 使用 WebFetch 阅读完整页面——搜索结果仅用于找到正确的页面
  • 从顶部 2-3 个结果开始,再扩展搜索
  • description 字段很有用——它通常写得很好且简洁
  • 不要仅依赖 snippet——它们用于提供上下文,而非全面信息