Cheat Recommend logo

Cheat Recommend

OrganizationPopular
XBuilderLAB
cheat-recommend

从 candidates.md 里按当前 rubric 排序推荐 top N 选题,每条带 composite + 一句 rationale + 锚点对比。**candidates 不存在时给引导而非报错**。触发词:"推荐选题"/"next topic"/"下一篇做什么"/"recommend topics"/"挑一个选题"。

Overview

PublisherXBuilderLAB
Repositorycheat-on-content
Skill namecheat-recommend
Stars
7.1K
Forks
949
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by XBuilderLAB on GitHub. Read the source before you install it.

Installation

Install the Cheat Recommend AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git /tmp/cheat-on-content
mkdir -p .claude/skills
cp -r /tmp/cheat-on-content/skills/cheat-recommend .claude/skills/cheat-recommend
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Cheat Recommend in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Cheat Recommend on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Cheat Recommend is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

/cheat-recommend — 候选池排序推荐

读 candidates.md → 按 composite 排序 → 输出 top N 推荐,每条带评分细节 + 锚点对比 + 推荐理由。

Overview

[用户:推荐选题]
[Phase 0: 检查 candidates.md 存在性]   ← 不存在则引导,不报错
[Phase 1: 解析 candidates 列表]
[Phase 2: 过滤(tier / 安全性 / 已发过)]
[Phase 3: 排序 by composite + 找锚点]
[Phase 4: 输出 top N + 每条的 rationale + 锚点对比]

