WeChat Account Topic and Title Writer
BigPengSays/bigpeng-hot-gzh
Produces topic directions and candidate headlines for WeChat official account articles using seven title formulas, without writing the article itself.
Onboards a new user to the cheat-on-content workflow with a short question flow, creating the project scaffolding and optionally importing past video history.
SKILL.md written in Chinese; this summary is our English description.
$ npx skills add XBuilderLAB/cheat-on-content --skill cheat-init -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install XBuilderLAB/cheat-on-content cheat-init --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/cheat-init .claude/skills/cheat-init && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "cheat-init" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-init into .claude/skills/cheat-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-init", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-initType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add XBuilderLAB/cheat-on-content --skill cheat-init -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install XBuilderLAB/cheat-on-content cheat-init --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/cheat-init .agents/skills/cheat-init && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "cheat-init" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-init into .agents/skills/cheat-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-init", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add XBuilderLAB/cheat-on-content --skill cheat-init -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install XBuilderLAB/cheat-on-content cheat-init --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/cheat-init .cursor/skills/cheat-init && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "cheat-init" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-init into .cursor/skills/cheat-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-init", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/XBuilderLAB/cheat-on-content.git --path skills/cheat-init--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add XBuilderLAB/cheat-on-content --skill cheat-init -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install XBuilderLAB/cheat-on-content cheat-init --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/cheat-init .gemini/skills/cheat-init && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "cheat-init" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-init into .gemini/skills/cheat-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-init", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install XBuilderLAB/cheat-on-content cheat-initInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add XBuilderLAB/cheat-on-content --skill cheat-init -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/cheat-init .github/skills/cheat-init && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "cheat-init" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-init into .github/skills/cheat-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-init", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add XBuilderLAB/cheat-on-content --skill cheat-init -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install XBuilderLAB/cheat-on-content cheat-init --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/cheat-init .opencode/skills/cheat-init && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "cheat-init" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-init into .opencode/skills/cheat-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-init", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
cheat-initOnboards a new user to the cheat-on-content workflow with a short question flow, creating the project scaffolding and optionally importing past video history.
Written in Chinese, this is the first-run skill of the cheat-on-content workflow, meant to run in a user's first session; other sub-skills route to it when the `.cheat-state.json` file does not exist. It checks the working folder for existing state files and asks before overwriting a configuration, and for a half-initialized folder it asks whether to infer state from the existing files or reset.
It then explains what to expect and asks six questions one at a time, including the content form (opinion video, long essay, short text, podcast, tutorial or other), typical video length, publishing frequency and whether the channel has published before. People with history get an extra step that imports past videos, for example from Douyin through a Playwright login adapter, so later topic suggestions and baselines fit better; newcomers get five candidate topics and drafts instead. The aim is under about five minutes for new users or ten with a history import, and installing hooks is asked about rather than assumed.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 2d8211e. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(*)ReadWriteEditGlobWebFetchSkillFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitbashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Cheat-on-Content Setup loads about 4.3k tokens when it runs. Until then it costs about 68 tokens; SKILL.md has 1,124 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash(*), Read, Write, Edit, Glob, WebFetch, SkillAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from XBuilderLAB/cheat-on-content at commit 2d8211e, republished under its MIT licence (© XBuilderLAB). 1,124 words, ~4,275 tokens.
.claude/skills/cheat-init/SKILL.md (or your agent's skills folder).让用户从零到能跑第一篇预测,全程 ≤ 5 分钟(没发过历史的)或 ≤ 10 分钟(已发过、要 import 历史的)。
[用户首次说"初始化"]
↓
[Phase 0: 检测当前状态]
↓
[Phase 1: 首屏文案 — 适用性 + 期望管理]
↓
[Phase 2: 6 个问题(Q1-Q5 都问;Q2 决定是否走 user-history import)]
↓
[Phase 2.5: 对标账号 — 强烈建议(cold-start 必须问,已发用户可选)]
↓
[Phase 3: 创建脚手架(含 scripts/ + videos/ + samples/ 空目录 + 模板文件含 benchmark.md)]
↓
[Phase 3.5: user-history import 流程(仅 Q2=有发过历史 + 用户同意)]
↓
[Phase 4: 测试 hook 是否生效]
↓
[Phase 5: 给"下一步该说什么"清单]auto 直接装;skip 不装无。所有信息从 6 个对话问题里收集。
.cheat-state.json:rubric_notes.md / predictions/ 等核心文件——存在但 state file 不存在 → 是"半初始化"状态,提示用户并询问"要从现有文件推断状态还是重置?"向用户输出(一字不漏,不要软化):
🎯 Cheat on Content / 网红外挂 — 初始化
你的下一条内容已经在改写 3 个月后的你。
规律是客观存在的,区别是你**看见**还是**没看见**。
这套让你看见。
接下来 5-10 分钟我会问你 5-6 个问题搞清楚你做什么、有什么、怎么用。
两件事先说在前面:
1. **早期预测会不准**——前 5 篇精度大概 ±50%,这是数学事实。
工具用 🔴🟠🟡🟢🔵 标 confidence 等级,不藏数字——
你自己判断这次能不能信。
2. **强烈建议导对标账号**——5-10 条对标视频,工具立刻有 anchor。
不然第一批预测基本是占星。后面 Q5 会再问一次。
准备好开始吗?如果用户答"继续"或类似肯定回应 → Phase 2。
不再因为 content_form 拒绝继续——任何形态都允许,只是 rubric_form_mismatch 字段标真,cheat-status 后续会持续提示用户"你的形态需要 bump 调权重"。
Q1: 内容形态
"你的内容更接近哪一种? a) 观点视频(评论 / 时评 / 论说 / 议题讨论 / 个人观点)— 直接匹配内置 rubric b) 长文 essay(公众号 / Substack / Medium)— 可借观点视频 rubric 起步,bump 时调权重 c) 短文 / thread(X / 微博 / 即刻)— 同上 d) 播客 / 视频长内容(YouTube 长片 / 播客)— 同上 e) 教程 / 工具教学 / Builder(教别人怎么用 X 工具 / 怎么做 Y 项目)— 同上 f) 其他(游戏 / 美食 / 妆教 / 新闻 / 剧情)— 工作流通用,但 rubric 维度需要调 (ER / SR / HP 这套对你形态可能不太预测,需要自己拆出适合的维度) g) 混合"
记录到 content_form + rubric_form_mismatch。
Q1 → content_form enum 映射(必须存 enum 值,不是字母):
| 用户答 | content_form 写入值 |
|---|---|
| a | "opinion-video" |
| b | "long-essay" |
| c | "short-text" |
| d | "podcast" |
| e | "tutorial-builder" |
| f | "other" |
| g | "mixed" |
rubric_form_mismatch 派生:
falsetrue,cheat-status 持续提示"你的形态可能需要 bump 调权重"Q1.5: 典型时长(仅 Q1=a/d/f 时问)
"你的视频典型时长? a) 30秒-1分钟 b) 1-3分钟 c) 3-5分钟(推荐起步) d) 5-10分钟 e) 10分钟以上"
记录到 typical_duration_seconds(30 / 90 / 240 / 450 / 900)。
Q1.6: 发布频率
"你打算多久发一篇? a) 日更 b) 隔日 c) 每周 d) 灵活 / 不固定(关闭 buffer 监控)"
记录到 target_publish_cadence_days(1 / 2 / 7 / null)。
Q2: 你这个频道发过视频吗?
"a) 没发过 — 我会帮你从兴趣 + 热点 brainstorm 5 个候选 + 写 5 份初稿 b) 发过 — 不管 1 条还是 100 条,我会帮你抓历史让后续 brainstorm 更贴合你做过什么"
如选 a → state 写 calibration_samples: 0,Phase 3.5 跳过,直接进入 Phase 4。
如选 b → 进入 Q2.1。
Q2.1: 平台 + 抓取计划(仅 Q2=b)
"你内容主要在哪个平台? a) 抖音 — 装 douyin-session adapter(Playwright + 扫码登录抖音创作者中心) b) 小红书 — 装 xhs-explore adapter(Playwright + 扫码登录小红书创作者中心) c) YouTube — 装 youtube-data-api adapter(需 API key) d) B 站 — bilibili-stat adapter e) LinkedIn — 装 linkedin-session adapter(Playwright + 登录 LinkedIn,抓单帖分析) f) 微信视频号 — 装 wechat-channels adapter(Playwright + 扫码登录视频号助手,仅抓自己账号后台数据) g) 其他 / 多平台 — 走 manual paste 模式"
如选 a/b/c/d/e/f → 询问 Q2.2;如选 g → 跳到 Q2.3 manual。
Q2.2: adapter 安装时机(仅 Q2.1=a/b/c/d/e/f)
"现在装 adapter 自动抓取,还是先手动告诉我?
- 现在装 — 引导你装 Playwright + 扫码 → 抓回最近 N 条数据
- 等下再装 — 先 manual 模式,state 标 'pending_adapter_setup', cheat-status 持续提示装"
如选"现在装"→ 走 adapter install 引导(详见各 adapter README)→ 验证抓取可用 → Q2.3。 如选"等下"→ 跳到 Q2.3 manual。
Q2.3: 抓取范围 / 历史规模
如 adapter 已装并验证可用:
"我可以抓你最近多少条作为基础? (建议 10-25 条;样本越多 baseline 越准。最多到你账号实际数量)" → 用户给数字 N,Phase 3.5 抓取 N 条
如 manual 模式:
"你大概发过多少条?给个范围就行(比如 '5-10 条' / '20+ 条'), 这只用来标 calibration_samples 估值,不用准确。" → 用户给一个估值,Phase 3.5 跳过抓取,calibration_samples 写估值
Q3: 数据回收方式
"T+3 天复盘怎么拿数据?
a) 手动粘 — 候补方案。你必须粘 top 20+ 评论(带赞数),不是只粘播放数。 评论才是真信号——'她不一样'这种模因爆发只能从评论看出, 播放数永远告诉不了你什么内容真的击中了观众。 b) [推荐默认] adapter 自动抓 — 评论 + 数据全要。 如果你现在没装 adapter,没关系,state 标 'pending_adapter_setup', 第一次 publish 之前装上就行(cheat-status 会持续提醒装)。 装的指引在 adapters/perf-data/
<platform>/README.md。"
Q3 → data_collection enum 映射:
| 用户答 | data_collection 写入值 |
|---|---|
| a | "manual" |
| b(默认) | "adapter" |
默认推荐 b——除非用户明确说 "a 我就要手动"。
Q4: 候选选题
"你现在有候选选题列表吗?(如有外部 markdown / Notion 维护的) a) 没有(默认)— 一会儿我帮你 brainstorm,或日常用 /cheat-trends 抓 b) 有,markdown 列表 c) 有,Notion / 其他"
Q4 → pool_status enum 映射:
| 用户答 | pool_status 写入值 |
|---|---|
| a(默认) | "none" |
| b | "markdown" |
| c | "notion" |
Q5: 装几个 hook(默认装,不需要你决定)
"Q5:我顺便装几个 hook,回 'yes' 或 'enter' 就装:
预测锁 — 我们一起做完预测后,文件被锁。你或我都不能改预测段。 复盘只能往同一文件下半段追加,不污染上半段判断。 (没这个锁,事后看到数据想"修一下当时的预测"几乎是必然的——你或我都会犯)
SessionStart 自动报告 — 每次开新会话顶部显示 buffer / 待复盘 / 候选 top
静默使用日志 — 异步记录使用频率,不阻塞,给将来诊断用
三个一起装。不装也可以(回 'no')但你失去预测锁,校准价值会下降。
回 yes / no。"
Q5 → hooks_installed 映射:
| 用户答 | hooks_installed 写入值 |
|---|---|
| yes / enter / 默认 | true(bool,不是字符串 "yes") |
| no | false |
默认 yes——除非用户明确说 no。
工具早期最重要的信号源是对标账号——你 init 完没数据,rubric 等权 v0 等于占星。 但如果你能找一个你想做成那样的账号,导入 5-10 条它的高 / 中 / 低样本,工具就有了 anchor。
询问:
🎯 对标账号
你能找一个对标账号吗?至少 3 条该账号的视频。
- 你**完全没发过历史**(Q2=a)→ **强烈建议**——rubric 没 anchor 全靠对标。
不找的话用通用 v0 等权 rubric,前 5 篇精度更差更久
- 你**已发历史**(Q2=b)→ **可选**——你也可以只用自己历史 calibrate;
但建议至少导 1 个对标做 sanity check(看你账号是否真的偏离对标方向)
a) 现在找 → 立刻进入 /cheat-learn-from(5-15 分钟,看你材料准备程度)
b) 等下找 → state 标 `benchmark_status: pending`,cheat-status 持续提醒
c) 不找 → state 标 `benchmark_status: none`,用通用 v0 起步
回 a / b / c。行为:
benchmark_status: pending + benchmark_name: nullbenchmark_status: none记录到 benchmark_status / benchmark_name(如 a 选则在 cheat-learn-from 里写入)。
按顺序创建并解释每一项的作用:
.gitignore(安全 — 必须第一步创建)
"先创建 .gitignore,把账号凭证挡在版本控制外——这是第一件事。
.auth/ / .auth-xhs/ / .auth-linkedin/ / .auth-wechat-channels/ 存的是各平台登录态(等同账号密码),
.cheat-secrets.json 存 API key / cookie——一旦被 commit 或云同步就等于泄露账号。
注意:predictions/ videos/ scripts/ 这些**不**忽略——原则 #1/#3 依赖
git history 作为预测的不可变档案,必须入库。"cheat-on-content/templates/gitignore.template → <user-repo>/.gitignore<user-repo>/.gitignore 已存在 → 不覆盖;逐行检查并追加缺失行,至少确保
.auth/、.auth-xhs/、.auth-linkedin/、.auth-wechat-channels/、.cheat-secrets.json 五行存在git init 的那一刻立即生效git init 过且可能误加过 .auth/,让用户跑
git rm -r --cached .auth .auth-xhs .auth-linkedin .auth-wechat-channels .cheat-secrets.json 把已暂存的凭证移出.cheat-state.json
"正在创建 .cheat-state.json — 各子 skill 共享上下文的地方。
这次 init 收集的所有答案都会写在这里。"写入(所有 <...> 占位必须查上面 Q 的映射表换成具体 enum 值,绝不直接存字母):
{
"schema_version": "1.4",
"skill_version": "1.0.0",
"rubric_version": "v0",
"content_form": "<查 Q1 映射表,写 enum 字符串如 \"opinion-video\">",
"typical_duration_seconds": <Q1.5 派生:30/90/240/450/900>,
"target_publish_cadence_days": <Q1.6 派生:1/2/7/null>,
"rubric_form_mismatch": <Q1=a→false;其他→true>,
"benchmark_status": "<Phase 2.5 派生:a→\"imported\"/b→\"pending\"/c→\"none\">",
"benchmark_name": <imported 则字符串名,否则 null>,
"benchmark_sample_count": <imported 则数字,否则 0>,
"baseline_plays": null,
"calibration_samples": <Q2=a→0;Q2=b→Phase 3.5 import 回填或 Q2.3 估值>,
"data_collection": "<查 Q3 映射表,写 \"manual\" 或 \"adapter\">",
"pool_status": "<查 Q4 映射表,写 \"none\"/\"markdown\"/\"notion\">",
"data_layer": "markdown",
"hooks_installed": <查 Q5 映射表,写 bool true/false>,
"enabled_trend_sources": ["manual-paste"],
"enabled_perf_adapters": <Q2.1=a→[\"douyin-session\"];b→[\"xhs-explore\"];c→[\"youtube-data-api\"];d→[\"bilibili-stat\"];e→[\"linkedin-session\"];f→[\"wechat-channels\"];其他→[]>,
"last_bump_at": null,
"last_bump_self_audited": false,
"last_published_at": null,
"last_published_file": null,
"last_retro_at": null,
"last_trends_run_at": null,
"last_trends_added_count": 0,
"last_prediction_self_scored": false,
"last_self_scored_at": null,
"consecutive_directional_errors": [],
"pending_retros": [],
"shoots": [],
"in_progress_session": null,
"initialized_at": "<本地 ISO 8601 含时区,如 \"2026-05-05T20:11:13+08:00\",**不要用 UTC 的 Z 后缀**>"
}rubric_notes.md
"正在创建 rubric_notes.md — 你的评分维度的真实来源。
用的是 v0 占位 rubric——等权 7 维(每个维度同等重要)。
为什么叫 v0:v0 是没校准前的占位。你的账号自己的真权重要从你
的数据反推,不是预设。跑完 5 篇有数据的内容后,会自动提议
升级到「校准 v1」(你的第一个真正校准过的 rubric)。
⚠️ rubric_notes.md 是 blind sub-agent (channel B) 的白名单文件——
只能含通用语言(公式 / 维度定义 / bucket 边界),不能含真实视频名 / 实绩。
每次 bump 升级时的 Memo(含证据数据 + 派生证据)写到 rubric-memo.md(下一步创建)。"cheat-on-content/starter-rubrics/<form>-zero.md(cold-start)或 <form>.md(已有数据时仍可参考)2.5. rubric-memo.md(新——配合 cheat-score-blind 隔离协议)
"正在创建 rubric-memo.md — bump 升级 Memo 累积档案。
这是 cheat-bump Phase 5 写入 Memo 全文(含真实视频名 + 实绩 + 派生证据)的位置。
为什么单独一个文件:blind sub-agent 的白名单是 rubric_notes.md,
历史上 bump Memo 写进 rubric_notes.md 会让 blind sub-agent 通过白名单
拿到本该看不到的实绩数据——本文件是隔离修复,sub-agent 硬禁读本文件。
现在是空的,等第一次 cheat-bump 升级后 append 第一段 Memo。"cheat-on-content/templates/rubric-memo.template.md → <user-repo>/rubric-memo.mdscript_patterns.md
"正在创建 script_patterns.md — 你的写作 pattern 沉淀(与 rubric 解耦)。
rubric_notes.md 教 Claude 怎么打分;
script_patterns.md 教 Claude 怎么写。"cheat-on-content/templates/script_patterns.template.md四个目录:scripts/ + predictions/ + videos/ + samples/(都加 .gitkeep)
"正在创建四个目录:
scripts/ — 拍前的草稿(cheat-seed 写或你写)
predictions/ — immutable 预测日志(hook 保护)
videos/ — 拍后的工作目录(cheat-shoot 创建子目录)
samples/ — 对标账号视频 / 转录(cheat-learn-from 创建子目录)
前三处用同一组 <date>_<id>_<short> 命名相互关联。
samples/ 按对标账号名分组:samples/<账号名>/<video-id>/。"4.5. benchmark.md(仅 Phase 2.5 选 a/b 时)
"正在复制 benchmark.md 占位模板(实际内容由 cheat-learn-from 填)——
这是你的对标账号的中央 reference。
前期工具的 rubric / pattern / 选题方向感大量从这里推;
后期 N≥10 后影响淡出,但保留作 sanity check。"cheat-on-content/templates/benchmark.template.md → <user-repo>/benchmark.mdbenchmark_status: none4.7. audience.md
"正在创建 audience.md — 你账号的受众画像('谁在看')。
现在是空骨架。它和 rubric_notes.md 平行——rubric 教 Claude 怎么打分,
audience 告诉 Claude 你的观众是谁。跑够几篇复盘后跑 /cheat-persona,
它会从评论数据聚类出真实画像,cheat-seed 选题写稿时就有了一面镜子。
注意:audience.md 由评论派生 → 含实绩信号 → blind 打分 sub-agent 硬禁读它。"cheat-on-content/templates/audience.template.md → <user-repo>/audience.md/cheat-persona — seed-from-benchmark 先 seed 一份未验证画像"WORKFLOW.md + STATUS.md
如果 Q5=是 → 安装 hooks
.claude/settings.json(如不存在则创建空 {})hooks/prediction-immutability.json 的 hooks.PreToolUsehooks/session-start.json 的 hooks.SessionStarthooks/meta-logging.json 的 hooks(如同时启用)prediction-immutability.sh + session-start.sh + log-event.sh 到 .cheat-hooks/,chmod +x${CLAUDE_PROJECT_DIR}/.cheat-hooks/(Pool 选项 c—Notion) 仅记录到 state file 的 pool_status: notion,后续 cheat-trends 调用时再处理
如 Q2.2=现在装 → 走 adapter install + login(详见 adapters/perf-data/<platform>/README.md)。
抓取成功后,对每条已发视频:
videos/<date>_<id>_<short>/<date> = 视频实际发布日<id> = 12 位 hash,对 (title + 平台 ID) 做 sha256<short> = 标题前 3-8 字videos/<id>/script.mdscript_lost(仍建 video folder,只是 script.md 缺失)predictions/<date>_<id>_<short>.md**Reconstructed retrospective — NOT a blind prediction**import 完成后:
baseline_plays = 抓回视频的播放中位数 → 写入 state file跑一次假的 Edit 拦截测试:
predictions/_test_hook.md,含 ## 预测\n[test]\n## 复盘\n## 预测 段bash .cheat-hooks/session-start.sh → 应输出报告(即使是空的也行)如果钩子未生效 → 不要假装成功,明确告诉用户:"钩子安装失败,可能是 .claude/settings.json 配置没生效。建议手动检查或重启 Claude Code。"
如果用户在 Phase 2.5 选了 a(现在导对标账号)→ 自动触发 /cheat-learn-from:
✅ 脚手架 + hooks 装完。
下面立刻进入 /cheat-learn-from 帮你导入对标账号——
你 init 时选了"现在找",不让你又开一个会话才跑。
[invoke /cheat-learn-from]cheat-learn-from 完成后回到 init 的 Phase 5。
如 Phase 2.5 选 b/c → 跳过 Phase 4.5,直接 Phase 5。
✅ 初始化完成(rubric: v0,calibration_samples: <N>,confidence: <emoji 等级>)
下次你可以直接说这些:
📝 写完一篇稿子 → "打分这篇 scripts/<...>.md"
🎯 准备发布前 → "启动预测 scripts/<...>.md"
🎬 拍完了 → "拍了 scripts/<...>.md" → 建 video folder + buffer +1
🚀 发布后 → "已发布 https://..."
📊 T+3 天 → "复盘 videos/<...>/"
📈 任何时候 → "状态"(看完整看板)
<如果 Q4=没有候选选题:>
🌱 现在跑 /cheat-seed 找选题?
- 没发过历史的:纯 brainstorm(兴趣 × 热点)
- 发过历史的(已 import):brainstorm 会基于你过去做过什么给推荐
回 "yes, seed" 立刻跑,回 "no" 你自己想。
💡 你的 confidence 是 <当前等级> —— 它会随着你跑更多复盘自动提升。
不要因为 confidence 低就跳过预测——预测的纪律本身就是工具的核心,
早期预测的"价值"是数据采集,不是决策。第 5 次复盘后 rubric 第一次校准,
confidence 会跨入 🟡 偏低;第 10 次后 🟢 中。.cheat-state.json 和 rubric_notes.md,不自动跨项目同步hooks_installed: false,cheat-status 持续提示"你的 immutability 是君子协定"cheat-status 读 .cheat-state.json 的 calibration_samples 字段决定显示哪个 confidence 等级predictions/ 和 videos/<...>/,但不计入 calibration_samples(不是真校准样本)/cheat-seed 读 predictions/ 的所有历史 reconstructed prediction → brainstorm 时知道"用户过去做过什么"| 字段 | 写入时机 | 来源 |
|---|---|---|
schema_version | Phase 3 | 硬编码 "1.4" |
skill_version | Phase 3 | 硬编码 "1.0.0" |
rubric_version | Phase 3 | "v0" |
content_form | Phase 3 | Q1 → 查映射表换 enum 值(不是字母) |
typical_duration_seconds | Phase 3 | Q1.5 派生 |
target_publish_cadence_days | Phase 3 | Q1.6 派生 |
rubric_form_mismatch | Phase 3 | Q1≠a → true |
benchmark_status | Phase 3 / 2.5 | Q2.5 答案派生 |
benchmark_name | Phase 3 / 2.5 | Q2.5 用户提供 |
benchmark_sample_count | Phase 3 / 2.5 | cheat-learn-from import 后回填 |
baseline_plays | Phase 3.5(如 import 成功) | import 数据中位数;否则 null |
calibration_samples | Phase 3 / Phase 3.5 | Q2=a→0;Q2=b→Q2.3 估值或 import 数 |
data_collection | Phase 3 | Q3 → 查映射表换 enum 值 |
pool_status | Phase 3 | Q4 → 查映射表换 enum 值 |
enabled_perf_adapters | Phase 3 | Q2.1 派生(如 Q2=a 则 []) |
hooks_installed | Phase 3-4 | Q5 → bool(不是字符串) |
last_bump_at / last_published_at / last_published_file / last_retro_at / last_trends_run_at | Phase 3 | 全部 null |
last_bump_self_audited | Phase 3 | false |
last_trends_added_count | Phase 3 | 0 |
last_prediction_self_scored | Phase 3 | false |
last_self_scored_at | Phase 3 | null |
initialized_at | Phase 3 | now() 本地 ISO 8601,含 +08:00 时区,不要 UTC Z |
© XBuilderLAB, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/cheat-init of XBuilderLAB/cheat-on-content.
Open the folder on GitHubat commit 2d8211e
Cheat-on-Content Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Cheat-on-Content Setup this skillXBuilderLAB/cheat-on-content | 7.2k | — | ~4.3k | Automated safety check: Notes | MIT | |
| WeChat Account Topic and Title WriterBigPengSays/bigpeng-hot-gzh | 265 | — | ~501 | Automated safety check: Pass | MIT | |
| X Algorithm Post Writingcarson2222/skills | 113 | — | ~3.8k | Automated safety check: Pass | Apache-2.0 | |
| Content Creatorsickn33/agentic-awesome-skills | 47k | 1 repos | ~2.5k | Automated safety check: Pass | MIT | |
| WeChat Article Title Strategistliucongg/liucong-skills | 248 | — | ~471 | Automated safety check: Pass | Apache-2.0 | |
| WeChat Article Topics and Titlesaiworkskills/wechat-article-skills | 665 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 |
BigPengSays/bigpeng-hot-gzh
Produces topic directions and candidate headlines for WeChat official account articles using seven title formulas, without writing the article itself.
carson2222/skills
Writes and reviews X posts, threads and replies using what the open-sourced For You ranking system rewards, and explains why a post may have underperformed.
sickn33/agentic-awesome-skills
Drafts and reviews audience-specific content from supplied brand examples, with local scripts for brand voice and SEO diagnostics, channel templates and a content calendar.
liucongg/liucong-skills
Generates, rewrites, critiques and ranks titles for Chinese WeChat official account articles, grounded in the article's real content and any history data supplied.
aiworkskills/wechat-article-skills
Researches topics, titles, digests and series plans for WeChat Official Account articles; used on its own only to revise titles or digests that already exist.
alirezarezvani/claude-skills
When the user wants to develop social media strategy, plan content calendars, manage community engagement, or grow their social presence across platforms.
XBuilderLAB/cheat-on-content
Proposes and applies upgrades to a content-scoring rubric: a full formula bump with blind re-scoring and a cross-model audit, or a lighter bucket-boundary recalibration.
XBuilderLAB/cheat-on-content
Imports scripts and engagement numbers from an account you want to emulate, then extracts content patterns and starting scoring signals from them.
XBuilderLAB/cheat-on-content
Upgrades an older .cheat-state.json to the current schema version by applying migration files in order, with dry-run, backup and stop-on-failure behavior.
XBuilderLAB/cheat-on-content
Turns content creation into a calibrated loop of scoring, blind prediction, post-publish review and rubric evolution, with a built-in rubric for opinion videos.
XBuilderLAB/cheat-on-content
Builds or refreshes an account's audience profile from the comments in its post retrospectives and writes it to audience.md for later topic and script work.
XBuilderLAB/cheat-on-content
Writes an immutable blind prediction log for a finished content draft: a seven-dimension score, bucket, probability distribution and counterfactuals, scored blind by a sub-agent.
Works with
Categories
Onboards a new user to the cheat-on-content workflow with a short question flow, creating the project scaffolding and optionally importing past video history. json` file does not exist. It checks the working folder for existing state files and asks before overwriting a configuration, and for a half-initialized folder it asks whether to infer state from the existing files or reset.
Cheat-on-Content Setup fits situations like: setting up cheat-on-content for the first time in a content project; importing past videos so topic suggestions fit what you already made; resetting a half-initialized project folder.
Run `npx skills add XBuilderLAB/cheat-on-content --skill cheat-init -a claude-code`. Or copy the skill folder (skills/cheat-init in XBuilderLAB/cheat-on-content) into .claude/skills/cheat-init in your project. Claude Code loads it when a task matches its description.
Run `npx skills add XBuilderLAB/cheat-on-content --skill cheat-init -a codex`. Or copy the skill folder (skills/cheat-init in XBuilderLAB/cheat-on-content) into .agents/skills/cheat-init in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add XBuilderLAB/cheat-on-content --skill cheat-init -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cheat-init, .gemini/skills/cheat-init, .github/skills/cheat-init and .opencode/skills/cheat-init in your project.
Going by SKILL.md and its folder, Cheat-on-Content Setup needs the command-line tools its instructions call (git and bash). Our summary lists: A content project folder to hold the state file and scaffolding; Playwright and a QR-code login if importing from Douyin. Its frontmatter pre-approves these tools: Bash(*), Read, Write, Edit, Glob, WebFetch, Skill.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Cheat-on-Content Setup is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Cheat-on-Content Setup: WeChat Account Topic and Title Writer (BigPengSays/bigpeng-hot-gzh, 265 stars), X Algorithm Post Writing (carson2222/skills, 113 stars), Content Creator (sickn33/agentic-awesome-skills, 47k stars) and WeChat Article Title Strategist (liucongg/liucong-skills, 248 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
XBuilderLAB (a GitHub organization) maintains it in XBuilderLAB/cheat-on-content, which has 7,225 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 5, 2026.
Source: XBuilderLAB/cheat-on-content on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.