Agent skill

Audience Persona Builder

by XBuilderLAB in 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.

MITAuto-check: notesMarketing & SEO

SKILL.md written in Chinese; this summary is our English description.

Install Audience Persona Builder

skills CLI
$ npx skills add XBuilderLAB/cheat-on-content --skill cheat-persona -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install XBuilderLAB/cheat-on-content cheat-persona --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/cheat-persona .claude/skills/cheat-persona && rm -rf skills-src

Use ~/.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/

Facts

Skill name
cheat-persona
GitHub stars
7.2k
Token cost
~1.5k tokens
SKILL.md length
456 words
Files
1
Skills in repo
16
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 6 steps: 收集数据 → 数据量判定 + Confidence → 评论聚类 → …
  • Building an audience profile for the first time from post retrospectives
  • SKILL.md covers 核心定位, ⚠️ 污染隔离(不可省), Overview and Constants, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Top comments with their like counts are pulled from the retrospective section of each file in predictions/, along with completion and follower-conversion figures from videos/*/report.md when those exist. The comments are grouped into a profile of who actually watches and engages, saved as audience.md and compared with the previous version if one is there.

How firm the profile is depends on how many retrospectives exist. With none and no benchmark file it refuses to invent one and tells you to run a few retros first; with only a benchmark it seeds a profile marked unverified; three or more retros count as well grounded. A trait needs at least three supporting comments to be listed as verified, otherwise it is filed as a hypothesis.

The profile is deliberately kept apart from scoring. It shapes what the cheat-seed step writes about, but audience.md is on the blind scorer's refusal list, so the prediction step never reads it. The SKILL.md is written in Chinese.

When your agent uses it

  • Building an audience profile for the first time from post retrospectives
  • Refreshing the profile after new retros add more comments
  • Checking who actually engages with an account before planning the next topics

Example prompts

  • “Build my audience persona from the retros I have so far.”
  • “Update the persona using the new comments from last week's retros.”
  • “Seed an audience profile from benchmark.md, since I have no retros yet.”
  • “Rebuild the audience profile even though no new comments came in.”

Requirements

  • A project with predictions/ retrospective files that contain comments
  • Optionally a benchmark.md to seed a first, unverified profile
  • Pre-approved tools (allowed-tools): Bash(*), Read, Write, Edit, Glob, Grep

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. 收集数据
  2. 数据量判定 + Confidence
  3. 评论聚类
  4. persona × rubric 交叉检验
  5. 写 audience.md
  6. 报告

What it can do on your machine

Read from SKILL.md and the folder at commit 2d8211e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(*)
    • Read
    • Write
    • Edit
    • Glob
    • Grep

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Audience Persona Builder loads about 1.5k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 456 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash(*), Read, Write, Edit, Glob, Grep

Automated 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.

SKILL.md

The full file from XBuilderLAB/cheat-on-content at commit 2d8211e, republished under its MIT licence (© XBuilderLAB). 456 words, ~1,509 tokens.

Download SKILL.mdSave it as .claude/skills/cheat-persona/SKILL.md (or your agent's skills folder).
name
cheat-persona
description
从复盘评论数据派生 / 刷新账号的受众画像,写入 audience.md。这是和 rubric 平行的第二个派生物——rubric 答"怎么打分",persona 答"谁在看"。cheat-seed 选题 / 写稿时读它。**audience.md 含实绩信号,cheat-score-blind 硬禁读**。触发词:"构造受众画像"/"更新 persona"/"我的观众是谁"/"build persona"/"刷新受众画像"/"看看我的受众画像"。
allowed-tools
Bash(*), Read, Write, Edit, Glob, Grep
argument-hint
[— seed-from-benchmark] [— rebuild]

/cheat-persona — 受众画像派生

从 predictions/*.md 复盘段的评论数据,聚类出账号真实受众画像,写入 audience.md。


核心定位

persona 是和 rubric 平行的第二个派生物,不是 rubric 的一部分:

复盘数据(评论 + 完播 + 转粉)
   ├──→ rubric 进化(cheat-bump)   —— "怎么打分"
   └──→ 受众画像(cheat-persona)    —— "谁在看"
两者都喂给 cheat-seed,但用途不同
  • rubric:这稿子会不会爆 → 喂 cheat-predict 打分
  • persona:谁会因为这条多看 3 秒 / 留评论 / 转发 → 喂 cheat-seed 选题 + 写稿

绝不混:persona 不进打分公式。rubric 的 AB 维度(受众广度)可以参考 persona,但那是 cheat-bump 的事,不是这里。

⚠️ 污染隔离(不可省)

audience.md 从复盘评论派生 = 含已发布作品的实绩信号。因此:

  • audience.md 在 cheat-score-blind 的 hard refusal list 里,refusal_code blocked_audience
  • persona 影响 cheat-seed 写什么(creative direction),不影响 cheat-predict 怎么打分(blind sub-agent 永远不读 audience.md)
  • 这是干净的:persona 塑造的内容进了成稿,blind sub-agent 照成稿本身打分——没有 leak。leak 只会发生在 sub-agent 能读 audience.md "因为这受众爱 X 所以加分" 的情况,而它读不到

Overview

[用户:构造受众画像 / 更新 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]

Constants

  • AUDIENCE_PATH = audience.md — 受众画像落盘位置
  • MIN_RETROS_FOR_DATA_GROUNDED = 3 — 复盘数 ≥3 才算"数据扎实"(可基于评论质量软判断)
  • MIN_COMMENTS_PER_TRAIT = 3 — 一条"验证特征"至少要 3 条评论证据,否则降到"假设特征"
  • SEED_FROM_BENCHMARK = auto — 无自己复盘数据但有 benchmark 时,seed 一份未验证画像

💡 调用覆盖:/cheat-persona — seed-from-benchmark(强制用 benchmark seed)/ — rebuild(即使数据没变也重建)

Inputs

来源用途
predictions/*.md 的 ## 复盘 段主数据源——top 评论(带赞数)。persona 的金矿
videos/*/report.md完播 / 转粉率——薄信号,推"留得住 vs 留不住"
benchmark.md冷启动 seed——"看对标的人 ≈ 你想要的人"
rubric_notes.mdPhase 3 交叉检验用——persona 食欲 vs rubric 校准现实
audience.md(如已存在)上一版画像,用于 Phase 5 diff

