Skip to content

📄 本页由源文件 skills/research-doc/SKILL.md 自动投影生成(单一权威源)。请勿直接编辑本页。

research-doc

外网资料搜索与文档生成一体化工作流。根据用户指定主题搜索外网资料,整理汇总后生成指定格式的文档。


触发规则

核心判断原则

只要任务同时满足以下两个条件,即触发本 Skill

  1. 信息搜集/知识整理:需要搜索外网资料、整理专业知识、梳理标准法规等
  2. 文档文件输出:最终需要生成 Word/PPT/PDF/Excel 等文档文件

显式触发

research-doc / 调研文档 / 调研报告 关键词。

隐式触发

满足以下任一条件:

信号模式示例
调研/分析/对比 + 主题"帮我调研下 XX"、"对比 A 和 B"
搜索/查找 + 主题 + 文档需求"搜索 XX 资料整理成文档"、"查找 XX 相关内容"
生成文档 + 格式关键词"做个 PPT"、"生成 Excel 报告"、"导出 Word"
总结/汇总 + 输出要求"把这些整理成文档"、"汇总成报告"
给出/列出/梳理/整理 + 专业内容 + 生成文档"给出测试方法和标准,并生成 Word 文档"
针对 XX + 给出/总结 + 方法/标准/规范/要求 + 文档"针对 XX 产品…给出检测标准…生成 Word"
非代码主题 + 文档格式关键词(word/ppt/pdf/excel/docx/pptx/xlsx)"血管塞检测项目…生成 word 文档"
专业领域知识 + 文件输出需求"XX 的法律法规和接收标准,导出为 PDF"

文档格式关键词(触发辅助信号)

以下关键词出现在非代码语境中,视为文档输出需求: word / Word / docx / ppt / PPT / pptx / pdf / PDF / excel / Excel / xlsx / 报告 / 文档

不触发

  • 纯代码开发任务(由 dev-flow 处理)
  • 单次问答无文档输出需求(如"XX 是什么?")
  • 内部/文档平台 搜索需求
  • 代码文件中出现上述关键词(如代码注释中的 "word")

工作流

┌──────────────────────────────────────────────────┐
│  Phase 1: CLARIFY(明确需求)                      │
│  - 确认搜索主题和目标                               │
│  - 确认输出格式(PPT/PDF/Word/Excel)               │
│  - 确认输出目录                                    │
│  - 确认深度(快速概览 / 深度分析)                    │
├──────────────────────────────────────────────────┤
│  Phase 2: RESEARCH(外网搜索)                      │
│  ┌──────────────┐ ┌──────────────┐                │
│  │  web_search  │ │  web_fetch   │                │
│  │  关键词搜索   │ │  页面抓取     │                │
│  └──────────────┘ └──────────────┘                │
├──────────────────────────────────────────────────┤
│  Phase 3: ANALYZE(整理分析)                       │
│  - 信息去重、分类、结构化                            │
│  - 提炼关键结论和建议                               │
│  - 构建文档大纲                                    │
├──────────────────────────────────────────────────┤
│  Phase 4: GENERATE(生成文档)                      │
│  - 根据格式选择最优生成方案                          │
│  - 执行生成脚本                                    │
│  - 验证输出文件可打开                               │
├──────────────────────────────────────────────────┤
│  Phase 5: DELIVER(交付)                          │
│  - 展示文档预览或摘要                               │
│  - 调用 open_result_view 呈现结果                   │
└──────────────────────────────────────────────────┘

Phase 1: CLARIFY

开始前必须确认以下信息,不确定时主动询问:

项目说明默认值
搜索主题用户指定的搜索内容无(必填,由用户每次告知)
输出格式PPT / PDF / Word / Excel / MarkdownMarkdown
输出目录文件保存位置~/docs-output/
调研深度快速(10 min)/ 深度(30 min)快速

输出目录规则:所有生成的文件统一保存到 ~/docs-output/,按主题创建子文件夹。如:~/docs-output/20260309_XXX主题/report.pptx


Phase 2: RESEARCH

搜索策略

仅使用外网搜索,不使用项目代码搜索、内网搜索或 文档平台 搜索。

根据用户指定的主题,并行使用 web_search + web_fetch 进行多轮搜索:

搜索工具:
- web_search:关键词搜索,获取搜索结果列表
- web_fetch:抓取特定页面的详细内容

搜索策略:
- 第 1 轮:用主题关键词直接搜索,获取全局概览
- 第 2 轮:根据第 1 轮结果,细化关键词深入搜索
- 第 3 轮:补充搜索遗漏角度或交叉验证关键信息

