research-report
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseResearch Report - Summary Report
研究报告 - 汇总报告
Trigger
触发指令
/research-report/research-reportWorkflow
工作流程
Step 1: Locate Results Directory
步骤1:定位结果目录
Find in current working directory, read topic and output_dir config.
*/outline.yaml在当前工作目录中查找,读取topic和output_dir配置。
*/outline.yamlStep 2: Scan Optional Summary Fields
步骤2:扫描可选汇总字段
Read all JSON results, extract fields suitable for TOC display (numeric, short metrics), e.g.:
- github_stars
- google_scholar_cites
- swe_bench_score
- user_scale
- valuation
- release_date
Use request_user_input to ask user:
- Which fields to display in TOC besides item name?
- Provide dynamic options list (based on actual fields in JSON)
读取所有JSON结果,提取适合在TOC中展示的字段(数值型、短指标),例如:
- github_stars
- google_scholar_cites
- swe_bench_score
- user_scale
- valuation
- release_date
使用request_user_input询问用户:
- 除项目名称外,哪些字段需要在TOC中展示?
- 提供动态选项列表(基于JSON中的实际字段)
Step 3: Generate Python Conversion Script
步骤3:生成Python转换脚本
Generate in directory, script requirements:
generate_report.py{topic}/- Read all JSON from output_dir
- Read fields.yaml to get field structure
- Cover all field values from each JSON
- Skip fields with values containing [uncertain]
- Skip fields listed in uncertain array
- Generate markdown report format: Table of contents (with anchor links + user-selected summary fields) + Detailed content (by field category)
- Save to
{topic}/report.md
TOC Format Requirements:
- Must include every item
- Each item displays: number, name (anchor link), user-selected summary fields
- Example:
1. [GitHub Copilot](#github-copilot) - Stars: 10k | Score: 85%
在目录下生成脚本,脚本要求:
{topic}/generate_report.py- 读取output_dir中的所有JSON文件
- 读取fields.yaml获取字段结构
- 覆盖每个JSON中的所有字段值
- 跳过值包含[uncertain]的字段
- 跳过uncertain数组中列出的字段
- 生成Markdown报告格式:目录(含锚点链接 + 用户选择的汇总字段) + 详细内容(按字段分类)
- 保存至
{topic}/report.md
TOC格式要求:
- 必须包含所有项目
- 每个项目展示:编号、名称(锚点链接)、用户选择的汇总字段
- 示例:
1. [GitHub Copilot](#github-copilot) - Stars: 10k | Score: 85%
Script Technical Requirements (Must Follow)
脚本技术要求(必须遵守)
1. JSON Structure Compatibility
Support two JSON structures:
- Flat structure: Fields directly at top level
{"name": "xxx", "release_date": "xxx"} - Nested structure: Fields in category sub-dict
{"basic_info": {"name": "xxx"}, "technical_features": {...}}
Field lookup order: Top level -> category mapping key -> Traverse all nested dicts
2. Category Multi-language Mapping
fields.yaml category names and JSON keys can be any combination (CN-CN, CN-EN, EN-CN, EN-EN). Must establish bidirectional mapping:
python
CATEGORY_MAPPING = {
"Basic Info": ["basic_info", "Basic Info"],
"Technical Features": ["technical_features", "technical_characteristics", "Technical Features"],
"Performance Metrics": ["performance_metrics", "performance", "Performance Metrics"],
"Milestone Significance": ["milestone_significance", "milestones", "Milestone Significance"],
"Business Info": ["business_info", "commercial_info", "Business Info"],
"Competition & Ecosystem": ["competition_ecosystem", "competition", "Competition & Ecosystem"],
"History": ["history", "History"],
"Market Positioning": ["market_positioning", "market", "Market Positioning"],
}3. Complex Value Formatting
- list of dicts (e.g., key_events, funding_history): Format each dict as one line, separate kv with
| - Normal list: Short lists joined with comma, long lists displayed with line breaks
- Nested dict: Recursive formatting, display with semicolon or line breaks
- Long text strings (over 100 chars): Add line breaks or use blockquote format for readability
<br>
4. Extra Fields Collection
Collect fields that exist in JSON but not defined in fields.yaml, put in "Other Info" category. Note to filter:
- Internal fields: ,
_source_fileuncertain - Nested structure top-level keys: ,
basic_infoetc.technical_features - array: Display each field name on separate line, don't compress into one line
uncertain
5. Uncertain Value Skipping
Skip conditions:
- Field value contains string
[uncertain] - Field name is in array
uncertain - Field value is None or empty string
1. JSON结构兼容性
支持两种JSON结构:
- 扁平结构:字段直接位于顶层
{"name": "xxx", "release_date": "xxx"} - 嵌套结构:字段位于分类子字典中
{"basic_info": {"name": "xxx"}, "technical_features": {...}}
字段查找顺序:顶层 -> 分类映射键 -> 遍历所有嵌套字典
2. 分类多语言映射
fields.yaml中的分类名称和JSON键可以是任意组合(中-中、中-英、英-中、英-英)。必须建立双向映射:
python
CATEGORY_MAPPING = {
"Basic Info": ["basic_info", "Basic Info"],
"Technical Features": ["technical_features", "technical_characteristics", "Technical Features"],
"Performance Metrics": ["performance_metrics", "performance", "Performance Metrics"],
"Milestone Significance": ["milestone_significance", "milestones", "Milestone Significance"],
"Business Info": ["business_info", "commercial_info", "Business Info"],
"Competition & Ecosystem": ["competition_ecosystem", "competition", "Competition & Ecosystem"],
"History": ["history", "History"],
"Market Positioning": ["market_positioning", "market", "Market Positioning"],
}3. 复杂值格式化
- 字典列表(如key_events、funding_history):将每个字典格式为一行,键值对用分隔
| - 普通列表:短列表用逗号连接,长列表换行展示
- 嵌套字典:递归格式化,用分号或换行展示
- 长文本字符串(超过100字符):添加换行符或使用块引用格式提升可读性
<br>
4. 额外字段收集
收集JSON中存在但fields.yaml未定义的字段,放入“Other Info”分类。注意过滤:
- 内部字段:、
_source_fileuncertain - 嵌套结构顶层键:、
basic_info等technical_features - 数组:每个字段名称单独一行展示,不要压缩为一行
uncertain
5. 不确定值跳过规则
跳过条件:
- 字段值包含字符串
[uncertain] - 字段名称在数组中
uncertain - 字段值为None或空字符串
Step 4: Execute Script
步骤4:执行脚本
Run
python {topic}/generate_report.py运行
python {topic}/generate_report.pyOutput
输出
- - Conversion script
{topic}/generate_report.py - - Summary report
{topic}/report.md
- - 转换脚本
{topic}/generate_report.py - - 汇总报告
{topic}/report.md