Constants

  • TOP_N = 5 — 默认推荐 top 5
  • STRATEGY = stable+experimental — 推 ≥2 时按 cadence-protocol.md 的"1 稳分 + 1 实验性"策略;推 1 时只推 top 稳分
  • POOL_PATH = candidates.md — 候选池路径
  • EXCLUDE_PUBLISHED = true — 排除已发布的(与 predictions/*.md 去重)
  • EXCLUDE_REJECTED = true — 排除用户主动跳过的(tier=skip
  • REQUIRE_SCORED = true — 只推荐已打分的——避免推没读过的素材
  • DUPLICATE_CATEGORY_LOOKBACK — 派生自 state.target_publish_cadence_days:max(3, cadence_days × 3) 天内已发同类目候选不推(避免审美疲劳)

💡 调用时覆盖:/cheat-recommend — top: 3 — filter: safe

Inputs

必填来源
candidates.md用户项目根
predictions/*.md用于去重
.cheat-state.json当前 rubric_version

Workflow

Phase 0: 候选池存在性检查

candidates.md

状态处理
文件不存在不报错。输出引导:见下方"无候选池引导"
文件存在但空(< 1 个 entry)同上
文件存在且非空进入 Phase 1

无候选池引导(核心:不让用户第一次遇到 cheat-recommend 时被劝退):

你目前没有候选池(candidates.md 不存在或为空)。

绝大部分人没有候选池——这很正常。四个建立方式,挑一个:

1. 🌱 [推荐] 跑 /cheat-seed
   一次性的种子动作:3 个问题(兴趣 / 调性 / 红线)→ 拉公开热点 + Claude brainstorm
   → 输出 15 候选让你挑 5 → 默认顺带写 5 个 draft。5 分钟搞定。
   
   - 没发过历史的:纯 brainstorm(兴趣 × 热点)
   - 发过历史的(init 时已 import):brainstorm 会基于"你过去做过什么"给推荐
   
   说:"找选题" 或 "seed"

2. 🔥 [日常补充] 用 /cheat-trends 抓 20 条带打分的候选
   说:"抓热点" — 从 weibo-hot / zhihu-hot / b站热门 / HN / 你配的源各拉 N 条
   适合已经跑过 /cheat-seed、想日常补充候选池的用户

3. ✍️  手动建:把候选标题贴进 candidates.md,每行一条
   我会自动给每条粗打分

4. 📋 从 Notion / RSS 导入:跑 /cheat-init --mode add-pool 配置 adapter

你也可以跳过候选池,直接给我具体稿子说"启动预测"。

> /cheat-seed vs /cheat-trends 的区别:
> - seed 是种子动作(含 brainstorm + 可选 draft),适合"我从零开始没选题"
> - trends 是日常多 adapter 抓取(不 brainstorm 不写 draft),适合"日常补充候选池"

完成引导 → 退出,不继续后续 phase。

Phase 1: 解析 candidates

candidate-schema.md 的"Markdown 表示"格式解析每个 H3 entry:

markdown
### [tier1] 标题
- **id**: a3f2c1d4e5b6
- **composite (v2)**: 8.47 — ER=4 HP=4 QL=5 NA=3 AB=5 SR=3 SAT=3
- **predicted bucket**: 5-30w
...

提取每条的 id / title / tier / composite / dimension_scores / note

容错:candidates.md 格式被用户手改过 → 询问用户 schema,不要静默忽略不识别的 entry

Phase 2: 过滤

1. EXCLUDE_PUBLISHED=true → 扫 predictions/*.md 的 header,提取所有 id;从候选池过滤掉
2. EXCLUDE_REJECTED=true → 过滤 tier=skip
3. REQUIRE_SCORED=true → 过滤 composite=null(未打分的不推荐)
4. filter 参数:
   - tier1: 只保留 tier=tier1
   - all: 不过滤(tier1+2+3)
   - safe: 排除 tier=risky
   - risky: 仅显示 tier=risky(用于"我今天就想发风险议题")

Phase 2.5: Buffer 颜色覆盖(最高优先级

state.shoots + state.target_publish_cadence_days 算 buffer 颜色(cadence-protocol.md):

Buffer 颜色推荐策略覆盖
🔴 红只推 top 1 稳分——不推实验性。回:"buffer 已 0/1 篇,下个发布日断更风险高,今天必须拍 ≥1 条稳分。下面是 top 1 稳分(不推实验性)"
🟠 橙标准 1 稳 + 1 实验,但提示"建议优先拍稳分"
🟢 绿标准 1+1(默认)
🔵 蓝拒绝推荐。回:"你 buffer 已 N 条,cadence-protocol 规定积压时暂停拍摄。先发存货 + 复盘。手动覆盖请说 '我就要拍'"
灵活模式 (target_publish_cadence_days=null)不应用 buffer 覆盖,标准策略

Phase 3: 排序 + 选 1 稳 + 1 实验(按 STRATEGY)

第 1 条(稳分)
  1. composite 降序排
  2. 过滤掉 tier=risky(稳分要安全议题)
  3. 过滤掉 category 与最近 DUPLICATE_CATEGORY_LOOKBACK 天已发/已推过的重复(避免审美疲劳)
  4. 取 top 1
第 2 条(实验性)
  1. 在 candidates.md 中找:
    • 维度组合与最近已发样本差异最大(增加校准信息量),或
    • 含明确的 pattern/dimension hypothesis(如 "MS=5 的 A/B 对照"),或
    • tier=risky 但用户主动愿意试(用 --filter risky 覆盖)
  2. composite 不一定 top——但有"信息价值"
  3. 如 candidates 池里没有合适的实验性候选 → 回:"候选池里没有明显的实验性样本,给你 2 条稳分"
剩余 (TOP_N - 2) 条

按 composite 降序补满,标 "(备选)"。

锚点

对每条找 1-2 个 composite 接近的已发布作品作为锚点(从 predictions/*.md 读)。优先同时长锚点(按 state.typical_duration_seconds ±20%)。

Phase 4: 输出

🎯 候选池推荐(rubric: v2 / buffer: 🟢 绿 / cadence: 隔日更)

📌 第 1 条 — **稳分**(推荐立即拍):
  **[tier1] [👍 9.18] "为你好"高密体系**
   - 维度:ER=5 HP=5 QL=4 NA=4 AB=5 SR=5 SAT=4
   - 粗预测桶:30-100w(中枢 ~60w)
   - rationale:ER+SR 双 5 顶配,"高密度家庭议题"普适且分享安全
   - 锚点:仓鼠 (composite 9.41, 实绩 124w) — 同走"理论框架+具象样本"路线
   - 风险:议题厚重,不适合连续 2 篇都打这种

🧪 第 2 条 — **实验性**(验证特定假设):
  **[tier1] [👍 8.71] 哈哈长度**
   - 维度:ER=3 HP=5 QL=5 NA=4 AB=5 SR=4 SAT=5
   - 粗预测桶:30-100w(中枢 ~55w)
   - **测试目标**:v2.1 候选维度 MS+TS 双 5 vs 谁问你了同 ER/HP/QL/SR 但 MS+TS 低 3
   - 信息价值:拍这条能强证据/弱推翻 v2.1 升正
   - 锚点:谁问你了 (composite 8.24, 实绩 11.7w)

(备选 top 3):
  3. ……
  4. ……
  5. ……

下一步:
- 选稳分 + 实验性各拍 1 条 → 改写 script → "启动预测"
- 只拍 1 条 → 选稳分(buffer 颜色越红,越应该选稳分)
- 想抓更多候选 → 说"抓热点"
- 都不满意 → 说"过滤改 all"看其他 tier 或 "regen"

如 buffer 颜色为 🔴:

🔴 buffer 警戒:你 buffer 已 0/1 篇,**下个发布日可能断更**。
   按节奏协议,只推 top 1 稳分(不推实验性):

  **[tier1] [👍 9.18] "为你好"高密体系**
   - ...(同上稳分格式)

今天必须拍这条。挑 5 条候选 → "抓热点"。

如 buffer 颜色为 🔵:

🔵 buffer 积压:你 buffer 已 N 条,**暂停推荐**。
   按节奏协议,先发存货 + 复盘。
   - 已拍未发:N 条(最早一条 X 天前拍的)
   - 待复盘:N 条
   说 "已发布 ..." 出队,或 "复盘" 处理待复盘项。
   如果你坚持要拍新的,回 "我就要拍",我会推 top 1 稳分。

每条必有:维度评分(让用户能挑战打分)+ 锚点(让用户校准 composite 的可信度)+ rationale(让用户理解推荐逻辑)。不允许只输出 composite 排序而无解释——那是黑箱。

Key Rules

  1. 不报错,给引导。candidates 缺失是默认状态,不是错误
  2. 不推未打分的。REQUIRE_SCORED=true 是诚实门槛——推未读过的素材是占星
  3. 必带锚点。composite 8.47 在不同账号意味不同,锚点把抽象数字 ground 到真实样本
  4. 必带 rationale。一句话——为什么这条比第二条强?
  5. 去重 published。已发过的不推(用户可显式覆盖)

Refusals

  • 「直接给我 composite 最高的,不用解释理由」 → 拒绝。展示评分 + 锚点是发现"打错"的唯一机会
  • 「把 candidates.md 里所有 entry 都重新打分一遍」 → 路由到 /cheat-score 单条做;批量重打分是 /cheat-bump 的一部分,不在 recommend 范围
  • 「按预测桶排,不要按 composite」 → 询问理由。bucket 是 composite 的离散化,按 composite 排即按 bucket 排,差异在桶内序——如果用户真想按"押注期望值"排,需要乘以平均播放,那是另一个独立 scoring 维度

Integration

  • 上游:/cheat-trends 把外部热点拉进 candidates.md → recommend 自动看到
  • 下游:用户挑一条后写稿 → /cheat-predict(candidate 的粗 composite 不进入 prediction,prediction 重新打)
  • /cheat-status 协调:status 显示 "candidates 池有 N 条 tier1 未发",recommend 提供具体推荐

Frequently asked questions

What does the Cheat Recommend AI skill do?

从 candidates.md 里按当前 rubric 排序推荐 top N 选题,每条带 composite + 一句 rationale + 锚点对比。**candidates 不存在时给引导而非报错**。触发词:"推荐选题"/"next topic"/"下一篇做什么"/"recommend topics"/"挑一个选题"。

Why use Cheat Recommend on TypingMind?

Because you install it once and use it with any model. Cheat Recommend is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Cheat Recommend in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-recommend. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Cheat Recommend?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Cheat Recommend?

As many as you like. As long as a model supports skills, you can use Cheat Recommend with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Cheat Recommend AI skill free?

Yes. It is published on GitHub by XBuilderLAB under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