원클릭으로
cheat-persona
// 从复盘评论数据派生 / 刷新账号的受众画像,写入 audience.md。这是和 rubric 平行的第二个派生物——rubric 答"怎么打分",persona 答"谁在看"。cheat-seed 选题 / 写稿时读它。**audience.md 含实绩信号,cheat-score-blind 硬禁读**。触发词:"构造受众画像"/"更新 persona"/"我的观众是谁"/"build persona"/"刷新受众画像"/"看看我的受众画像"。
// 从复盘评论数据派生 / 刷新账号的受众画像,写入 audience.md。这是和 rubric 平行的第二个派生物——rubric 答"怎么打分",persona 答"谁在看"。cheat-seed 选题 / 写稿时读它。**audience.md 含实绩信号,cheat-score-blind 硬禁读**。触发词:"构造受众画像"/"更新 persona"/"我的观众是谁"/"build persona"/"刷新受众画像"/"看看我的受众画像"。
| name | cheat-persona |
| description | 从复盘评论数据派生 / 刷新账号的受众画像,写入 audience.md。这是和 rubric 平行的第二个派生物——rubric 答"怎么打分",persona 答"谁在看"。cheat-seed 选题 / 写稿时读它。**audience.md 含实绩信号,cheat-score-blind 硬禁读**。触发词:"构造受众画像"/"更新 persona"/"我的观众是谁"/"build persona"/"刷新受众画像"/"看看我的受众画像"。 |
从 predictions/*.md 复盘段的评论数据,聚类出账号真实受众画像,写入 audience.md。
persona 是和 rubric 平行的第二个派生物,不是 rubric 的一部分:
复盘数据(评论 + 完播 + 转粉)
├──→ rubric 进化(cheat-bump) —— "怎么打分"
└──→ 受众画像(cheat-persona) —— "谁在看"
两者都喂给 cheat-seed,但用途不同
绝不混:persona 不进打分公式。rubric 的 AB 维度(受众广度)可以参考 persona,但那是 cheat-bump 的事,不是这里。
audience.md 从复盘评论派生 = 含已发布作品的实绩信号。因此:
audience.md 在 cheat-score-blind 的 hard refusal list 里,refusal_code blocked_audience[用户:构造受众画像 / 更新 persona]
↓
[Phase 0: 收集数据 — 扫 predictions/*.md 复盘段评论 + benchmark.md]
↓
[Phase 1: 数据量判定 → 派生 Confidence 等级]
↓
[Phase 2: 评论聚类 — 自我认同 / 情绪寄存 / 反驳点 / 语言]
↓
[Phase 3: persona × rubric 交叉检验]
↓
[Phase 4: 写 audience.md(覆盖式重建,header 记 version + last_rebuilt)]
↓
[Phase 5: 控制台报告 + 跟上次画像的 diff]
💡 调用覆盖:
/cheat-persona — seed-from-benchmark(强制用 benchmark seed)/— rebuild(即使数据没变也重建)
| 来源 | 用途 |
|---|---|
predictions/*.md 的 ## 复盘 段 | 主数据源——top 评论(带赞数)。persona 的金矿 |
videos/*/report.md | 完播 / 转粉率——薄信号,推"留得住 vs 留不住" |
benchmark.md | 冷启动 seed——"看对标的人 ≈ 你想要的人" |
rubric_notes.md | Phase 3 交叉检验用——persona 食欲 vs rubric 校准现实 |
audience.md(如已存在) | 上一版画像,用于 Phase 5 diff |
predictions/*.md,对每个文件读 ## 复盘 段(只读复盘段——这是 channel A,本来就看实绩)N_retros、评论总数 N_commentsbenchmark.md(如存在)audience.md(如已存在)→ 留作 Phase 5 diff| 情况 | Confidence | 行为 |
|---|---|---|
N_retros == 0 且无 benchmark | 🔴 无数据 | 不强行造——告诉用户"persona 需要复盘数据。先跑几篇 cheat-retro,或导 benchmark",退出 |
N_retros == 0 但有 benchmark | 🟠 benchmark-seed 未验证 | seed 一份 aspirational persona,全文标"未验证" |
N_retros 1-2 | 🟡 早期信号 | 能产出但特征多落"假设"段 |
N_retros 3-5 | 🟢 数据扎实 | 正常产出 |
N_retros ≥6 | 🔵 稳健 | 正常产出 + 可做更细的食欲分层 |
Confidence 等级写进 audience.md header。
对收集到的所有评论,按四个维度聚类:
聚类纪律:
MIN_COMMENTS_PER_TRAIT(3)条评论证据。不够 → 降到"假设特征"段读 rubric_notes.md 当前 rubric + 校准历史。检查:
诚实要求:两个派生物矛盾时不要强行调和。明确写"persona 说 A,rubric 校准说 B,待下次复盘澄清"——矛盾本身是信号。
覆盖式重建(不是 append)——persona 是活文档,每次 rebuild 重写全文。但:
Persona 版本 +1(v0 → v1 → v2)Last rebuilt 日期 + 数据基础(N 篇复盘 / M 条评论)+ ConfidencevN — 基于 M 篇复盘 / K 条评论,主要变化:...(这是唯一保留的历史;不搞 memo 累积——persona 是活文档不是公式)用 templates/audience.template.md 的结构。
⚠️ 不走版本 memo / 不调跨模型审——persona 不是高风险不可逆动作(写错了重跑一次就好),过度工程没必要。
✅ 受众画像已更新:audience.md(v2,🟢 数据扎实)
数据基础:4 篇复盘 / 87 条评论
核心画像:25-35 岁职场人,来找情绪共鸣不来找信息……
跟 v1 的主要变化:
- 新验证:"深夜刷手机" 场景共鸣强(v1 是假设,本次 17 条评论验证)
- 新反画像:原以为"学生党"是受众,但评论里学生占比 <5% → 移到反画像
- ⚠️ 交叉检验 flag:persona 说受众爱"职场吐槽",但 rubric 校准显示职场类 composite 偏低——下次复盘留意
下一步:
- cheat-seed 选题 / 写稿时会自动参考这份画像
- 再跑 3 篇复盘后建议再 /cheat-persona 刷新
user-asserted(未经数据验证)user-asserted 放"假设特征"段,不放"验证特征"。persona 的价值在于数据 vs 你的幻想之间的 gapcheat-retro 每完成一篇复盘 → flag "已累计 N 篇复盘,可跑 /cheat-persona 刷新画像"cheat-init 创建空 audience.md 骨架;如导了 benchmark → 提示可 /cheat-persona — seed-from-benchmarkcheat-seed Mode A/B/C 读 audience.md 作为"这个 persona 会在乎吗"的镜子cheat-recommend persona-fit 排序;cheat-status persona 新鲜度 nagcheat-score-blind 硬禁读 audience.md(refusal_code blocked_audience)给所有想把"感觉"变成可校准预测的内容创作者。**方法论通用**——打分 → 盲预测 → T+3d 复盘 → 进化 rubric 的循环适用任何能被量化(播放 / 阅读 / 收听 / 点击)的内容。**rubric 是循环的内容,不是循环本身**——当前内置一份观点视频 rubric(参考博主 25+ 视频拟合),其他形态可借这套起步并 bump 调权重。**强烈建议导入对标账号**作为初始信号源(/cheat-learn-from)。触发词:"初始化"/"打分这篇"/"启动预测"/"已发布"/"复盘"/"升级 rubric"/"推荐选题"/"抓热点"/"状态"/"找对标"/"learn from"。**首次使用必须先跑 /cheat-init。**
cheat-on-content 的首次 onboarding 与脚手架创建器。统一流程——所有用户都走相同 5 阶段闭环,唯一区别是"发过视频的人"会在 init 时多一步:抓取已有视频建立历史 context(用于后续 cheat-seed 给更贴合的选题、更准的 baseline)。触发词:"初始化"/"init"/"首次使用"/"我是新用户"/"setup cheat-on-content"。**必须在用户第一次会话执行;其他子 skill 在 .cheat-state.json 不存在时自动路由到此。**
T+N 天数据回收 + 复盘 + 把新观察写入 rubric_notes.md。这是校准循环的反馈环节——不复盘的预测等于占星。触发词:"复盘 [path]"/"retro this"/"T+3d 数据来了"/"抓数据 [path]"/"把这篇复盘了"。
INTERNAL sub-agent for blind 9-dim rubric scoring. **NOT a user-facing skill — do NOT invoke from main conversation.** Called via Task tool by cheat-score / cheat-predict / cheat-bump to get a context-isolated score on a script. Receives ONLY script_path + rubric_notes_path; refuses any other input. Outputs strict JSON: 9 dimensions × {score 0-5, confidence enum, one-line reason}. **Hard refuses to Read** .cheat-state.json, predictions/*, retro 段, or anything that could leak post-publish data. This is channel B in the 3-channel calibration model (A=main, B=blind sub, C=cross-model).
跟用户对话讨论选题——**默认一次一个**,用户主动给主题或经历,AI 围绕用户的输入深挖、提炼角度、写一份 draft。不是 AI 拿三个开放问题追用户,也不是一次给 5 个候选。触发词:"找选题"/"我想做一条 X"/"最近有个想法"/"seed"/"启动种子"。可选 batch 模式:`/cheat-seed --batch 5` 走旧的 brainstorm 5 候选 + 写 5 draft 流程。
登记一条视频已拍摄。**建 video folder + 询问实际拍摄稿是否与 scripts/<id>.md 一致 + buffer +1**。与 cheat-publish 配对:拍了进队列,发了出队列。触发词:"拍了"/"拍了 X"/"shot"/"shot it"/"已拍 X"/"录完了"。