
Research To Diagram
- 66 installs
- 140 repo stars
- Updated January 2, 2026
- wshuyi/research-to-diagram
Helps with ai & agent building tasks.
About
research-to-diagram is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- research-to-diagram
- AI & Agent Building
- AI-coding skill
Research To Diagram by the numbers
- 66 all-time installs (skills.sh)
- +1 installs in the week ending Jul 27, 2026 (Skillselion tracking)
- Ranked #6,006 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Jul 31, 2026 (Skillselion catalog sync)
npx skills add https://github.com/wshuyi/research-to-diagram --skill research-to-diagramAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 66 |
|---|---|
| repo stars | ★ 140 |
| Last updated | January 2, 2026 |
| Repository | wshuyi/research-to-diagram ↗ |
What it does
Helps with ai & agent building tasks.
Files
Research to Diagram
深度调研主题并自动生成知识关系图谱PDF。从研究到可视化的一站式工具。
Description
这个 Skill 接收用户提供的研究主题,自动进行深度网络调研、信息收集、知识整理、结构设计,最终生成专业的可视化关系图谱PDF。与 structure-to-pdf 不同,本 Skill 专注于主动研究和知识挖掘,而非被动的数据转换。
核心特性
- 自动调研:使用 WebSearch 进行多轮深度调研
- 智能整理:自动提取、分类、结构化信息
- 专业设计:根据主题特点选择最佳可视化方案
- 多种输出:支持 Graphviz、PlantUML、Mermaid 等工具
- 高质量PDF:生成矢量图形,可无限缩放
Trigger Conditions
当用户想要:
- 研究某个复杂主题的知识结构(如"红楼梦人物关系")
- 生成人物关系图、概念图谱、知识图谱
- 理解某个领域的组织架构、技术架构
- 可视化复杂的关系网络
- 需要从零开始研究并可视化某个主题
关键词:
- "调研...并做图"
- "研究...的关系"
- "深度分析...并可视化"
- "生成...知识图谱"
- "画...关系图"(无现成数据)
Workflow
1. 任务规划(TodoWrite)
- 深度调研主题和相关知识
- 设计图谱结构和层次
- 创建可视化图表
- 生成PDF文档2. 深度调研阶段
- 多轮 WebSearch:从不同角度收集信息
- 主题概述和背景
- 核心要素和人物/概念
- 关系和联系
- 层次和分类
- 信息源记录:保存所有参考资料链接
- 知识提取:识别关键实体和关系
3. 结构设计阶段
根据主题类型选择最佳结构:
人物关系图:
- 家族谱系:多层次树状结构
- 社会网络:网状关系图
- 组织架构:层次化布局
概念图谱:
- 知识分类:树状或思维导图
- 概念关系:有向图
- 流程图:线性或分支流程
技术架构:
- 系统组件:模块化布局
- 依赖关系:层次或网络图
- 数据流向:流程图
4. 可视化实现
优先使用 Graphviz (DOT 语言):
digraph G {
// 全局样式
graph [rankdir=TB bgcolor="#fdfdf5" fontname="Arial Unicode MS"]
node [shape=box style="rounded,filled" fillcolor="#e8f4f8"]
edge [fontname="Arial Unicode MS"]
// 使用 subgraph cluster 分组
subgraph cluster_group1 {
label="分组名称"
node1 [label="节点1"]
node2 [label="节点2"]
}
// 定义关系
node1 -> node2 [label="关系类型" color=red]
}备选工具:
- PlantUML:UML 图、时序图
- Mermaid:简单流程图、时序图
5. PDF 生成
dot -Tpdf diagram.dot -o output.pdf6. 文档整理
可选生成说明文档,包含:
- 研究主题概述
- 图谱说明
- 参考资料来源(Sources)
- 使用说明
设计原则
视觉设计
1. 颜色编码:使用不同颜色区分类别 2. 形状区分:不同类型实体用不同形状 3. 层次清晰:使用 subgraph cluster 分组 4. 关系标注:边的颜色、样式、标签表达关系类型 5. 中文支持:使用 "Arial Unicode MS" 或系统中文字体
信息层次
1. 标题层:主标题 2. 分组层:主要类别/家族 3. 实体层:具体人物/概念 4. 关系层:连接和标注 5. 图例层:说明符号含义
布局策略
- rankdir=TB:自上而下(家族树、组织架构)
- rankdir=LR:从左到右(流程图、时间线)
- rankdir=BT:自下而上(依赖图)
- splines=ortho:正交边(清晰的组织图)
- splines=curved:曲线边(美观的关系网)
输出文件
默认保存位置:~/Downloads/ 或用户指定目录
生成文件:
<topic>_relations.dot- Graphviz 源文件<topic>_relations.pdf- 最终PDF图谱<topic>_sources.md- 参考资料(可选)
使用示例
示例 1:文学作品人物关系
用户:深度调查《三国演义》里人物之间的关系,然后做个结构图 PDFSkill 执行: 1. 调研三国主要人物、阵营、关系 2. 设计:魏蜀吴三大阵营 + 人物层次 + 联盟/对抗关系 3. 使用 Graphviz 创建多层次关系图 4. 生成 PDF
示例 2:技术概念图谱
用户:研究 Kubernetes 架构并生成可视化图谱Skill 执行: 1. 调研 K8s 核心组件、架构层次 2. 设计:控制平面/数据平面/插件生态 3. 生成技术架构图 4. 输出 PDF
示例 3:历史事件关系
用户:分析二战主要国家和联盟关系,做成图表Skill 执行: 1. 调研参战国家、阵营、关键时间节点 2. 设计:轴心国/同盟国/中立国关系网 3. 生成带时间线的关系图 4. 输出 PDF
与 structure-to-pdf 的区别
| 特性 | research-to-diagram | structure-to-pdf |
|---|---|---|
| 输入 | 仅主题/研究问题 | 现成的结构化数据 |
| 调研 | ✅ 自动深度调研 | ❌ 无需调研 |
| 知识整理 | ✅ 自动提取和结构化 | ❌ 直接使用用户数据 |
| 应用场景 | 知识探索、研究可视化 | 快速数据转换 |
| 时间 | 较长(需调研) | 快速 |
何时使用本 Skill:
- ✅ 没有现成数据,需要从零研究
- ✅ 想要深度了解某个主题的知识结构
- ✅ 需要权威来源支持的可视化
何时使用 structure-to-pdf:
- ✅ 已有结构化数据
- ✅ 需要快速转换为图表
- ✅ 数据格式简单清晰
依赖工具
必需:
- Graphviz:
brew install graphviz(macOS) - WebSearch: Claude Code 内置
可选:
- PlantUML:
brew install plantuml - Mermaid CLI:
npm install -g @mermaid-js/mermaid-cli
配置选项
用户可以通过参数自定义:
--tool: 指定可视化工具 (graphviz/plantuml/mermaid)--layout: 指定布局方向 (TB/LR/BT/RL)--output: 指定输出目录--depth: 调研深度 (quick/medium/deep)--sources: 是否生成参考资料文档
最佳实践
1. 明确主题范围:主题越具体,图谱越清晰 2. 合理分组:使用 cluster 将相关实体分组 3. 控制复杂度:单个图谱不超过 50 个节点 4. 渐进细化:先生成总览图,再深入细节 5. 颜色一致:同类实体使用相同配色 6. 标注来源:在 PDF 底部或单独文档标注参考资料
常见图谱类型模板
人物关系图模板
- 家族/组织用 cluster 分组
- 人物用 box/ellipse,重要人物用特殊形状
- 血缘关系用实线,婚姻用红色,其他用虚线
- 添加图例说明符号含义概念图谱模板
- 顶层概念在上方
- 子概念逐层展开
- is-a 关系用实线,has-a 用虚线
- 使用颜色区分不同类别技术架构图模板
- 分层架构用 rankdir=TB
- 组件用矩形,服务用圆角矩形
- 依赖关系用箭头
- 关键路径用粗线或特殊颜色故障排除
中文显示乱码:
graph [fontname="Arial Unicode MS"]
node [fontname="Arial Unicode MS"]
edge [fontname="Arial Unicode MS"]图谱过于复杂:
- 使用
concentrate=true合并相同边 - 分割成多个子图
- 使用不同的 rankdir
布局不理想:
- 调整
ranksep和nodesep - 使用
rank=same强制节点同层 - 尝试不同的
splines设置
版本历史
- v1.0 (2026-01-02): 初始版本
- 基于《红楼梦》人物关系图谱项目总结
- 支持 Graphviz 自动生成
- 集成 WebSearch 深度调研
- TodoWrite 任务管理
Skill 选择指南:research-to-diagram vs structure-to-pdf
快速决策
有现成的结构化数据?
├─ 是 → 使用 structure-to-pdf
└─ 否 → 需要调研收集资料?
├─ 是 → 使用 research-to-diagram
└─ 否 → 自己准备数据后用 structure-to-pdf详细对比
| 维度 | research-to-diagram | structure-to-pdf |
|---|---|---|
| 定位 | 研究驱动的知识图谱生成器 | 数据驱动的快速可视化工具 |
| 输入方式 | 仅需提供主题/问题 | 需提供完整结构化数据 |
| 自动调研 | ✅ WebSearch 深度调研 | ❌ |
| 信息整理 | ✅ 自动提取和结构化 | ❌ 使用用户原始数据 |
| 工作流程 | 调研→整理→设计→生成 | 分析→转换→生成 |
| 处理时间 | 2-5 分钟(含调研) | <1 分钟 |
| 参考来源 | ✅ 提供所有来源链接 | ❌ |
| 任务管理 | ✅ TodoWrite 追踪进度 | ✅ TodoWrite 追踪进度 |
| 适用复杂度 | 复杂知识体系 | 简单到中等结构 |
| 最佳场景 | 探索性研究、知识挖掘 | 已知数据快速可视化 |
使用场景示例
✅ 使用 research-to-diagram 的场景
1. 文学作品人物关系研究
用户输入:
深度调查《红楼梦》里人物之间的关系,然后做个结构图 PDF为什么选它:
- ❌ 用户没有提供人物列表
- ✅ 需要调研四大家族、金陵十二钗等信息
- ✅ 需要理解复杂的家族关系网络
- ✅ 需要权威来源支持
2. 技术概念学习
用户输入:
研究 Kubernetes 架构并生成可视化图谱为什么选它:
- ❌ 用户对 K8s 架构不完全了解
- ✅ 需要调研核心组件、架构层次
- ✅ 需要理解组件间关系
- ✅ 需要最新文档和最佳实践
3. 历史事件分析
用户输入:
分析二战主要国家和联盟关系,做成图表为什么选它:
- ❌ 关系复杂,用户未提供详细数据
- ✅ 需要调研轴心国、同盟国成员
- ✅ 需要理解时间线和关系变化
- ✅ 需要历史准确性
✅ 使用 structure-to-pdf 的场景
1. 组织架构可视化
用户输入:
把这个组织结构转成 PDF 图表:
CEO
├── CTO
│ ├── Dev Team Lead
│ └── QA Team Lead
├── CFO
└── COO为什么选它:
- ✅ 用户已提供完整结构数据
- ❌ 不需要额外调研
- ✅ 快速生成即可
- ✅ 数据简单清晰
2. 流程图绘制
用户输入:
把这个审批流程画成图:
申请 → 部门审批 → 财务审批 → 总经理签字 → 完成为什么选它:
- ✅ 流程已完全定义
- ❌ 不需要调研
- ✅ 线性结构简单
- ✅ 追求速度
3. 已有数据转换
用户输入:
把这份 JSON 格式的依赖关系转成可视化图表:
{
"moduleA": ["moduleB", "moduleC"],
"moduleB": ["moduleD"],
"moduleC": ["moduleD", "moduleE"]
}为什么选它:
- ✅ 数据完整且结构化
- ❌ 不需要外部信息
- ✅ 直接转换即可
- ✅ 明确的输入输出
混合使用策略
有时候可以先用 research-to-diagram 研究,再用 structure-to-pdf 细化:
场景:复杂项目架构设计
第一步 - 使用 research-to-diagram:
"研究微服务架构的最佳实践,生成概览图"→ 获得标准的微服务架构模板和最佳实践
第二步 - 使用 structure-to-pdf:
"根据我们公司的实际情况,把这个具体的服务清单画成架构图:
- 用户服务(Python + Flask)
- 订单服务(Go + gRPC)
- 支付服务(Java + Spring)
- ..."→ 快速生成定制化的具体架构图
决策树
开始
↓
是否有完整的结构化数据?
├─ 是 → 数据是否需要调研补充?
│ ├─ 是 → research-to-diagram
│ └─ 否 → structure-to-pdf ⭐
│
└─ 否 → 主题是否需要深度研究?
├─ 是 → research-to-diagram ⭐
└─ 否 → 先准备数据 → structure-to-pdf特殊情况
1. 时间紧迫
- 有数据:structure-to-pdf(<1分钟)
- 无数据:手动快速收集 → structure-to-pdf
2. 需要权威来源
- 必须用 research-to-diagram
- 原因:自动记录所有参考资料来源
3. 数据保密
- 私有数据:structure-to-pdf(不上网)
- 公开主题:research-to-diagram
4. 需要多次迭代
- 第一版:research-to-diagram(研究框架)
- 后续版本:structure-to-pdf(快速调整)
实际案例对比
案例 1:公司组织架构
情况 A - 新加入公司,不了解架构:
"调研互联网公司的典型组织架构,帮我理解结构"→ 使用 research-to-diagram
情况 B - HR 提供了组织架构表:
"把这个 Excel 表格的组织架构画成图"→ 使用 structure-to-pdf
案例 2:学习新技术
情况 A - 初学者想了解 React 生态:
"研究 React 生态系统并生成知识图谱"→ 使用 research-to-diagram
情况 B - 已学习完毕,想做笔记:
"把我整理的这些 React 概念关系画成图"→ 使用 structure-to-pdf
案例 3:历史研究
情况 A - 探索历史事件:
"分析唐朝藩镇割据的形成过程和关系网络"→ 使用 research-to-diagram
情况 B - 已有笔记整理:
"把我整理的唐朝藩镇列表和关系画成图"→ 使用 structure-to-pdf
关键判断标准
选择 research-to-diagram 如果:
1. ✅ 你想学习某个主题 2. ✅ 你需要权威来源支持 3. ✅ 你不清楚完整的知识结构 4. ✅ 你需要深度理解关系网络 5. ✅ 你愿意花 2-5 分钟等待
选择 structure-to-pdf 如果:
1. ✅ 你已经知道所有信息 2. ✅ 你手头有完整数据 3. ✅ 你只需要快速可视化 4. ✅ 数据结构简单清晰 5. ✅ 你需要立即得到结果
总结
两个 Skill 是互补的,不是竞争关系:
- research-to-diagram = 🔍 研究员 + 📚 图书管理员 + 🎨 设计师
- "我不知道,帮我研究并画出来"
- structure-to-pdf = ⚡ 快速转换器 + 🎨 排版工具
- "我知道数据,帮我快速画出来"
黄金法则:
没数据找 research-to-diagram,有数据用 structure-to-pdf!
// 人物关系图模板
// 适用于:文学作品、历史人物、家族关系等
digraph CharacterRelationships {
// 全局配置
graph [
rankdir=TB // 布局方向:TB=上到下, LR=左到右
bgcolor="#fdfdf5" // 背景色
fontname="Arial Unicode MS" // 中文字体
fontsize=12
splines=ortho // 边的样式:ortho=正交, curved=曲线
nodesep=0.8 // 节点间距
ranksep=1.2 // 层级间距
compound=true // 允许跨cluster连接
]
node [
fontname="Arial Unicode MS"
fontsize=11
shape=box // 默认形状
style="rounded,filled"
fillcolor="#e8f4f8"
margin=0.2
]
edge [
fontname="Arial Unicode MS"
fontsize=9
]
// 标题
title [label="人物关系图" fontsize=20 shape=plaintext fillcolor=none]
// ========== 主要团体/家族 ==========
subgraph cluster_group1 {
label="第一家族"
style=filled
color=lightgrey
fontsize=14
person1 [label="人物1\n(描述)" fillcolor="#ffd700" shape=ellipse]
person2 [label="人物2"]
person3 [label="人物3"]
person1 -> person2 [label="父子" color=black]
person1 -> person3 [label="父女" color=black]
}
subgraph cluster_group2 {
label="第二家族"
style=filled
color="#ffe4b5"
fontsize=14
person4 [label="人物4"]
person5 [label="人物5"]
person4 -> person5 [label="夫妻" color=red]
}
// ========== 跨家族关系 ==========
person2 -> person5 [label="朋友" style=dashed color=blue]
person3 -> person4 [label="师徒" style=dashed color=green]
// ========== 图例 ==========
subgraph cluster_legend {
label="图例"
style=filled
color=white
fontsize=10
legend1 [label="重要人物" fillcolor="#ffd700" shape=ellipse]
legend2 [label="普通人物" fillcolor="#e8f4f8" shape=box]
legend3 [label="━━ 血缘关系(黑色)" shape=plaintext]
legend4 [label="━━ 婚姻关系(红色)" shape=plaintext]
legend5 [label="- - 其他关系(虚线)" shape=plaintext]
legend1 -> legend2 [style=invis]
legend2 -> legend3 [style=invis]
legend3 -> legend4 [style=invis]
legend4 -> legend5 [style=invis]
}
// 布局控制
title -> person1 [style=invis]
}
// 概念图谱模板
// 适用于:知识分类、技术概念、学科体系等
digraph ConceptMap {
// 全局配置
graph [
rankdir=TB
bgcolor="white"
fontname="Arial Unicode MS"
splines=curved
nodesep=1.0
ranksep=1.5
]
node [
fontname="Arial Unicode MS"
fontsize=11
style=filled
margin=0.3
]
edge [
fontname="Arial Unicode MS"
fontsize=9
arrowsize=0.8
]
// 标题
title [label="知识图谱" fontsize=20 shape=plaintext]
// ========== 顶层概念 ==========
root [
label="核心概念"
shape=ellipse
fillcolor="#ff6347"
fontsize=14
fontcolor=white
]
// ========== 第一层分类 ==========
category1 [label="类别1" fillcolor="#ffd700" shape=box style="rounded,filled"]
category2 [label="类别2" fillcolor="#87ceeb" shape=box style="rounded,filled"]
category3 [label="类别3" fillcolor="#98fb98" shape=box style="rounded,filled"]
root -> category1 [label="包含"]
root -> category2 [label="包含"]
root -> category3 [label="包含"]
// ========== 第二层细分 ==========
subgraph cluster_cat1 {
label="类别1 详细"
style=filled
color="#fffacd"
concept1_1 [label="概念1.1" fillcolor="lightyellow"]
concept1_2 [label="概念1.2" fillcolor="lightyellow"]
concept1_3 [label="概念1.3" fillcolor="lightyellow"]
category1 -> concept1_1
category1 -> concept1_2
category1 -> concept1_3
}
subgraph cluster_cat2 {
label="类别2 详细"
style=filled
color="#e0f7fa"
concept2_1 [label="概念2.1" fillcolor="lightcyan"]
concept2_2 [label="概念2.2" fillcolor="lightcyan"]
category2 -> concept2_1
category2 -> concept2_2
}
subgraph cluster_cat3 {
label="类别3 详细"
style=filled
color="#f1f8e9"
concept3_1 [label="概念3.1" fillcolor="lightgreen"]
concept3_2 [label="概念3.2" fillcolor="lightgreen"]
category3 -> concept3_1
category3 -> concept3_2
}
// ========== 概念间关联 ==========
concept1_1 -> concept2_1 [label="依赖" style=dashed color=blue]
concept1_2 -> concept3_1 [label="影响" style=dashed color=purple]
concept2_2 -> concept3_2 [label="相关" style=dashed color=orange]
// ========== 图例 ==========
subgraph cluster_legend {
label="图例"
style=filled
color=white
rank=sink
legend_core [label="核心概念" fillcolor="#ff6347" shape=ellipse fontcolor=white]
legend_category [label="主要类别" fillcolor="#ffd700" shape=box style="rounded,filled"]
legend_concept [label="具体概念" fillcolor="lightyellow" shape=box]
legend_hierarchy [label="━━ 层次关系" shape=plaintext]
legend_association [label="- - 关联关系" shape=plaintext]
legend_core -> legend_category [style=invis]
legend_category -> legend_concept [style=invis]
legend_concept -> legend_hierarchy [style=invis]
legend_hierarchy -> legend_association [style=invis]
}
// 布局控制
title -> root [style=invis]
}
// 技术架构图模板
// 适用于:系统架构、微服务、技术栈等
digraph TechArchitecture {
// 全局配置
graph [
rankdir=TB
bgcolor="#f5f5f5"
fontname="Arial Unicode MS"
splines=ortho
nodesep=1.2
ranksep=1.5
]
node [
fontname="Arial Unicode MS"
fontsize=10
style=filled
margin=0.4
]
edge [
fontname="Arial Unicode MS"
fontsize=8
]
// 标题
title [label="系统架构图" fontsize=18 shape=plaintext]
// ========== 客户端层 ==========
subgraph cluster_client {
label="客户端层"
style=filled
color="#e3f2fd"
fontsize=12
web [label="Web 浏览器" shape=box fillcolor="#2196f3" fontcolor=white]
mobile [label="移动应用" shape=box fillcolor="#2196f3" fontcolor=white]
desktop [label="桌面应用" shape=box fillcolor="#2196f3" fontcolor=white]
}
// ========== 网关层 ==========
subgraph cluster_gateway {
label="网关层"
style=filled
color="#fff3e0"
fontsize=12
api_gateway [
label="API Gateway\n负载均衡 | 认证 | 限流"
shape=component
fillcolor="#ff9800"
fontcolor=white
]
}
// ========== 应用层 ==========
subgraph cluster_application {
label="应用服务层"
style=filled
color="#e8f5e9"
fontsize=12
service1 [label="用户服务" shape=box fillcolor="#4caf50" fontcolor=white]
service2 [label="订单服务" shape=box fillcolor="#4caf50" fontcolor=white]
service3 [label="支付服务" shape=box fillcolor="#4caf50" fontcolor=white]
service4 [label="通知服务" shape=box fillcolor="#4caf50" fontcolor=white]
}
// ========== 数据层 ==========
subgraph cluster_data {
label="数据存储层"
style=filled
color="#fce4ec"
fontsize=12
mysql [label="MySQL\n关系型数据库" shape=cylinder fillcolor="#e91e63" fontcolor=white]
redis [label="Redis\n缓存" shape=cylinder fillcolor="#e91e63" fontcolor=white]
mongodb [label="MongoDB\n文档数据库" shape=cylinder fillcolor="#e91e63" fontcolor=white]
}
// ========== 基础设施层 ==========
subgraph cluster_infra {
label="基础设施"
style=filled
color="#f3e5f5"
fontsize=12
mq [label="消息队列\nRabbitMQ/Kafka" shape=box fillcolor="#9c27b0" fontcolor=white]
elk [label="日志系统\nELK Stack" shape=box fillcolor="#9c27b0" fontcolor=white]
monitor [label="监控告警\nPrometheus" shape=box fillcolor="#9c27b0" fontcolor=white]
}
// ========== 连接关系 ==========
// 客户端 -> 网关
web -> api_gateway [label="HTTPS"]
mobile -> api_gateway [label="HTTPS"]
desktop -> api_gateway [label="HTTPS"]
// 网关 -> 应用服务
api_gateway -> service1 [label="路由"]
api_gateway -> service2 [label="路由"]
api_gateway -> service3 [label="路由"]
api_gateway -> service4 [label="路由"]
// 应用服务 -> 数据层
service1 -> mysql [label="读写" color="#4caf50"]
service1 -> redis [label="缓存" color="#ff9800"]
service2 -> mysql [label="读写" color="#4caf50"]
service2 -> redis [label="缓存" color="#ff9800"]
service3 -> mongodb [label="存储" color="#4caf50"]
// 应用服务 -> 基础设施
service2 -> mq [label="发布" style=dashed]
service4 -> mq [label="订阅" style=dashed]
{service1, service2, service3, service4} -> elk [label="日志" style=dotted color=gray]
{service1, service2, service3, service4} -> monitor [label="指标" style=dotted color=gray]
// ========== 图例 ==========
subgraph cluster_legend {
label="图例"
style=filled
color=white
fontsize=10
rank=sink
legend_client [label="客户端" fillcolor="#2196f3" fontcolor=white shape=box]
legend_service [label="微服务" fillcolor="#4caf50" fontcolor=white shape=box]
legend_data [label="数据存储" fillcolor="#e91e63" fontcolor=white shape=cylinder]
legend_infra [label="基础设施" fillcolor="#9c27b0" fontcolor=white shape=box]
legend_sync [label="━━ 同步调用" shape=plaintext]
legend_async [label="- - 异步调用" shape=plaintext]
legend_log [label="··· 日志/监控" shape=plaintext]
legend_client -> legend_service [style=invis]
legend_service -> legend_data [style=invis]
legend_data -> legend_infra [style=invis]
legend_infra -> legend_sync [style=invis]
legend_sync -> legend_async [style=invis]
legend_async -> legend_log [style=invis]
}
// 布局控制
title -> web [style=invis]
{rank=same; web; mobile; desktop}
{rank=same; service1; service2; service3; service4}
{rank=same; mysql; redis; mongodb}
{rank=same; mq; elk; monitor}
}
Research to Diagram - 使用指南
从研究到可视化的一站式知识图谱生成工具。
快速开始
1. 安装依赖
# macOS
brew install graphviz
# Ubuntu/Debian
sudo apt-get install graphviz
# 验证安装
dot -V2. 使用 Skill
直接向 Claude Code 描述你的研究需求:
# 示例 1:文学作品人物关系
"深度调查《红楼梦》里人物之间的关系,然后做个结构图 PDF"
# 示例 2:技术架构研究
"研究 Kubernetes 的架构并生成可视化图谱"
# 示例 3:历史事件分析
"分析春秋战国时期各国关系,做成关系图"工作流程
用户输入主题
↓
WebSearch 深度调研
↓
信息提取与整理
↓
结构设计
↓
生成 Graphviz DOT
↓
编译为 PDF
↓
提供下载链接和参考资料模板示例
人物关系图
适用场景:
- 文学作品人物分析
- 历史人物关系
- 家族谱系
- 组织人员结构
参考模板:examples/character_relationships.dot
特点:
- 使用
cluster分组家族/团体 - 不同颜色区分类别
- 红色实线表示婚姻,黑色表示血缘
- 虚线表示其他关系
概念图谱
适用场景:
- 知识体系梳理
- 学科分类
- 概念关系分析
- 思维导图
参考模板:examples/concept_map.dot
特点:
- 树状层次结构
- 核心概念在顶部
- 颜色编码不同类别
- 虚线表示关联关系
技术架构图
适用场景:
- 系统架构设计
- 微服务架构
- 技术栈可视化
- 组件依赖关系
参考模板:examples/tech_architecture.dot
特点:
- 分层架构(客户端/网关/应用/数据)
- 不同形状表示不同组件类型
- 实线=同步调用,虚线=异步
- 包含图例说明
手动生成 PDF
如果你有 .dot 文件,可以使用提供的脚本生成 PDF:
# 使用脚本
bash ~/.claude/skills/research-to-diagram/scripts/generate_pdf.sh input.dot output.pdf
# 或直接使用 dot 命令
dot -Tpdf input.dot -o output.pdf
# 生成其他格式
dot -Tpng input.dot -o output.png # PNG 图片
dot -Tsvg input.dot -o output.svg # SVG 矢量图Graphviz 常用配置
布局方向
graph [rankdir=TB] // 上到下
graph [rankdir=LR] // 左到右
graph [rankdir=BT] // 下到上
graph [rankdir=RL] // 右到左节点形状
node [shape=box] // 矩形
node [shape=ellipse] // 椭圆
node [shape=circle] // 圆形
node [shape=diamond] // 菱形
node [shape=cylinder] // 柱状(数据库)
node [shape=component] // 组件边的样式
edge [style=solid] // 实线
edge [style=dashed] // 虚线
edge [style=dotted] // 点线
edge [style=bold] // 粗线
edge [arrowsize=0.8] // 箭头大小中文支持
graph [fontname="Arial Unicode MS"]
node [fontname="Arial Unicode MS"]
edge [fontname="Arial Unicode MS"]
// 或使用系统字体
graph [fontname="STHeiti"] // macOS 黑体
graph [fontname="SimHei"] // Windows 黑体颜色方案
常用颜色:
#ffd700- 金色(重要)#ff6347- 番茄红(主要)#87ceeb- 天蓝色(次要)#98fb98- 淡绿色(辅助)#ffb6c1- 粉红(特殊)
颜色命名:
red,blue,green,yellow,purple,orangelightgrey,lightblue,lightgreen
高级技巧
1. 强制节点同层
{rank=same; node1; node2; node3}2. 隐藏边(控制布局)
node1 -> node2 [style=invis]3. 合并相同边
graph [concentrate=true]4. 调整间距
graph [
nodesep=1.0 // 节点水平间距
ranksep=1.5 // 层级垂直间距
]5. 跨 cluster 连接
graph [compound=true]
node1 -> node2 [ltail=cluster_a lhead=cluster_b]常见问题
Q: 中文显示为乱码或方框
A: 确保设置了中文字体:
graph [fontname="Arial Unicode MS"]
node [fontname="Arial Unicode MS"]
edge [fontname="Arial Unicode MS"]Q: 图谱太复杂,布局混乱
A: 1. 使用 concentrate=true 合并边 2. 调整 nodesep 和 ranksep 增大间距 3. 分割成多个子图 4. 使用 rank=same 控制布局
Q: 边的标签重叠
A: 1. 减少标签长度 2. 使用 labeldistance 和 labelangle 调整位置 3. 改用 xlabel 代替 label
Q: PDF 文件太大
A: 1. 使用 SVG 格式:dot -Tsvg input.dot -o output.svg 2. 减少节点数量,提高抽象层次 3. 分割成多个图表
Q: 想要水平布局
A: 将 rankdir=TB 改为 rankdir=LR
参考资源
与 structure-to-pdf 的对比
| 特性 | research-to-diagram | structure-to-pdf |
|---|---|---|
| 数据来源 | 自动调研收集 | 用户提供 |
| 适用场景 | 探索性研究 | 快速转换 |
| 调研能力 | ✅ WebSearch | ❌ |
| 知识整理 | ✅ 自动提取 | ❌ |
| 工作量 | 全自动 | 需准备数据 |
| 时间 | 较长(2-5分钟) | 快速(<1分钟) |
| 参考资料 | ✅ 提供来源 | ❌ |
| 适合主题 | 复杂知识体系 | 简单结构数据 |
选择建议:
- 📚 研究型任务 → 使用
research-to-diagram - 🔄 转换型任务 → 使用
structure-to-pdf
示例项目
1. 红楼梦人物关系图
输入:
深度调查《红楼梦》里人物之间的关系,然后做个结构图 PDF输出:
hongloumeng_relations.dot- 源文件hongloumeng_relations.pdf- 152KB PDF- 包含四大家族、金陵十二钗、宝黛钗三角关系
特色:
- 7个 subgraph cluster 分组
- 50+ 人物节点
- 多种关系类型(血缘、婚姻、联姻)
- 完整图例说明
2. Kubernetes 架构图
输入:
研究 Kubernetes 架构并生成可视化图谱可能输出:
- 控制平面组件(API Server, Scheduler, Controller Manager)
- 数据平面组件(Kubelet, Kube-proxy)
- 插件生态(CNI, CSI, CRI)
- 组件间通信关系
3. 三国人物关系
输入:
分析《三国演义》主要人物关系,生成关系图可能输出:
- 魏蜀吴三大阵营
- 君臣关系、兄弟关系、联盟关系
- 重要战役节点
- 人物命运走向
版本历史
- v1.0 (2026-01-02)
- 初始发布
- 基于红楼梦人物关系图项目经验
- 支持 Graphviz/DOT 自动生成
- 集成 WebSearch 深度调研
- 提供三种模板(人物/概念/技术)
贡献
欢迎提交:
- 新的图谱模板
- 最佳实践案例
- Bug 报告
- 功能建议
许可证
MIT License
#!/bin/bash
# Generate PDF from DOT file using Graphviz
set -e
# 显示用法
usage() {
cat << EOF
Usage: $0 <input.dot> [output.pdf]
Generate PDF from Graphviz DOT file.
Arguments:
input.dot Input DOT file path (required)
output.pdf Output PDF file path (optional, defaults to same name as input)
Examples:
$0 diagram.dot
$0 diagram.dot output.pdf
Requirements:
- Graphviz must be installed (brew install graphviz)
EOF
exit 1
}
# 检查参数
if [ $# -lt 1 ]; then
echo "Error: Missing input file"
usage
fi
INPUT_DOT="$1"
OUTPUT_PDF="${2:-${INPUT_DOT%.dot}.pdf}"
# 检查输入文件是否存在
if [ ! -f "$INPUT_DOT" ]; then
echo "Error: Input file '$INPUT_DOT' not found"
exit 1
fi
# 检查 Graphviz 是否安装
if ! command -v dot &> /dev/null; then
echo "Error: Graphviz is not installed"
echo "Install with: brew install graphviz"
exit 1
fi
# 验证 DOT 文件语法
echo "Validating DOT file syntax..."
if ! dot -Tpdf "$INPUT_DOT" -o /dev/null 2>&1; then
echo "Error: Invalid DOT file syntax"
exit 1
fi
# 生成 PDF
echo "Generating PDF: $OUTPUT_PDF"
dot -Tpdf "$INPUT_DOT" -o "$OUTPUT_PDF"
# 检查生成是否成功
if [ -f "$OUTPUT_PDF" ]; then
FILE_SIZE=$(du -h "$OUTPUT_PDF" | cut -f1)
echo "✓ PDF generated successfully: $OUTPUT_PDF ($FILE_SIZE)"
else
echo "✗ Failed to generate PDF"
exit 1
fi
Research to Diagram - 使用示例
如何触发这个 Skill
直接向 Claude Code 描述你的研究需求即可,无需使用特殊命令。
示例 1:文学作品人物关系
输入
深度调查《红楼梦》里人物之间的关系,然后做个结构图 PDFClaude 的工作流程
1. ✅ 使用 TodoWrite 规划任务 2. ✅ 多轮 WebSearch 调研:
- 金陵十二钗
- 贾府宁国府、荣国府
- 四大家族(贾史王薛)
- 主要人物关系
3. ✅ 设计图谱结构:
- 7个 cluster 分组
- 50+ 人物节点
- 血缘/婚姻/联姻关系
4. ✅ 创建 Graphviz DOT 文件 5. ✅ 生成 PDF (152KB) 6. ✅ 提供参考资料来源
输出文件
~/hongloumeng_relations.dot~/hongloumeng_relations.pdf
关键特性
- 四大家族总览
- 宁国府和荣国府家族树
- 金陵十二钗标记(★)
- 宝黛钗三角关系
- 完整图例说明
- 7个参考资料来源
---
示例 2:技术架构研究
输入
研究 Kubernetes 架构并生成可视化图谱预期工作流程
1. WebSearch 调研 K8s 组件和架构 2. 整理信息:
- 控制平面:API Server, Scheduler, Controller Manager, etcd
- 数据平面:Kubelet, Kube-proxy, Container Runtime
- 网络插件:CNI
- 存储插件:CSI
3. 设计分层架构图 4. 生成 PDF
可能的输出结构
控制平面
├── API Server
├── Scheduler
├── Controller Manager
└── etcd
数据平面(每个节点)
├── Kubelet
├── Kube-proxy
└── Container Runtime
附加组件
├── CNI (网络)
├── CSI (存储)
└── CoreDNS---
示例 3:历史事件分析
输入
分析春秋战国时期各国关系,做成关系图预期工作流程
1. WebSearch 调研春秋战国历史 2. 整理主要国家:
- 战国七雄:齐楚燕韩赵魏秦
- 合纵连横关系
- 主要战役和联盟
3. 设计关系网络图 4. 标注时间线和关键事件 5. 生成 PDF
---
示例 4:概念学习
输入
研究机器学习的主要算法分类并生成知识图谱预期输出结构
机器学习
├── 监督学习
│ ├── 分类
│ │ ├── 逻辑回归
│ │ ├── 决策树
│ │ ├── 随机森林
│ │ └── SVM
│ └── 回归
│ ├── 线性回归
│ └── 多项式回归
├── 无监督学习
│ ├── 聚类
│ │ ├── K-means
│ │ └── DBSCAN
│ └── 降维
│ ├── PCA
│ └── t-SNE
└── 强化学习
├── Q-Learning
└── Deep Q-Network---
示例 5:企业研究
输入
研究 FAANG 公司的业务结构并可视化预期工作流程
1. 调研 Facebook(Meta), Apple, Amazon, Netflix, Google 2. 整理各公司主要业务线 3. 分析业务重叠和竞争关系 4. 生成多维度对比图
---
示例 6:生物分类
输入
生成猫科动物的分类关系图谱预期输出结构
猫科 (Felidae)
├── 猫亚科 (Felinae)
│ ├── 猫属
│ │ └── 家猫
│ ├── 猞猁属
│ │ ├── 欧亚猞猁
│ │ └── 加拿大猞猁
│ └── 豹猫属
└── 豹亚科 (Pantherinae)
├── 豹属
│ ├── 狮
│ ├── 虎
│ ├── 豹
│ └── 美洲豹
└── 猎豹属
└── 猎豹---
示例 7:地理关系
输入
分析一带一路沿线国家和地区,生成地理关系图预期特点
- 按地理区域分组
- 标注重要城市和港口
- 显示陆路和海路连接
- 包含经济走廊
---
自定义选项(高级用法)
虽然 Skill 会自动选择最佳配置,但你可以提出特定要求:
指定布局方向
研究公司发展历程并生成时间线图(从左到右布局)→ Claude 会使用 rankdir=LR
指定输出位置
研究量子计算发展史并生成图谱,保存到 ~/Documents/指定详细程度
快速研究 React Hooks 并生成简单图谱→ Claude 会进行较轻量的调研
深度研究 React Hooks 的实现原理并生成详细图谱→ Claude 会进行深入调研
指定图谱类型
研究微服务架构并生成技术架构图(分层布局)研究三国人物关系并生成网络关系图(非层次)---
最佳实践
1. 明确主题范围
❌ 不够具体:
研究中国历史✅ 具体明确:
研究唐朝安史之乱前后的藩镇关系变化2. 说明期望的图谱类型
研究 Docker 技术栈并生成【分层架构图】分析《三体》人物关系并生成【关系网络图】3. 指出关注重点
研究 Python 生态,重点关注【数据科学】相关库4. 提供背景信息(可选)
我在学习 GraphQL,想了解它与 REST API 的关系和区别,
帮我研究并生成对比图谱---
触发关键词
以下任何表述都可能触发这个 Skill:
- "深度调查...关系"
- "研究...并生成图谱"
- "分析...做成图表"
- "生成...知识图谱"
- "画...关系图"(无现成数据时)
- "可视化...结构"(需调研时)
- "调研...并可视化"
---
与其他工具的配合
与 WebSearch 配合
Skill 会自动使用 WebSearch,无需手动指定
与 TodoWrite 配合
自动创建任务追踪,展示工作进度
与 Bash 配合
自动验证 Graphviz 安装和 PDF 生成
---
常见问题
Q: 生成的图谱太复杂怎么办?
A: 可以请求分步生成:
先生成《红楼梦》的主要人物和家族总览图,
然后我们再深入某个家族的详细关系Q: 可以修改生成的图谱吗?
A: 可以!生成的 .dot 文件可以手动编辑:
帮我修改 hongloumeng_relations.dot,
增加贾府与史家的联姻关系细节Q: 能生成其他格式吗?
A: 可以请求:
生成 PNG 图片版本同时生成 PDF 和 SVG 格式Q: 需要多长时间?
A: 通常 2-5 分钟,取决于:
- 主题复杂度
- 调研深度
- 图谱规模
Q: 调研的信息准确吗?
A: Skill 会:
- ✅ 从多个来源交叉验证
- ✅ 提供所有参考资料链接
- ✅ 使用最新的 WebSearch 结果
---
实际案例展示
案例:《红楼梦》人物关系图
用户输入:
深度调查《红楼梦》里人物之间的关系,然后做个结构图 PDF生成特点:
- 📊 7 个主要分组
- 👥 50+ 人物节点
- 💑 多种关系类型
- 📚 7 个权威来源
- 📄 152KB 高质量 PDF
文件位置:
~/hongloumeng_relations.dot~/hongloumeng_relations.pdf
参考资料: 自动包含所有 WebSearch 来源链接
---
开始使用
现在就试试吧!向 Claude Code 提出你的研究主题:
研究 [你感兴趣的主题] 并生成可视化图谱Claude 会自动: 1. 📋 规划研究任务 2. 🔍 深度调研收集资料 3. 📊 整理分析信息 4. 🎨 设计图谱结构 5. 📄 生成高质量 PDF 6. 📚 提供参考来源
享受从研究到可视化的一站式体验!