# Cheat On Audience

> 把短视频评论区变成可交互的知识图谱，并发布成人和 agent 都能读的形态。当用户说「分析我的评论区」「评论区图谱」「大家在关心什么」「评论区都在聊什么」「comment atlas」「把评论做成图谱」「把图谱发出去」，或者手上有一批评论数据想看出结构时使用。产出零依赖单文件 HTML（悬浮速览、点击看评论原文证据）、GitHub 首页可直接渲染的 mermaid 图、以及 agent 可 fetch 的 graph.json 和 digest.md。

- Skill: `xbuilderlab/cheat-on-audience` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add xbuilderlab/cheat-on-audience`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xbuilderlab/cheat-on-audience/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: xbuilderlab (https://skillmd.com/u/xbuilderlab)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/xbuilderlab/cheat-on-audience

---


# cheat-on-audience

把一堆散装评论变成一张有结构、可追溯的知识图谱。

核心主张：**单条评论没有价值，评论之间的关系才有。** 谁在关心什么、什么内容引出了什么讨论、哪些关注点总是同时出现、哪些提问从来没被回答过——这些只有连成网络才看得见。

## 什么时候用

- 用户想知道自己的观众到底在关心/焦虑什么
- 用户有评论数据（任何平台），想找选题缺口
- 用户想做「我分析了 N 条评论」这类元内容

## 六个阶段

### 阶段 1：拿到评论数据

按优先级尝试：

1. **用户已有导出文件** — 直接问路径。支持 JSON / CSV / 纯文本（一行一条）。
2. **iGrowth 插件已采集的数据**（如果用户装了）— 查 `~/.igrowth/opc-assets/runs/*/video-comments.json`，取最新且 `comment_count` 最大的一份。
3. **用户手动复制** — 让用户从创作者后台复制评论粘贴进来。

最低要求：每条评论至少有正文。有点赞数更好（权重信号），有来源视频最好（上下文）。

**不要写爬虫去抓平台数据。** 用官方后台导出、用户已授权的插件，或手动复制。

### 阶段 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：建图

```bash
python3 scripts/build_graph.py
```

读 `data/extracted_*.json` 合成 `data/graph.json`。每条边都挂评论原文作为证据——图谱里任何一个结论都能点回到具体是谁说的哪句话。没有证据的边不要建。

### 阶段 5：渲染

```bash
python3 scripts/render.py
```

产出 `atlas.html`——零依赖单文件，双击就能打开，也能直接发 Artifact 或推 GitHub Pages。

**不要引 CDN。** Artifact 的 CSP 会拦截外部请求，弱网也会白屏。渲染器里的力导向是手写的，200 行，不需要 d3。

### 阶段 6：发布（可选）

```bash
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，但仍是用户生成内容。公开仓库前要明确告知用户这一点，由用户决定。

## 渲染器的三层交互

1. 悬浮 tooltip — 类型、提及次数、最高赞的一条评论
2. 点击抽屉 — 全部关系 + 每条关系下的评论原文、点赞、来源视频、信号标记
3. 筛选 — 按节点类型、按信号（只看提问 / 只看成果 / 只看阴阳怪气）、全文搜索

悬浮只做速览，证据一定要放点击层——手机上没有 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` 字段必须原样复制，一旦改写就失去了证据价值