Workflow

Phase 0: 收集数据
  1. Glob predictions/*.md,对每个文件读 ## 复盘 段(只读复盘段——这是 channel A,本来就看实绩)
  2. 抽取每篇的 top 评论(带赞数)+ 实绩 bucket
  3. 统计:有评论的复盘篇数 N_retros、评论总数 N_comments
  4. 读 benchmark.md(如存在)
  5. 读 audience.md(如已存在)→ 留作 Phase 5 diff
Phase 1: 数据量判定 + Confidence
情况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。

Phase 2: 评论聚类

对收集到的所有评论,按四个维度聚类:

  1. 自我认同——"我也是…" / "这就是我" / "作为一个…" 模式。统计哪类身份反复出现("大厂打工人" / "一人公司" / "考研党" / ...)
  2. 情绪寄存——观众来评论是为了什么情绪?被验证("说得太对了")/ 宣泄("我也好累")/ 抬杠("我不同意")/ 求助("那该怎么办")。统计占比
  3. 反驳点——哪些观点引来稳定的反对声。这是 persona 边界
  4. 语言——他们怎么说话。玩梗密度、真诚 vs 戏谑、有没有复制你的金句

聚类纪律:

  • 一条"验证特征"至少 MIN_COMMENTS_PER_TRAIT(3)条评论证据。不够 → 降到"假设特征"段
  • 每条特征必须能引出具体评论 + 出处(哪篇 prediction 的复盘段)+ 条数
  • 发现"反画像"信号(你以为的受众 vs 实际评论的人不一样)→ 写"反画像"段
Phase 3: persona × rubric 交叉检验

读 rubric_notes.md 当前 rubric + 校准历史。检查:

  • persona 说"受众爱 X 类主题" → rubric 校准池里 X 类主题真的 over-perform 吗?
  • 不一致 → 在 audience.md 的"persona × rubric 交叉检验"段 flag 出来

诚实要求:两个派生物矛盾时不要强行调和。明确写"persona 说 A,rubric 校准说 B,待下次复盘澄清"——矛盾本身是信号。

Show full SKILL.md (184 more words)Show less
Phase 4: 写 audience.md

覆盖式重建(不是 append)——persona 是活文档,每次 rebuild 重写全文。但:

  • header 的 Persona 版本 +1(v0 → v1 → v2)
  • header 记 Last rebuilt 日期 + 数据基础(N 篇复盘 / M 条评论)+ Confidence
  • 文件底部"版本历史"段 append 一行:vN — 基于 M 篇复盘 / K 条评论,主要变化:...(这是唯一保留的历史;不搞 memo 累积——persona 是活文档不是公式)

用 templates/audience.template.md 的结构。

⚠️ 不走版本 memo / 不调跨模型审——persona 不是高风险不可逆动作(写错了重跑一次就好),过度工程没必要。

Phase 5: 报告
✅ 受众画像已更新:audience.md(v2,🟢 数据扎实)

数据基础:4 篇复盘 / 87 条评论
核心画像:25-35 岁职场人,来找情绪共鸣不来找信息……

跟 v1 的主要变化:
- 新验证:"深夜刷手机" 场景共鸣强(v1 是假设,本次 17 条评论验证)
- 新反画像:原以为"学生党"是受众,但评论里学生占比 <5% → 移到反画像
- ⚠️ 交叉检验 flag:persona 说受众爱"职场吐槽",但 rubric 校准显示职场类 composite 偏低——下次复盘留意

下一步:
- cheat-seed 选题 / 写稿时会自动参考这份画像
- 再跑 3 篇复盘后建议再 /cheat-persona 刷新

Key Rules

  1. 数据派生,不手写——persona 必须来自评论聚类。用户想手动加特征 → 允许,但标 user-asserted(未经数据验证)
  2. 证据强制——验证特征必须带评论条数 + 出处。无证据的进"假设"段
  3. 覆盖式重建——每次 rebuild 重写 audience.md 全文,只在版本历史段 append 一行
  4. 不进打分——persona 永远不喂 cheat-predict / cheat-score-blind。它是 cheat-seed 的 creative lens
  5. 矛盾不调和——persona × rubric 冲突时如实 flag,不强行编一个故事
  6. 冷启动诚实——没数据就说没数据,benchmark seed 全程标"未验证"

Refusals

  • 「我觉得我的受众就是 X,你直接写进 audience.md」 → 可以写,但标 user-asserted 放"假设特征"段,不放"验证特征"。persona 的价值在于数据 vs 你的幻想之间的 gap
  • 「persona 也给 cheat-predict 用,让打分更准」 → 拒绝。persona 是实绩派生物,进打分 = 把 channel B 的隔离打穿。persona 只服务 cheat-seed
  • 「跳过评论聚类,你凭感觉给我画一个」 → 拒绝。凭感觉画的是营销话术不是 persona。没评论数据就老实说"先去复盘"
  • 「把 persona 写进 rubric_notes.md,省一个文件」 → 拒绝。rubric_notes.md 是 blind 白名单,写 persona(实绩派生)进去 = 实绩泄漏漏洞重演(见 observation-lifecycle.md 的 leak guard)

Integration

  • 上游:cheat-retro 每完成一篇复盘 → flag "已累计 N 篇复盘,可跑 /cheat-persona 刷新画像"
  • 上游:cheat-init 创建空 audience.md 骨架;如导了 benchmark → 提示可 /cheat-persona — seed-from-benchmark
  • 下游:cheat-seed Mode A/B/C 读 audience.md 作为"这个 persona 会在乎吗"的镜子
  • 下游(phase 2 路线):cheat-recommend persona-fit 排序;cheat-status persona 新鲜度 nag
  • 隔离:cheat-score-blind 硬禁读 audience.md(refusal_code blocked_audience)

Known limitations

  1. 评论 ≠ 全部受众——留评论的是受众里最活跃的一小撮(沉默大多数不在数据里)。persona 偏向"会评论的人",不是"所有看的人"
  2. 平台评论可被污染——水军 / 引战 / 跑题评论会进数据。cheat-persona 聚类时对明显异常值降权,但不能完全过滤
  3. persona 滞后于真实受众变化——画像基于过去 N 篇的评论。受众结构变了,要等新复盘累积才反映
  4. 不解决"我想要的受众 ≠ 我实际的受众"——persona 只如实报告"现在谁在看"。想转向另一种受众是选题战略问题,cheat-persona 只提供"现状 vs 目标"的 gap,不替你做战略

© XBuilderLAB, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/cheat-persona of XBuilderLAB/cheat-on-content.

Open the folder on GitHubat commit 2d8211e

Compare with similar skills

Audience Persona Builder 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.

Audience Persona Builder compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Audience Persona Builder this skillXBuilderLAB/cheat-on-content7.2k—~1.5kAutomated safety check: NotesMIT
15 Social Listening Globalminhnv0807/ai-business-skills608—~4.8kAutomated safety check: PassMIT
Twitter Searchsundial-org/awesome-openclaw-skills663—~2.3kAutomated safety check: PassNone
Getxapi ConnectLeoYeAI/openclaw-marketing-skills1k1 repos~715Automated safety check: PassCustom licence
Content Traffic and Value Diagnosisdontbesilent2025/dbskill10k—~1.5kAutomated safety check: PassCustom licence
Xiaohongshu Title Formula Matcherdontbesilent2025/dbskill10k1 repos~3.4kAutomated safety check: PassCustom licence

Similar skills

  • 15 Social Listening Global

    minhnv0807/ai-business-skills

    A skill your agent uses when the user wants to monitor what is being said about the brand, competitors, and the category — channels and keywords to track, sentiment scoring, weekly and monthly…

    608 GitHub stars~4.8k tokensUpdated 25 days ago
    Marketing & SEOAuto-check passed
  • Twitter Search

    sundial-org/awesome-openclaw-skills

    Advanced Twitter search and social media data analysis. An agent skill from sundial-org/awesome-openclaw-skills.

    663 GitHub stars~2.3k tokensUpdated 7 mo ago
    Data & AnalyticsAuto-check passed
  • Getxapi Connect

    LeoYeAI/openclaw-marketing-skills

    Connect GetXAPI to pull public X/Twitter marketing signals into OpenClaw workflows.

    1k GitHub starsUsed in 1 repo~715 tokens
    Marketing & SEOAuto-check passed
  • Content Traffic and Value Diagnosis

    dontbesilent2025/dbskill

    Judges unpublished or underperforming content: who it will attract, whether the opening keeps viewers, how they may engage and what commercial value the traffic has.

    10k GitHub stars~1.5k tokensUpdated 9 days ago
    Marketing & SEOAuto-check passed
  • Xiaohongshu Title Formula Matcher

    dontbesilent2025/dbskill

    Matches a Xiaohongshu post topic to the best-fitting formulas from a library of 75 proven title patterns, rather than freely generating a title from scratch.

    10k GitHub starsUsed in 1 repo~3.4k tokens
    Marketing & SEOAuto-check passed
  • Suede Clip to Guide

    JasonColapietro/suede-creator-skills

    Turns a video clip, interview moment or transcript into a package that bridges viewers to a long-form guide, with rights, claim and approval gates along the way.

    127 GitHub stars~4.1k tokensUpdated 3 days ago
    Marketing & SEOAuto-check passed

More from XBuilderLAB/cheat-on-content

All 16 skills in this repo
  • Rubric Bump Proposer

    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.

    7.2k GitHub stars~3.5k tokensUpdated 2 days ago
    Auto-check: notes
  • Cheat-on-Content Setup

    XBuilderLAB/cheat-on-content

    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.

    7.2k GitHub stars~4.3k tokensUpdated 2 days ago
    Auto-check: notes
  • Benchmark Account Importer

    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.

    7.2k GitHub stars~2.3k tokensUpdated 2 days ago
    Auto-check: notes
  • cheat-on-content State Migrator

    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.

    7.2k GitHub stars~1.5k tokensUpdated 2 days ago
    Auto-check: notes
  • Cheat on Content Calibration

    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.

    7.2k GitHub stars~2.7k tokensUpdated 2 days ago
    Auto-check: notes
  • Blind Prediction Log

    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.

    7.2k GitHub stars~4k tokensUpdated 2 days ago
    Auto-check: notes

Questions about Audience Persona Builder

What does Audience Persona Builder do?

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. md when those exist.md and compared with the previous version if one is there.

When should I use Audience Persona Builder?

Audience Persona Builder fits situations like: building an audience profile for the first time from post retrospectives; refreshing the profile after new retros add more comments; checking who actually engages with an account before planning the next topics.

How do I install Audience Persona Builder in Claude Code?

Run `npx skills add XBuilderLAB/cheat-on-content --skill cheat-persona -a claude-code`. Or copy the skill folder (skills/cheat-persona in XBuilderLAB/cheat-on-content) into .claude/skills/cheat-persona in your project. Claude Code loads it when a task matches its description.

How do I install Audience Persona Builder in Codex?

Run `npx skills add XBuilderLAB/cheat-on-content --skill cheat-persona -a codex`. Or copy the skill folder (skills/cheat-persona in XBuilderLAB/cheat-on-content) into .agents/skills/cheat-persona in your project. Codex loads it when a task matches its description.

Can I use Audience Persona Builder in Cursor, Gemini CLI or GitHub Copilot?

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-persona -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-persona, .gemini/skills/cheat-persona, .github/skills/cheat-persona and .opencode/skills/cheat-persona in your project.

What does Audience Persona Builder need to run?

SKILL.md names no scripts, command-line tools or credentials: Audience Persona Builder is instructions for the agent only. Our summary lists: A project with predictions/ retrospective files that contain comments; Optionally a benchmark.md to seed a first, unverified profile. Its frontmatter pre-approves these tools: Bash(*), Read, Write, Edit, Glob, Grep.

Does Audience Persona Builder access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Audience Persona Builder safe to install?

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.

What licence does Audience Persona Builder use?

Audience Persona Builder is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Audience Persona Builder use?

About 1.5k tokens (SKILL.md is roughly 6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Audience Persona Builder?

Skills that share tags, products or a category with Audience Persona Builder: 15 Social Listening Global (minhnv0807/ai-business-skills, 608 stars), Twitter Search (sundial-org/awesome-openclaw-skills, 663 stars), Getxapi Connect (LeoYeAI/openclaw-marketing-skills, 1k stars) and Content Traffic and Value Diagnosis (dontbesilent2025/dbskill, 10k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Audience Persona Builder?

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.