ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

cheat-on-content / cheat-publish 发布登记实战指南:在预测不可变约束下安全登记作品发布元数据

cheat-on-content / cheat-publish 发布登记实战指南:在预测不可变约束下安全登记作品发布元数据 AI 技能AI 应用【免费下载链接】cheat-on-contentYoure reading this. The skill predicted it. A workflow that turns every post into a calibrated experiment—score, blind-predict, retro, evolve. The future doesnt reward effort, it rewards those who see the pattern first. 1M followers in a month — not luck, system.项目地址https://gitcode.com/gh_mirrors/ch/cheat-on-content点击查看免费下载本文以仓库中 skills/cheat-publish/SKILL.md 为主体结合 shared-references/cadence-protocol.md、shared-references/state-management.md、hooks/prediction-immutability.sh 等配套文档与源码完整拆解 cheat-publish 的动作边界、四阶段工作流、state 字段契约与拒绝策略。读完你将掌握如何在「预测段一字不改」的硬约束下完成发布登记、如何解析平台与 platform-specific ID、如何维持 buffer 队列与 pending_retros 的准确性以及为什么这个轻量动作是整条校准循环中不可跳过的一环。cheat-on-content 是一套把内容创作变成「可校准实验」的工作流cheat-predict盲写预测 →cheat-shoot登记拍摄 →cheat-publish登记发布 →cheat-retro回收数据复盘。其中cheat-publish是全链路中唯一的「发布元数据登记点」——它只做一件事把作品的 URL、发布时间、平台写入预测文件 header 和.cheat-state.json为 T3d 后的复盘提供关键上下文。一、cheat-publish 是什么一个「轻量登记动作」而非数据回收从 SKILL.md 的定义看cheat-publish 的定位极其克制只更新元数据——把 URL / 平台 ID / 发布时间写入预测文件 header 与 state file不动预测段任何字符——即使修复笔误也不允许hook 会拦截不抓数据——发布登记不是数据回收那是cheat-retro的活不写预测内容——与 cheat-shoot 一样所有预测落盘逻辑都在 cheat-predictshoot 只负责检测改稿并派发 v2 重判。它的触发词覆盖中英文日常表达「已发布」「I shipped」「发布链接是 X」「刚发完 [url]」「publish registered」。默认参数形态为prediction-file-or-url [— platform: youtube|bilibili|douyin|...]允许的工具集为 Bash(*)、Read、Edit、Glob——注意这里没有 Write因为对已有预测文件的任何覆盖式重写都是被禁止的。整体流程一览[用户已发布 https://...] ↓ [Phase 0: 找到对应的预测文件] ← 通过 in_progress_session 或匹配 ↓ [Phase 1: 解析 URL → 平台/发布时间] ↓ [Phase 2: 更新 prediction 文件 header仅 metadata 段] ↓ [Phase 3: 更新 .cheat-state.json清除 in_progress_session]两个核心常量常量值含义AUTO_DETECT_PLATFORMtrue从 URL 模式自动识别平台避免每次手工指定VERIFY_BLINDtrue提醒用户从此刻起看到任何后续数据都会破坏盲度声明的诚信二、Phase 0找到对应的预测文件登记前必须先锁定「这篇发布对应哪份预测」。SKILL.md 给出的优先级用户参数明确给了 prediction 文件路径 → 直接用用户参数只给了 URL → 读.cheat-state.json的in_progress_session.file两者都没有 → 列出predictions/*.md中 header 没填published_at的文件让用户选。这里依赖的in_progress_session由 [cheat-predict] 在写完预测文件时创建结构如下见 state-management.md{ type: prediction, file: predictions/2026-05-04_a3f2c1d4e5b6_停止期待.md, started_at: 2026-05-04T14:00:0008:00, rubric_version: v2 }警告路径若in_progress_session.file与用户给出的 URL 时间差超过 14 天 → 提示「这个预测写于很久之前确认是这篇」防止把旧预测误登记到新发布上。从源码结构看这一阶段的背后逻辑是「state 是各子 skill 共享上下文的单一来源」——state-management.md 明确in_progress_session的唯一写入者是 cheat-predict创建、唯一清除者是 cheat-publish登记时清除。这保证了「最近一篇预测」与「当前这次发布」的对应关系不会二义。三、Phase 1解析平台与发布时间3.1 平台自动识别表AUTO_DETECT_PLATFORMtrue时按 URL 模式匹配URL 模式平台youtube.com/*youtu.be/*youtubebilibili.com/*b23.tv/*bilibilidouyin.com/*iesdouyin.com/*v.douyin.com/*douyinxiaohongshu.com/*xhslink.com/*xhsmp.weixin.qq.com/*wechatsubstack.com/**.substack.com/*substackmedium.com/**.medium.com/*mediumtwitter.com/*x.com/*twitter其他unknown — 询问用户注意短链域b23.tv、xhslink.com、v.douyin.com也被覆盖——分享场景下用户给的往往是短链。识别不出时不强报Key Rules #4询问用户并允许platform: other兜底。3.2 发布时间获取不强求自动抓——绝大多数平台需要登录态publish 阶段不引入抓取复杂度询问用户「发布时间是默认现在」→ 接受 ISO 8601 或自然语言「今天 14:30」/「20 分钟前」解析失败 → 用now()。3.3 platform-specific ID 的提取规则平台字段不只是给人看的标签——它直接决定复盘时用哪个 perf-data adapter 抓数据而 ID 是 adapter 的入参。SKILL.md 规定各平台从 URL 提取 ID 的方式平台ID 类型提取方式抖音aweme_idURL 短链 resolve 后提取v.douyin.com→ 重定向后含modal_id或item_id参数B 站BV 号URL 路径中的 BV 号小红书note_idURL 中的 note idYouTubevideo_idv参数后的值如果用户给的是分享短链且无法立刻 resolve → 标Aweme ID: pending下次/cheat-retro时由 adapter 解析。douyin-session adapter 的 README 印证了这一设计cheat-publish会在登记发布时把 aweme_id 存到 prediction header如能 resolvecheat-retro启动时直接读这个字段调用bash run.sh aweme_id video_folder。3.4 video folder 的前置检查到 publish 这一步对应的videos/id/目录应该已经由 cheat-shoot 创建内含 script.md。如果不存在说明用户跳过了拍摄登记警告「你跳过了 cheat-shoot建议先跑 cheat-shoot 把拍摄稿登记进 video folder 再发」询问是否跳过登记直接发是→ 自动建一个 video folderfallback但不询问稿子一致性标ad_hoc_publish: true否→ 让用户先跑 cheat-shoot 再回来 publish。从 cheat-shoot 的角度看这一检查保证了state.shoots[]队列的语义完整——拍了进队列buffer 1、发了出队列buffer -1两个事件分开使 buffer 跟踪准确见 cadence-protocol.md。四、Phase 2更新 prediction 文件 header只动 metadata 块4.1 定位 metadata 块绝不触碰## 预测段及之后。只动文件最顶部的 metadata 块——即第一个##之前的所有行。读文件后检查是否已有这些字段——有则警告「已登记过」并询问是否覆盖无则追加**Published at**: 2026-05-04T14:32:0008:00 **Platform**: douyin **URL**: https://v.douyin.com/abc123 **Video Folder**: videos/2026-05-04_a3f2c1d4_停止期待/ **Aweme ID**: 7234567890123456789 (douyin / 视频号 等需要的 platform-specific ID)对照 prediction.template.md 的 header 结构可以看到预测文件顶部本身就是一组**Key**: value的 metadata 块Article ID / Title / Rubric Version / 预测时间 / Script Path 等publish 追加的四个字段与它们处于同一段位——这解释了为什么 hook 只保护## 预测之后的区域而放行顶部编辑。4.2 用 Edit 而非 WriteSKILL.md 明确要求用 Edit 工具不是 Write 重写整个文件。这一约束在 hook 层有硬保障——hooks/prediction-immutability.sh 的拦截逻辑是只拦截Edit/Write且路径匹配*/predictions/*.md的操作Write一个已存在的预测文件 → 直接 BLOCKED覆盖式重写必然触碰预测段Edit则用 awk 定位## 预测/## Prediction含## 预测 v1、## 预测 v2等版本后缀到下一个非预测 H2 之间的字节区间再检查old_string是否落在该区间内命中则 BLOCKED该 hook 由 hooks/prediction-immutability.json 注册为 PreToolUse 钩子cheat-init时合并进用户项目的.claude/settings.json。SKILL.md 的预期行为因为只动 metadata 段在## 预测之前immutability hook 应放行。如果 hook 误拦 →报告 bug不要绕过 hook。hook 提供CHEAT_BYPASS_IMMUTABILITY1单次放行通道但仅限纯 markdown 格式修复且会写入 stderr 与 git history属于极罕见例外。4.3 为什么预测段必须不可变这一点从 prediction.template.md 的模板注释可以看得很清楚## 预测段是 blind prediction盲预测的档案写完即锁死如要重做走本文件名_redo.md新文件路径原文件保留。publish 阶段禁止「顺手改预测段」并非保守主义而是校准实验的数据完整性要求——复盘时对比的是发布时刻冻结的预测任何事后修改都会让「预测 vs 实绩」的偏差信号失真。五、Phase 3更新 state file——字段契约与队列维护5.1 写回的状态形状{ in_progress_session: null, last_published_at: ISO timestamp, last_published_file: predictions/filename, last_published_video_folder: videos/.../, last_published_platform_id: aweme_id 或 BV 号 等, pending_retros: [ predictions/filename ], shoots: [ // 移除 video_folder 匹配本次发布的项buffer -1 ] }对照 state-management.md 的「字段写入责任表」「谁写谁读」是完全确定的字段唯一写入者读取者in_progress_sessioncheat-predict创建/cheat-publish清除cheat-publish / cheat-statuslast_published_at/last_published_filecheat-publishcheat-status 等pending_retroscheat-publishpush/ cheat-retroremovecheat-status「今天该复盘哪些」shootscheat-shootpush/cheat-publishremovecheat-status / cheat-recommend / SessionStart hook这是刻意设计的单一写入者纪律——绝不允许多个 skill 写同一字段否则状态语义破碎。5.2shoots队列处理buffer 跟踪关键读state.shoots[]找video_folder 本次发布的 video_folder的项 → 移除如果没找到 → 警告「buffer 队列里没有这条视频。是直接发布没经过 /cheat-shoot 吗」——不阻塞但提示用户下次走 /cheat-shoot 让 buffer 跟踪准确。5.3 三个字段的语义last_published_platform_idcheat-retro调 adapter 时的输入——如 douyin-session 需要 aweme_id 直接抓数据B 站需要 BV 号。它把「publish 时解析的 ID」与「retro 时抓数据」串成一条无重复劳动的链路。pending_retros待复盘列表——cheat-status基于这个列表 RETRO_WINDOW_DAYS显示「今天该复盘哪些」。in_progress_session清除publish 是这条会话的终点清空后下一次 predict 才能创建新会话。5.4 state 写入的工程纪律state-management.md 定义了所有 skill 共用的写协议publish 同样遵守def write_state(state): state_path os.path.join(os.getcwd(), .cheat-state.json) tmp_path state_path .tmp with open(tmp_path, w) as f: json.dump(state, f, indent2, ensure_asciiFalse) os.replace(tmp_path, state_path) # atomic rename三条关键纪律原子写写到 .tmp → rename避免半写损坏、永远 indent2人类可读便于手改 git diff、ensure_asciiFalse保留中文字符。.cheat-state.json应被纳入 git——它是配置 累计指标的快照多设备同步靠 git push/pull而.cheat-cache/usage.jsonl、趋势缓存、adapter 调试文件与.cheat-secrets.jsoncookie / API key不应入库。六、Phase 4登记完成提醒 盲度警戒 buffer 状态发布登记不是结束SKILL.md 要求在收尾时输出三块信息✅ 登记完成predictions/2026-05-04_a3f2c1d4e5b6_停止期待.md - Published at: 2026-05-04 14:32 - Platform: douyin - URL: https://v.douyin.com/abc123 BufferN 篇颜色 含义 按你的 cadenceX N×X 天 buffer [如颜色变了提示现在该去拍/暂停拍] ⚠️ 从此刻起你看到任何关于这条作品的播放/点赞/评论数据 都会破坏盲度声明的诚信。如果不小心看到告诉我—— 我会在文件里追加一个 integrity warning。 计划复盘T3d约 2026-05-07 到时间说复盘 predictions/2026-05-04_...6.1 Buffer 颜色由 cadence-protocol 派生Buffer 颜色的计算规则固化在 cadence-protocol.mdbuffer state.shoots 数组长度已拍未发的视频数buffer_days buffer_count × target_publish_cadence_days阈值如下buffer_days颜色含义行动 1 红警戒——下个发布日可能断更今天必须拍且只拍稳分top 1不冒险1-2 橙偏低应该拍 1-2 条3-5 绿正常节奏稳定可以拍可以休 5 蓝积压暂停拍摄全力发布存货 复盘示例用户 cadence1日更buffer count0 → buffer_days0 → cadence7周更buffer1 → buffer_days7 → 。若用户初始化为「灵活节奏」target_publish_cadence_days null→ buffer 监控关闭只显示「已拍未发N 条」不显示颜色。如本次发布让 buffer 跌入红色 → 高亮警告「今天必须再拍 ≥1 条」。这条提醒与 cheat-status 的看板逻辑buffer_days派生颜色是同一算法在不同入口的复用。6.2 盲度警戒是核心不变量「从此刻起看到任何后续数据都会破坏盲度声明的诚信」——这是 cheat-on-content 区别于普通发布记录的核心设计。盲预测blind prediction的价值在于预测写于数据可见之前复盘对比才有统计意义。若用户无意中看到了数据SKILL.md 要求在文件里追加一个integrity warning而不是静默忽略——这保持了档案的诚实性。七、Key Rules五条不可违背的铁律不动预测段。即使是修复笔误也不允许在 publish 时改预测段不抓数据。publish 是登记动作不是数据回收那是 cheat-retro 的活state 字段名固定。pending_retros/last_published_at是其他子 skill特别是 cheat-status / cheat-retro依赖的契约平台未知不强报。无法识别 → 询问用户允许platform: other作为兜底重复登记需明示。已有published_at→ 询问「覆盖」绝不静默覆盖。八、Refusals三句典型拒绝话术及理由SKILL.md 为高频诱惑场景预设了明确拒绝路径用户请求判定理由与替代路径「我顺手把预测段也改一下」拒绝请走_redo.md路径新文件原预测档案必须保留「URL 我等会儿补先把发布时间记上」允许URL 字段可后续追加published_atplatform必填「跳过 metadata 更新直接清 in_progress_session」拒绝元数据是复盘时的关键上下文——特别是 platform 决定数据回收用哪个 adapter注意第二项并非拒绝——它体现了「必填字段最小化」的务实设计发布登记最迟可延的只有 URL发布时间与平台是复盘路由的硬依赖。九、Integrationpublish 在整条校准循环中的位置上游/cheat-predict写出 prediction 文件并设 in_progress_session→ 用户拍摄 →/cheat-shootbuffer 1→ 发布 →/cheat-publishbuffer -1、登记元数据下游TRETRO_WINDOW_DAYS默认 3 天后 →/cheat-retro读 header 的 Platform Aweme ID / BV 号 等字段路由到对应 perf-data adapter 抓数据cheat-status用pending_retros字段计算「今天该复盘哪些」平台字段被 cheat-retro 用来路由到对应的 perf-data adaptermanual-paste / youtube-data-api / 等。从 cheat-retro 的 Phase 0 校验可以看到 publish 的下游依赖校验文件 header 有Published at→ 没登记的不能复盘提示用户先/cheat-publish。反过来如果 publish 时省掉了元数据登记retro 将无从校验时间窗口、无法路由 adapter——这正是 SKILL.md 拒绝「跳过 metadata 直接清 in_progress_session」的深层原因。在 cadence-protocol.md 的子 skill 责任表中cheat-publish 的职责被一句话概括「从 state.shoots 移除对应项buffer -1」。与 cheat-shoot 的「把 video folder 加 state.shootsbuffer 1」严格配对——这两个轻量动作共同维护了 buffer 警戒系统的真值来源。十、实战小结cheat-publish 看起来只是「写几行元数据」但在 cheat-on-content 的实验架构里它是盲度诚信与复盘数据链路的接缝处对预测档案它只允许在第一个##之前的 metadata 块追加字段其余区域由 prediction-immutability hook 硬性保护对状态文件它按「单一写入者」纪律清除in_progress_session、pushpending_retros、从shoots移除对应项并落last_published_*四个字段对复盘链路它解析出的 Platform 与 platform-specific ID 是 retro 选择 adapter 的入参缺失会导致整条数据回收链路断掉。正确使用姿势可以归纳为三句话先确认预测文件走 in_progress_session 或让用户选→ 只 Edit 顶部 metadata 块并提取平台与 ID → 按契约更新 state 并输出 buffer / 盲度 / 复盘计划提醒。遇到任何「改预测段」的请求一律引导到_redo.md路径——这不是流程繁琐而是校准实验的数据完整性要求。赞分享AI 技能AI 应用【免费下载链接】cheat-on-contentYoure reading this. The skill predicted it. A workflow that turns every post into a calibrated experiment—score, blind-predict, retro, evolve. The future doesnt reward effort, it rewards those who see the pattern first. 1M followers in a month — not luck, system.项目地址https://gitcode.com/gh_mirrors/ch/cheat-on-content点击查看免费下载相关推荐Cheat on Content 内容创作者校准系统从感觉到可验证的预测循环Cheat on Content 内容创作者校准系统从感觉到可验证的预测循环 这是一篇面向内容创作者与 AI Agent 用户的实战指南。Cheat onAI 技能AI 应用Python类型别名后门webshell项目中的类型系统绕过Python类型别名后门webshell项目中的类型系统绕过 在现代软件开发中类型系统通常被视为代码安全的守护者它能帮助开发者捕获潜在错误并提高代码可读性AI 技能AI 应用网盘直链下载助手免客户端拿到九大网盘下载直链下载交给多线程工具网盘直链下载助手免客户端拿到九大网盘下载直链下载交给多线程工具 网盘直链下载助手LinkSwift是一个油猴用户脚本它调用各网盘的公开接口把页面上的AI 技能AI 应用上一篇Sketch MeaXure如何彻底解决设计标注的三大痛点问题下一篇AMD Ryzen终极调试神器SMU Debug Tool完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进