关键词构造示例:
- 综述类:"{主题} 综述 2025/2026" / "{topic} overview"
- 对比类:"{A} vs {B} comparison" / "{A} 和 {B} 区别"
- 实践类:"{主题} best practices" / "{主题} 实践经验"
- 趋势类:"{主题} trends 2026" / "{主题} 最新进展"

搜索质量要求

  • 至少使用 3 种不同关键词 搜索同一主题
  • 搜索结果优先取 最近 1 年 的内容
  • 关键数据和结论必须 交叉验证(至少 2 个独立来源)
  • 对重要页面使用 web_fetch 抓取完整内容,不仅依赖搜索摘要

Phase 3: ANALYZE

信息整理模板

markdown
## 调研结论

### 核心发现
1. {发现 1}
2. {发现 2}
3. {发现 3}

### 对比矩阵(适用于方案对比)
| 维度 | 方案 A | 方案 B | 方案 C |
|------|--------|--------|--------|
| 功能完整度 | | | |
| 性能 | | | |
| 维护成本 | | | |
| 社区生态 | | | |
| 学习曲线 | | | |

### 建议
- 推荐:{方案} — 原因:{理由}
- 备选:{方案} — 适用场景:{场景}

Phase 4: GENERATE

格式选择决策树

需要生成文档?
├── PPT → 执行 scripts/gen_pptx.py
├── Word → 执行 scripts/gen_docx.py
├── Excel → 执行 scripts/gen_xlsx.py
├── PDF → 先生成 Markdown,再通过脚本转换
│   ├── 有 weasyprint → scripts/gen_pdf.py(HTML→PDF)
│   └── 无 weasyprint → 生成 Markdown 文件,建议用户手动转换
└── Markdown → 直接写入文件

生成脚本使用

所有脚本位于 scripts/ 目录,接受 JSON 格式的内容参数:

bash
# PPT 生成
python3 {skill_dir}/scripts/gen_pptx.py --input content.json --output report.pptx

# Word 生成
python3 {skill_dir}/scripts/gen_docx.py --input content.json --output report.docx

# Excel 生成
python3 {skill_dir}/scripts/gen_xlsx.py --input content.json --output report.xlsx

# PDF 生成(通过 HTML 中间格式)
python3 {skill_dir}/scripts/gen_pdf.py --input content.json --output report.pdf

内容 JSON 格式

生成脚本统一接受以下 JSON 结构:

json
{
  "title": "调研报告标题",
  "subtitle": "副标题(可选)",
  "author": "作者(可选)",
  "date": "2026-03-09",
  "sections": [
    {
      "title": "章节标题",
      "content": "章节内容(支持 Markdown)",
      "type": "text | table | chart | bullet",
      "data": {}
    }
  ]
}

依赖检查

生成文档前,检查所需库是否已安装。缺失时执行:

bash
bash {skill_dir}/scripts/setup.sh

Phase 5: DELIVER

  1. 验证生成的文件存在且大小 > 0
  2. 在对话中输出文档摘要(标题 + 章节列表 + 页数/行数)
  3. 调用 open_result_view 展示结果文件

文档设计原则

PPT 设计规范

原则说明
字体标题 28pt+,正文 18pt+,使用系统安全字体
配色主色 + 辅色 + 强调色,不超过 4 种
布局标题页 + 目录页 + 内容页 + 总结页
每页内容一页一个核心观点,避免信息过载
图表优先数据用图表展示,避免大段文字

Word 设计规范

原则说明
结构标题层级清晰(H1→H2→H3)
目录超过 3 页必须生成目录
表格对比信息用表格而非文字
页眉页脚包含标题和页码

Excel 设计规范

原则说明
Sheet 命名有意义的中文名称
表头加粗 + 背景色 + 冻结首行
列宽自动适配内容宽度
公式使用 Excel 公式而非硬编码值
数据验证关键列添加数据验证

反模式

反模式正确做法
不确认输出目录就生成文件先确认目录位置
只搜索一次就下结论至少 3 种关键词交叉验证
仅依赖搜索摘要对重要页面用 web_fetch 获取完整内容
使用内部/文档平台/项目代码搜索仅使用外网搜索(web_search + web_fetch)
PPT 塞满文字一页一观点,图表优先
Excel 写死数值使用 Excel 公式
跳过文件验证生成后必须验证可打开
忽略用户偏好输出格式和深度都要确认

基于「单一权威源」哲学构建 —— 文档由源文件投影生成