General - Deep Research - Research Report

SkillDocs & knowledge

Summarizes deep research results into a Markdown research report that fiction writers can use directly, covering all fields and skipping uncertain values. The report is saved to the project's or genre's `写作研究/` directory.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the General - Deep Research - Research Report skill

What this skill tells your AI

The instructions your AI receives, as published by lornshrimp/lorn.novelwriteskills in CommonSkills/通用-深度研究/research-report/SKILL.md and read by ahel’s review.

触发方式

/research-report

执行流程

Step 1: 定位结果目录

在当前工作目录查找 */outline.yaml,读取 topic、research_domain 和 output_dir 配置。

Step 2: 扫描可选摘要字段

读取所有 JSON 结果,提取适合在目录中显示的字段(数值型、简短指标),例如:

  • market_share(市场份额)
  • reader_rating(读者评分)
  • growth_trend(增长趋势)
  • search_heat(搜索热度)
  • publication_count(作品数量)

使用 AskUserQuestion 询问用户:

  • 目录中除了 item 名称外,还需要显示哪些摘要字段?
  • 提供动态选项列表(基于实际 JSON 中存在的字段)

Step 3: 生成 Python 转换脚本

{topic}/ 目录下生成 generate_report.py,脚本要求:

  • 读取 output_dir 下所有 JSON
  • 读取 fields.yaml 获取字段结构
  • 覆盖每个 JSON 的所有字段值
  • 跳过值包含 [不确定] 的字段
  • 跳过 uncertain 数组中列出的字段
  • 生成 Markdown 报告格式:目录(带锚点跳转+用户选择的摘要字段)+ 详细内容(按字段分类)+ 创作可迁移总结
  • 保存到 {topic}/report.md

目录格式要求

  • 必须包含每一个 item
  • 每个 item 显示:序号、名称(锚点链接)、用户选择的摘要字段
  • 示例:1. [读者偏好迁移](#读者偏好迁移) - 增长趋势: ↑15% | 搜索热度: 高
脚本技术要点(必须遵循)

1. JSON 结构兼容 支持两种 JSON 结构:

  • 扁平结构:字段直接在顶层 {"name": "xxx", "market_share": "xxx"}
  • 嵌套结构:字段在 category 子 dict 中 {"市场数据": {"name": "xxx"}, "内容特征": {...}}

字段查找顺序:顶层 → category 映射 key → 遍历所有嵌套 dict

2. Category 多语言映射 fields.yaml 的 category 名与 JSON 的 key 可能是任意组合(中中、中英、英中、英英)。必须建立双向映射:

CATEGORY_MAPPING = {
    "市场数据": ["market_data", "市场数据"],
    "内容特征": ["content_features", "内容特征"],
    "读者反馈": ["reader_feedback", "读者反馈"],
    "专业知识": ["domain_knowledge", "professional_knowledge", "专业知识"],
    "人物特征": ["character_traits", "人物特征"],
    "场景细节": ["scene_details", "场景细节"],
    "技法要素": ["technique_elements", "技法要素"],
    "创作可迁移": ["transferable_insights", "创作可迁移"],
}

3. 复杂值格式化

  • list of dicts:每个 dict 格式化为一行,用 | 分隔 kv
  • 普通 list:短列表用逗号连接,长列表换行显示
  • 嵌套 dict:递归格式化,用分号或换行显示
  • 长文本字符串(超过 100 字符):添加换行符 <br> 或使用 blockquote 格式,提高可读性

4. 额外字段收集 收集 JSON 中有但 fields.yaml 中没定义的字段,放入"其他信息"分类。注意过滤:

  • 内部字段:_source_fileuncertain
  • 嵌套结构顶级 key:市场数据内容特征
  • uncertain 数组:需要逐行显示每个字段名,不要压缩成一行

5. 不确定值跳过 跳过条件:

  • 字段值包含 [不确定] 字符串
  • 字段名在 uncertain 数组中
  • 字段值为 None 或空字符串

6. 创作可迁移总结(新增,强制) 报告末尾必须生成一个 "创作可用结论与抓手" 部分,将全部研究发现翻译成小说创作者可以直接使用的行动建议:

  • 按"可直接用于正文"、"可用于设定/大纲"、"需要进一步研究"三级分类
  • 每条建议必须具体到:可以写什么场景、可以怎么用、可以用在什么类型的情节中
  • 这是整个研究报告的核心价值产出,不能跳过或敷衍

Step 6: 报告质量自检(检查点3)

报告生成完成后,执行以下自检清单(借鉴 nuwa-skill Phase 4 质量验证方法论):

## 报告质量自检清单

### 结构完整性
- [ ] 包含 `## 研究课题`
- [ ] 包含 `## 研究方法与来源`
- [ ] 包含 `## 核心发现`(区分核心/参考/待验证三级)
- [ ] 包含 `## 创作可用的结论与抓手`(≥3 条具体建议)
- [ ] 包含 `## 诚实边界`(信息截止日期 + 信息缺口 + 不确定项 + 置信度总评)
- [ ] 包含 `## 信息来源`(区分一手/二手,标注可信度)

### 质量验证(三重验证)
- [ ] 每条"核心发现"有 ≥2 个独立来源支撑?
- [ ] "创作可用的结论与抓手"中的每条建议都具体到"可写什么场景/怎么用/用在哪类情节"?
- [ ] 超过 50% 的核心发现通过"有区分度"验证(不是常识)?

### 诚实边界
- [ ] 明确写了信息截止日期?
- [ ] 列出了所有 `[不确定]` 和 `[待验证]` 条目?
- [ ] 给出了整体置信度总评(高/中/低)及理由?
- [ ] 标注了信息不足的维度?

### 矛盾处理
- [ ] 报告中的矛盾发现已保留(未强行统一)?
- [ ] 矛盾双方都标注了来源类型与可信度?

Step 7: 询问报告落盘路径

使用 AskUserQuestion 询问用户:

  • 报告应保存到哪个目录?(建议保存到项目或题材目录的 写作研究/ 下)
  • 是否需要同时生成一份精简版(仅含"创作可用结论与抓手")?

Step 8: 执行脚本

运行 python {topic}/generate_report.py

输出

  • {topic}/generate_report.py - 转换脚本
  • {topic}/report.md - 完整研究报告
  • {写作研究目录}/{研究域简称}_{课题简述}.md - 最终落盘文件(可选精简版)

Signals

GitHub stars
210
Forks
38
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
github-com-lornshrimp-lorn-novelwriteskills-skill-re-0q7f18u
Source
github.com/lornshrimp/lorn.novelwriteskills