跟用户对话讨论选题——**默认一次一个**,用户主动给主题或经历,AI 围绕用户的输入深挖、提炼角度、写一份 draft。不是 AI 拿三个开放问题追用户,也不是一次给 5 个候选。触发词:"找选题"/"我想做一条 X"/"最近有个想法"/"seed"/"启动种子"。可选 batch 模式:`/cheat-seed --batch 5` 走旧的 brainstorm 5 候选 + 写 5 draft 流程。
60
73%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Critical
Do not install without reviewing
Fix and improve this skill with Tessl
tessl review fix ./skills/cheat-seed/SKILL.mdcheat-seed 的核心是跟用户讨论选题,不是机械地 brainstorm。好内容来自用户的真实经历 + 观察 + 情绪——这些是 AI 不可能凭空 brainstorm 出来的。AI 的角色是听用户讲 → 帮提炼角度 → 写一份 draft,不是 dump 15 候选让用户挑。
默认模式:对话式一次一个。
Batch 模式(--batch N):保留旧的 brainstorm N 候选 + 写 N 份 draft 流程,给"完全没想法 + 想批量初始化"的用户。
Mode A — 用户主动给主题(**最常见**):
用户:"/cheat-seed" + 直接说"我想做一条关于 X 的"
或:"/cheat-seed 我最近开会被领导..."
↓
AI 围绕 X / 这件事**深挖**——什么瞬间触发?最让你 [情绪 / 不爽 / 觉得有意思] 的是哪点?
↓
收敛到一个具体角度 → 提议 → 用户认可 → 写 1 份 draft → 完成
↓
问"下一篇?" 或用户说"今天就这样"
Mode B — 用户给方向但不具体:
用户:"最近想做点关于 [职场 / 婚恋 / AI / ...] 的"
↓
AI:"[范围] 太广。最近你接触到的具体哪件事让你想做这个方向?"
↓
收敛到 Mode A 的具体经历
Mode C — 用户完全没想法(少见):
用户:"我不知道做什么" / "帮我想个题"
↓
AI:"好,进 brainstorm 模式——先抓热点 + 你之前的兴趣方向,给你 1 个建议"
↓
跑 trend-sources 抓热点 + 读 candidates.md / predictions/ 看用户历史
↓
提议 1 个角度(不是 5 个) → 用户认可 → 写 draft
Batch Mode — 用户显式要批量(`/cheat-seed --batch 5`):
按旧版 brainstorm 流程:3 问题 → 15 候选 → 用户挑 → 写 5 draft。
给"今天想一次性把未来 2 周的选题搞定"的用户。关键纠正(与旧版的区别):
content_form 路由数据源,详见 shared-references/data-source-routing.mdstate.typical_duration_seconds:30s→100-200字 / 90s→250-500字 / 240s→600-1000字 / 450s→1100-2000字 / 900s→2200+字humanizer skill 过一遍,去掉 AI 写作 tells(em-dash 滥用 / rule of three / inflated 词汇 / 空泛归因等)。off 时直接出原始 AI draft。只 humanize 正文,不动 header 的"必须改写"警告| 必填 | 来源 |
|---|---|
.cheat-state.json | 读 calibration_samples / typical_duration / cadence |
rubric_notes.md | 读当前 rubric(粗打分用) |
script_patterns.md | 读已有 pattern(写 draft 时按 cheat sheet 选结构) |
predictions/*.md(如有) | 已发历史,brainstorm 时作为 context |
audience.md(如有) | 受众画像——选题 / 写稿时的"谁在看"镜子(由 /cheat-persona 派生) |
.cheat-state.json → 不存在则提示先跑 /cheat-initrubric_notes.md 拿当前公式(粗打分用)script_patterns.md——写 draft 时按 cheat sheet 选结构benchmark.md(如存在)作为 context 来源 B(对标账号):
state.benchmark_status = imported → B 有内容,提取对标账号的样本主题分布、调性、Patternstate.benchmark_status = none / pending → B 为空audience.md(如存在且非空骨架)作为 受众镜子:
brainstorm 时的 context 优先级(Claude 判断——下面是参考默认):
calibration_samples ≥ 10,但 Claude 可以更早——如 N=5 但出现 ≥3 个与 benchmark 明显不一致的强样本)判断依据不是死磕样本数,而是看:
读用户输入,识别:
含具体名词 + 情绪 / 经历词("我昨天开会..." / "我看到 X 让我..." / "我对 Y 觉得...")→ Mode A(深挖;如话题是时事,Phase 2A.5 询问要不要拉外部数据)
含方向词但无具体内容("想做职场" / "AI 方向" / "婚恋")→ Mode B(单问"为什么想做这个"——用户内省窗口,不调任何热点工具)
显式说没想法("不知道做什么" / "帮我想" / "随便给个")→ Mode C(按 data-source-routing.md 调热点工具 + 用户挑 + 回到内省;都不行则走"聊经历"三选项兜底)
显式 --batch N(用户主动批量)→ Batch Mode
纯 /cheat-seed 无附加内容 → 询问入口问题:
你今天想干嘛?
- 有想做的主题 / 经历 → 直接告诉我("我想做一条 X" / "我最近 X...")
- 知道大致方向 → 告诉我("想做职场" / "AI 方向")→ 我会单问你为啥想做
- 完全没想法 → 说"帮我想"→ 我用 [aihot / trendradar] 拉今天的热点给你看
- 批量搞定 → 说 "batch <N>"
(我不会拿一堆开放问题追你——你给一句话我就开始)注意这是唯一的开放式问题——只在用户纯触发 /cheat-seed 时问。如果用户已经在触发词里给了内容("/cheat-seed 我想做..." 或 "找选题 我最近开会..."),直接进 Mode A/B/C 不再问这一句。
核心原则:围绕用户给的内容深挖,不要切到别的话题。
反问类型(按场景挑):
反问纪律:
MAX_DEEP_DIVE_TURNS 轮(默认 4)——超过就主动收敛:"OK 我感觉够了,帮你提议一个角度试试"收敛输出:
我感觉这个角度能做:
[一句话立意:50 字以内]
走法:
- 用 [Pattern X 结构](来自 script_patterns.md)
- 钩子:[具体场景 / 句子]
- 主体:[3 个观察是什么]
- 收尾:[MVP 句方向]
粗打分(v0 等权 7 维):ER=X HP=X QL=X NA=X AB=X SR=X SAT=X → composite ≈ X.X
Confidence: 🔴 极低 (你才校准 0/N 篇)
要不要让我先写一份 draft?(yes / 换角度 / 我自己写)用户回 yes → Phase 4 写 draft。 用户说"换角度" → 回 Phase 2A 深挖更多。 用户说"我自己写" → 把 candidate 加进 candidates.md 标 tier1,结束。
用户给了方向但不具体("想做职场" / "AI 方向" / "婚恋")。这阶段不调任何热点工具——是用户内省的窗口,外部信息会污染。
只问一个问题,单刀直入:
为什么想做这个主题?不要问"a/b/c 三种例子"——那是 dump 选项让用户挑,破坏内省。让用户自己组织语言。
根据用户回答分流:
| 用户答 | 分类 | 行为 |
|---|---|---|
| 含具体经历 / 个人卡点("我自己经常加班" / "我看到 X 让我...") | 真动机 | 转 Mode A 深挖(Phase 2A) |
| 抽象热度归因("这话题最近热" / "别人都在做" / "听说能涨粉") | 空动机 | 反问"那你自己对这个话题最有感觉的角度是啥?"——逼出个人 stake;继续空 → 转 Mode C |
| "我也不知道" / "朋友说赚钱" / 模糊推搡 | 真没想法 | 直接转 Mode C |
反问纪律:最多 2 轮。第 2 轮还问不出真动机 → 直接转 Mode C,不要无限挖。
设计意图:Mode B 是"过滤器",不是"工厂"。用户来这里要么暴露真实动机(→ 进 Mode A)要么暴露自己其实没想法(→ 进 Mode C)。两条都比硬要在 Mode B 里产出选题更好。
用户完全没想法(直接显式说 / 从 Mode B 转过来)。这是唯一默认调热点工具的入口。
按 shared-references/data-source-routing.md 的路由规则:
拉外部素材(按 content_form 选 trend source):
tutorial-builder / AI 类 → 调 aihot skillopinion-video / long-essay / podcast / other → 调 trendradar-mcp(如启用)mixed → 两个都调聊经历兜底(用户拒绝看外部素材 / 外部素材都不感兴趣):
外部素材你都没感觉,那回到你自己。三个开口,挑一个开始讲:
a) 你最近真实接触到的某件具体事?("上周我看到我同事 X...")
b) 你最近读到 / 看到的某条让你想吐槽的内容?("知乎上有个回答...")
c) 你长期琢磨的某个 unsolved 困惑?("我一直没想明白为啥 X...")
随便挑一个开始讲。拉到外部素材后,用 rubric 粗筛 + 按 content_form 过滤,留 5 条最契合的:
今天这 5 个跟你形态契合:
1. [标题 A](来源: trendradar / 微博热搜 / hot_score: 8.5)
2. [标题 B](来源: aihot / 模型类 / 精选)
3. ...
你哪个最有感觉?没感觉就回 '都没',我换方向问。用户挑了一条 → 回到内省:
OK [标题 X]。你为啥对这条最有感觉?
是 [angle1] 还是 [angle2] 还是别的?→ 用户答 → 转 Mode A 深挖。
用户回 "都没" → 转回 Mode C 第 2 步的"聊经历兜底"。
关键:热点不是"塞 5 候选让用户挑",是"给材料 + 强制问用户的个人 stake"——AI 不替用户决定哪条最值得做。
Mode A 默认深挖用户经历。但如果用户讲的本身是时事话题(产品名 + 时间词 / 人名 + 事件词),按 data-source-routing.md 的"时事判定"规则,询问用户要不要拉外部数据作参考:
💡 [话题] 是时事——我可以拉一下今天的舆论风向(各平台情绪 + 主要 angles)作参考。
要看吗?回 '看' 我调;回 '不用' 我直接跟你深挖你的角度。用户回 "看" → 调对应 trend source → 把数据 inline 到深挖 context; 用户回 "不用" → 标准 Mode A 深挖,不动外部数据。
永远不主动调——用户的 angle 优先于外部数据,避免外部信息带偏用户视角。
--batch N)保留旧 brainstorm 流程:
详见 commit history(旧 cheat-seed 的 Phase 1-3)。这是 escape hatch,不是默认。
不管 Mode A/B/C 哪条路径,确认角度后:
sha256("seed-" + 立意 + 触发时间)[:12]candidates.md(按 candidate-schema.md 格式)tier=tier1 + read_status=deep_read(已经讨论过,不是 skim)WITH_DRAFT=yes → 顺次写到 scripts/<YYYY-MM-DD>_<id>_<short-title>.md:
写 draft 前必读 script_patterns.md —— 按"结构选型 cheat sheet"对应用户的 topic 选合适结构。如果文件还在抽象骨架阶段(用户没填几个 pattern),就用 starter rubric 对应的通用框架。
字数:按 DRAFT_LENGTH 派生(基于 typical_duration_seconds)。
模型的训练先验会把"视频脚本"默认写成提词器/字幕的短行格式。这是错的——cheat-seed 的 draft 是给用户改写的散文稿,不是拍摄字幕。字幕是剪映拍后自动断的,不是写作时的形态。
生成正文时,眼睛盯住下面这个对照:
❌ 字幕格式(不要这样写):
你有没有发现
所有审稿人都在说一样的话
你的研究太老套了
但你仔细看
他们引用的全是 5 年前的反应
✅ 段落版(必须这样写):
你有没有发现,所有审稿人都在说一样的话——你的研究太老套了。但你仔细看,他们引用的全是 5 年前的反应。AI 不是新东西,新的是这次大家集体觉醒了。规则:
# [立意标题]
> ⚠️ **Draft by Claude — 你必须改写后再拍**
>
> 这是脚手架,不是成品。你的语气 / 节奏 / 个人经历无法 AI 生成。
> 改写流程:
> 1. **直接在本文件改写**(同 path:scripts/<...>.md)
> - 加你的语气、个人经历、真实金句
> - 砍铺垫、砍模型缩写、砍学术包装
> 2. 改完后跑 `/cheat-predict scripts/<本文件>.md`
> 3. 拍完跑 `/cheat-shoot scripts/<本文件>.md`
**Article ID**: <12 位 hash>
**调性**: [基于讨论得出的,不是清单 Q]
**目标时长**: <state.typical_duration_seconds 转换> 分钟
**目标字数**: <按时长派生>
**结构选型**: [按 script_patterns.md 的 cheat sheet 显式标,如 "metaphor 优先" / "数据反转开场"]
**用到的 patterns**: [编号 + 简短说明]
**讨论种子**: [一句话回顾 deep dive 出来的核心]
---
[draft 正文 —— **段落版**,3-6 段,每段 100-300 字,不是单句碎行]WITH_DRAFT=no(用户说"我自己写")→ 跳过 Phase 4 + Phase 4.5。
draft 写完落盘后、在展示给用户前跑两步自检。顺序固定:先 4.5a 修版式,再 4.5b 去 AI 味——humanizer 处理散文,喂它字幕格式的碎行会乱。
为什么安全(不污染校准):cheat-seed 的 draft 不是被预测/发布的东西——用户改写后、cheat-predict 打分的是用户最终稿。这两步只是给用户更干净的起点。
Phase 4 的散文指令 + ❌/✅ 对照已经在生成时压先验,但生成仍可能跑偏。这一步是确定性兜底:
# 只看正文段(--- 分隔线之后)
body=$(awk '/^---$/{f=1;next} f' scripts/<id>.md)
line_count=$(printf '%s\n' "$body" | grep -c .) # 非空行数
char_count=$(printf '%s' "$body" | wc -m | tr -d ' ')
avg_chars_per_line=$(( char_count / (line_count > 0 ? line_count : 1) ))判定:avg_chars_per_line < 15 且 line_count >= 8 → 判定为字幕格式 → 自动重排:
不命中 → 跳过,正文已经是段落版。
HUMANIZE_DRAFT=on(默认)—— 用 humanizer skill 过一遍。Claude 自己写的初稿天然带 AI tells(em-dash 滥用 / rule of three / "inflated" 词汇 / 空泛归因 / -ing 浅层分析),这一步把它们清掉。
步骤:
humanizer skill 是否可用(~/.claude/skills/humanizer/ 存在):
git clone https://github.com/blader/humanizer 到 ~/.claude/skills/ 可启用自动去 AI 味)"humanizer,只传 draft 正文(--- 分隔线之后、4.5a 已重排好的段落版),绝不传 header:
⚠️ Draft by Claude — 你必须改写后再拍 警告是有意的脚手架标记,不是要 humanize 的散文videos/*/script.md)或填过 script_patterns.md,把最近 1-2 份作为 humanizer 的 voice 参考样本一起传——让它往"这个用户的声音"靠,而不是"通用人声"em-dash 滥用 ×3 / rule of three ×2 / inflated 词汇: "深刻" "本质上"),Phase 5 输出里展示纪律:
结构选型 / 用到的 pattern → 以 pattern 为准,那句回滚(pattern 是和用户讨论定的,humanizer 不该推翻)✅ Draft 写完:scripts/2026-05-04_<id>_<short>.md
📐 版式自检:通过(段落版) ← 或"检测到字幕格式,已重排为段落版"
🧹 humanizer 过了一遍:修了 em-dash 滥用 ×3 / rule of three ×2 / inflated 词汇 2 处
(draft 现在不那么"机器味"了——但这仍是脚手架,不是你的声音)
接下来你可以:
- 改写这份 draft(直接在原文件改)—— 加你的语气、经历、真实金句
- 改完跑 "打分这篇 scripts/<...>.md" 看 7 维评分
- 决定要拍 → "启动预测 scripts/<...>.md"
下一篇你想做什么?
(直接告诉我具体经历 / topic,或者说"今天就这样"结束)humanizer 那行只在
HUMANIZE_DRAFT=on且 skill 可用时出现。未装时换成一行提示如何启用。
用户说"今天就这样" → 结束 cheat-seed。 用户给新 topic → 回 Phase 1 重新分流。
/cheat-seed 时问一次入口问题,其他时候等用户给输入再深挖avg_chars_per_line < 15 且行数 ≥ 8 做确定性兜底,命中就重排。字幕是剪映拍后自动断的,不是写作时的形态--batch 5unmodified_ai_draft: true)/cheat-init Phase 5 末尾在 pool_status=none + calibration_samples=0 时主动询问"现在跑 /cheat-seed?"/cheat-recommend 在 candidates 空时引导文案中提及 /cheat-seed/cheat-status 在 pool_status=none + 距 init >24h 时提示"还没拍——跑 /cheat-seed?"humanizer skill(MIT,外部项目)。装在 ~/.claude/skills/humanizer/ 时 Phase 4.5 自动启用;未装则优雅跳过。不打包进 cheat-on-content——用户自己 clone/cheat-trends 区别:cheat-seed 是讨论 + 写 draft(重 conversation);cheat-trends 是多 adapter 抓 + 粗打分(重 fetch)。两者目的不同,不互相替代。86823e1
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.