| name | cheat-on-audience |
| description | 把短视频评论区变成可交互的知识图谱,并发布成人和 agent 都能读的形态。当用户说「分析我的评论区」「评论区图谱」「大家在关心什么」「评论区都在聊什么」「comment atlas」「把评论做成图谱」「把图谱发出去」,或者手上有一批评论数据想看出结构时使用。产出零依赖单文件 HTML(悬浮速览、点击看评论原文证据)、GitHub 首页可直接渲染的 mermaid 图、以及 agent 可 fetch 的 graph.json 和 digest.md。 |
cheat-on-audience
把一堆散装评论变成一张有结构、可追溯的知识图谱。
核心主张:单条评论没有价值,评论之间的关系才有。 谁在关心什么、什么内容引出了什么讨论、哪些关注点总是同时出现、哪些提问从来没被回答过——这些只有连成网络才看得见。
什么时候用
- 用户想知道自己的观众到底在关心/焦虑什么
- 用户有评论数据(任何平台),想找选题缺口
- 用户想做「我分析了 N 条评论」这类元内容
六个阶段
阶段 1:拿到评论数据
按优先级尝试:
- 用户已有导出文件 — 直接问路径。支持 JSON / CSV / 纯文本(一行一条)。
- iGrowth 插件已采集的数据(如果用户装了)— 查
~/.igrowth/opc-assets/runs/*/video-comments.json,取最新且 comment_count 最大的一份。
- 用户手动复制 — 让用户从创作者后台复制评论粘贴进来。
最低要求:每条评论至少有正文。有点赞数更好(权重信号),有来源视频最好(上下文)。
不要写爬虫去抓平台数据。 用官方后台导出、用户已授权的插件,或手动复制。
阶段 2:先看数据,再定 schema
这一步不能跳。 先采样 30-50 条评论读一遍,看清这个账号的评论区在聊什么,再决定关注点词表。
一个讲 AI 工具的账号和一个讲留学的账号,评论区的关注点维度完全不同。用通用词表抽出来的图谱是废的。
读完之后,把 references/schema.md 里的词表改成贴合这批数据的版本,再进入抽取。
阶段 3:逐条抽取
按 references/schema.md 对每条评论抽取结构化字段。
评论超过 200 条时,切成每批 ~130 条,用多个 subagent 并行抽取,每个 agent 写自己的 extracted_N.json。
中文评论区必须处理的三件事:
is_sarcasm 阴阳怪气——字面正向实际负面,不处理整张图会歪
is_ask 提问——这是内容缺口信号,最有商业价值的一类
is_win 成果汇报——正反馈,是做案例内容的素材库
阶段 4:建图
python3 scripts/build_graph.py
读 data/extracted_*.json 合成 data/graph.json。每条边都挂评论原文作为证据——图谱里任何一个结论都能点回到具体是谁说的哪句话。没有证据的边不要建。
阶段 5:渲染
python3 scripts/render.py
产出 atlas.html——零依赖单文件,双击就能打开,也能直接发 Artifact 或推 GitHub Pages。
不要引 CDN。 Artifact 的 CSP 会拦截外部请求,弱网也会白屏。渲染器里的力导向是手写的,200 行,不需要 d3。
阶段 6:发布(可选)
python3 scripts/export.py
一次生成四种分发形态:
| 产物 | 给谁看 | 怎么打开 |
|---|
docs/index.html | 人 | GitHub Pages,点链接就能交互 |
| README 里的 mermaid | 人 | GitHub 首页原生渲染,不用点任何链接 |
data/digest.md | agent 和人 | 纯文本摘要,结论在前证据在后 |
data/graph.json | agent | 完整结构化数据,含逐条评论证据 |
llms.txt | agent | 资源清单入口 |
脚本会从 git remote 自动推断仓库地址补全链接;还没推送时用相对路径,推送后重跑即可。
mermaid 片段写在 README 的 <!-- ATLAS:MERMAID:BEGIN/END --> 之间,每次重跑覆盖。生成前会做语法自检——首页渲染失败会显示一大块红色报错,比没有图更糟,自检不过就不改 README。
开启 Pages:仓库 Settings → Pages → Source 选 main 分支的 /docs 目录。
发布前必须确认:graph.json 里含评论原文。虽然不含昵称和 UID,但仍是用户生成内容。公开仓库前要明确告知用户这一点,由用户决定。
渲染器的三层交互
- 悬浮 tooltip — 类型、提及次数、最高赞的一条评论
- 点击抽屉 — 全部关系 + 每条关系下的评论原文、点赞、来源视频、信号标记
- 筛选 — 按节点类型、按信号(只看提问 / 只看成果 / 只看阴阳怪气)、全文搜索
悬浮只做速览,证据一定要放点击层——手机上没有 hover。
读取别人发布的图谱
这个 skill 也能反过来用——读现成的公开图谱,不用自己跑数据:
读一下 https://raw.githubusercontent.com/<owner>/<repo>/main/data/digest.md
要完整证据链就 fetch graph.json。结构:
meta { title, subtitle, stats, stance }
types { concern|persona|video|metaphor|coping: {label, color} }
nodes [ {id, type, mentions} ]
links [ {s, t, rel, w, ev: [{text, like, video, stance, sarcasm, ask, win}]} ]
产出解读
图建完后,主动给用户这几个结论,别只丢一个 HTML:
- 关注点 TOP 榜 — 按提及次数排
- 内容缺口 —
is_ask 密集但你的视频从没正面回应过的关注点,这是被验证过需求的选题
- 共现簇 — 总是一起出现的关注点,说明观众心里它们是一件事
- 金句库 — 高赞 metaphor,直接可以当视频标题或结尾
- 成果案例 —
is_win 的评论,是最好的社会证明素材
常见坑
- 评论数据通常没有单条时间戳(平台后台一般不给),所以时间维度只能用视频发布时间近似,别假装有精确的评论时间轴
- 只出现一次的关注点是噪音,建图时过滤掉
- 玩梗、纯打招呼的评论要保留记录但 concerns 留空,不要硬塞——否则关注点榜单会被垃圾词污染
- 抽取时
text 字段必须原样复制,一旦改写就失去了证据价值