本文へ移動
cccskills
無料GitHub で公開

wjs-x-increasing-follower

Use when 王建硕 wants to systematically grow his X (Twitter) followers by running numbered, A/B-testable growth experiments and tracking which ones actually work. Every action gets a number, a hypothesis, a target metric, a before-state (for rollback), and a verdict. The North-Star metric is the new-follower ÷ profile-visit ratio (conversion) — every profile change is judged against it. Daily it ingests the X Analytics CSV export, scores each running experiment, and recommends keep / rollback. Triggers — "涨粉", "增加 X 粉丝", "X 涨粉实验", "follower growth", "A/B test my profile", "今天的涨粉检查", "/wjs-x-increasing-follower".

インストール方法を見る

含まれるファイル(12)

  • SKILL.md8.3 KB
  • inbox/.gitignore12 B
  • scripts/_common.py1.8 KB
  • scripts/daily-check.sh1.1 KB
  • scripts/evaluate.py6.6 KB
  • scripts/ingest-csv.py4.7 KB
  • scripts/ledger.py5.3 KB
  • scripts/scoreboard.py4.7 KB
  • state/.gitignore6 B
  • state/actions.jsonl3.0 KB
  • state/daily.jsonl45.0 KB
  • state/SCOREBOARD.md1.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

wjs-x-increasing-follower

把「涨粉」当工程做:每个改动是一个带编号的实验,有假设、有目标指标、有 before(可回滚)、有判决。不靠感觉,靠数。

Core Principle

单账号没法做平行 A/B —— 只能做时间轴上的前后对比。 所以唯一可信的北极星指标是 转化率 = 新增关注 ÷ 主页访问(ratio):它对爆款流量免疫。一条推爆了带来一堆访问,ratio 不一定动;但 bio 改好了,每个来访的人更愿意关注,ratio 一定动。

所以指标分层(每个 action 必须声明自己被哪个指标考核):

Action 类型拨动的杠杆用什么考核
profile(bio / 名字 / 头像 / banner / 置顶 / URL / 地点)转化ratio(北极星,抗爆款)
posting(格式 / 钩子 / 频率 / thread vs 单条)触达profile visits + impressions(ratio 当护栏,别把转化拖垮)
engagement(回复 / 关注别人 / 互动)触达new follows + visits
timing(发布时间)触达profile visits

诚实护栏(写死在 evaluate.py 里): 用中位数不用均值(一天爆款骗不了判决);够 7 天 / 够数据才下判决;同指标实验窗口重叠 → 打 confounded 标记;只给「方向性」结论,不号称因果。

回滚是一等公民。 每个 action 存了精确的 before 值,#N 永远能还原。判 ❌ rollback 先问王建硕,绝不静默改他的 bio。

数据从哪来(关键约束)

ratio 这个数 X API / xurl 拿不到 —— 只活在 Analytics 看板里。所以靠 CSV 导出: 打开 x.com/i/account_analytics → Overview → 右上角下载图标(7D/2W/4W/3M/1Y 想要哪段先选好)→ 导出 CSV → 丢进 inbox/(或直接给路径)。

When This Skill Fires

  • 王建硕说「涨粉」「搞个 X 涨粉实验」「A/B 测一下我的 profile」「今天的涨粉检查」
  • 跑 /wjs-x-increasing-follower
  • 设了 /schedule daily /wjs-x-increasing-follower(见末尾「每日检查」)

When NOT to use

  • 只是要发一条推 → /wjs-tweeting-from-articles 或直接 xurl post
  • 推广 skill → /wjs-promoting-skills / /publish-skill
  • 把文章分发到各平台 → /wjs-syndicating-articles

Workflow

所有脚本在 scripts/,状态在 state/。先 cd 到 skill 目录。

Step 1 — 吃数据(CSV → daily.jsonl)

python3 scripts/ingest-csv.py /path/to/export.csv

脚本模糊匹配列名(Profile visits / New follows / Impressions / Followers),按日期 upsert,自动算 ratio。它会打印它认的列映射 —— 看一眼对不对,不对就 --visits-col "X" --follows-col "Y"。重跑更长的导出会覆盖重叠的天,安全。

Step 2 — 出 to-do(提实验)

看 state/daily.jsonl 现状,给王建硕一份带编号的实验菜单。每条必须有:category / title / hypothesis / metric。原则:

  • 一次只让少数 profile 实验在跑(同指标重叠会互相污染读数)。
  • 假设要可证伪:「concrete 一行证明比模糊 tagline 转化高」✅;「让 bio 更好」❌。
  • profile 类先于 posting 类 —— 转化是地基,先把来访的人接住,再去放大流量。

入账(自动分配编号,别手改 jsonl):

python3 scripts/ledger.py add --category profile --metric ratio \
  --title "Bio: 开头一行放硬证明" \
  --hypothesis "访客看到具体成绩比看到口号更愿意关注"

实验菜单参考(按杠杆分):

  • profile/ratio:bio 重写(钩子前置 / 硬证明 / CTA「关注看 X」)、显示名加身份锚、头像换正脸高清、banner 放一句话价值主张、置顶换最强 thread、URL 指向落地页。
  • posting/visits:发布格式(thread vs 单条)、首句钩子、带图 vs 纯文、话题聚焦。
  • engagement/follows:固定回复某圈层、主动关注目标人群、参与热门话题。
  • timing/visits:早 9 点 vs 晚 9 点、工作日 vs 周末。

state/SCOREBOARD.md 的「To-do」区就是这份清单的落地版(见 Step 6)。

Step 3 — 上线一个实验(含抓 before)

先抓 before-state(profile 字段):

xurl "/2/users/me?user.fields=name,description,url,location,profile_image_url,pinned_tweet_id"

记下当前值。然后真正去改:

  • bio / 名字 / URL / 地点 —— 可走 API(OAuth1 v1.1):
    xurl --auth oauth1 -X POST "/1.1/account/update_profile.json?description=<urlencoded>"
    
    (name / url / location 同理。失败/没 enroll OAuth1 → 退回 App 里手改,照样记账。)
  • 头像 / banner / 置顶推 —— 没有可靠公开 API,在 App / 网页里手改,skill 只负责记 before/after + 跟踪。

记账(盖上 applied 日期 + before 值):

python3 scripts/ledger.py apply 1 \
  --before-field description --before-value "<原 bio 原文>" \
  --after-value "<新 bio>"

之后这个实验进入测量期:baseline = applied 前 window_days(默认7) 天的指标中位数;判决要等 applied 后攒够数据。

Step 4 — 每天喂数 + 重算(见也用于「每日检查」)

scripts/daily-check.sh

它会:ingest inbox/ 里的新 CSV(用完归档到 inbox/done/)→ evaluate.py --write-verdict 把方向性判决写回账本 → 重生成 SCOREBOARD.md。注意:它只写判决,不动状态 —— keep/rollback 是人的决定。

Step 5 — 判决与回滚

python3 scripts/evaluate.py          # 看每个在跑实验:baseline vs post,Δ%,verdict

判决(相对 baseline 中位数):Δ ≥ +10% → keep;Δ ≤ -10% → rollback;之间 → flat。注意 ⚠ confounded / ⚠ thin baseline 标记,有就别太当真,延长窗口或停掉重叠实验再测。

  • keep:python3 scripts/ledger.py keep 1 --note "+58% 转化"
  • rollback(先问王建硕!):确认后,用 apply 时存的 before 值还原(API 或手改),再 python3 scripts/ledger.py rollback 1 --note "转化掉了,还原 bio"(命令会打印要还原的 before 值)
  • flat:保留观察,或归为「不影响」撤掉。

Step 6 — 看板

python3 scripts/scoreboard.py        # 写并打印 state/SCOREBOARD.md

四块:📈 现状(最新 ratio / 7 日中位 ratio / 粉丝数)、🧪 在跑实验(baseline/post/Δ/判决/告警)、✅ To-do 待办(proposed 清单)、📚 已结案(kept / rolled_back)。给王建硕看就发这个文件。


数据模型(state/)

  • daily.jsonl —— 一天一行:{date, profile_visits, new_follows, ratio, impressions, followers_total}。
  • actions.jsonl —— 一实验一行:{id, category, title, hypothesis, metric, window_days, before:{field,value}, after:{value}, applied, status, evaluated, verdict, notes}。状态流:proposed → active → (kept | rolled_back)。
  • SCOREBOARD.md —— 生成物,人看的。

默认参数(要改就传 flag)

  • 评估窗口 --window-days 默认 7 天
  • keep/rollback 阈值 --threshold 默认 ±0.10(相对 ±10%)
  • 下判决前最少 post 数据 --min-post-days 默认 3 天
  • 回滚 永远先问,不静默

每日检查(可选调度)

/schedule daily /wjs-x-increasing-follower —— 每天调起本 skill:跑 daily-check.sh,把 SCOREBOARD.md 现状 + 任何判 ❌ rollback 的实验 发给王建硕并征求是否回滚。CSV 还是得他手动导出丢进 inbox/(ratio 数据 API 拿不到,这步绕不开)。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

王建硕的思维框架与表达方式。基于 7 份深度调研(约 100 万词英文博客 + 约 109 万字中文博客, 2002–2022,全部一手)提炼出 7 个核心心智模型、10 条决策启发式和完整的双语表达 DNA。 用途:以王建硕的身份和声音写作、回应、思考——他平实、诚恳、好奇,爱用家常比喻和自造词, 在具体和抽象之间反复架梯子,从不写自己没亲身验证过的东西。 当用户提到「用王建硕的视角」「王建硕会怎么看」「王建硕模式」「像王建硕一样写」 「Jian Shuo Wang perspective」「切换到王建硕」时使用。 即使用户只是说「帮我用王建硕的角度想想」「如果是王建硕会怎么写这篇」也应触发。 一旦激活,本次对话后续所有回应都保持王建硕身份,直到用户明确说「退出」—— 不需要每轮重新点名。 不适用:用户要的是关于王建硕本人的客观介绍 / 事实查询(「王建硕是谁」「他哪年创业的」), 那种问题正常回答即可,不要进入角色扮演。

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user asks to audit what's wrong with a project, "make it right", "看看项目出了什么问题", "为什么用户的需求还没上线", "为什么没提交App Store", "为什么没新build", or wants a holistic state-of-the-project check covering unmerged branches, stalled PRs, failed GitHub Actions, stale builds, plan drift (TODOS.md / ROADMAP), unreleased commits, and log errors. Runs read-only investigation, presents a grouped checklist, fixes only after explicit user confirmation. Aware of the Cathier iOS app workflow (Xcode + fastlane + auto-merge @claude PRs from in-app feedback).

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user has a video + an SRT and wants the subtitles either burned into the pixels (libass, always-visible) or soft-muxed as a togglable track. Also handles the final composite step for the localization pipeline — burn subs, mix a dub track, and keep the original audio as a low-volume bed, all in ONE ffmpeg encode (no cascade). Verifies libass availability and auto-downloads a static evermeet ffmpeg build when Homebrew's stripped binary lacks it. Triggers — "烧字幕", "硬字幕", "burn subtitles", "burn-in subs", "embed subtitle", "soft mux SRT", "把字幕烧进视频", "做最终合成".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user complains about spam on his X/Twitter posts — 同城面付 / 寻固炮 / 线下上门 / 免费破处 这类引流号在他推文下刷的 emoji 垃圾回复 — and wants them removed. Covers the last 7 days (X recent-search window). Triggers — "把这些spam删掉", "清理X垃圾回复", "推文下面好多引流号", "clean spam replies", "/wjs-cleaning-spam".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when the user wants a 王建硕-style WeChat article (article.md) turned into a narrated short MP4 video — TTS voiceover via 火山引擎 Volcano TTS, HyperFrames CSS/GSAP animation per scene, subtle SFX, abstract watercolor background, full pipeline rendering to 1080×1920 portrait MP4 (30-90s). Triggers — "把这篇文章做成视频", "做一个解说视频", "讲解视频", "/wjs-converting-text-to-video".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

Use when migrating a WordPress site to a Hugo static site on GitHub Pages from a WXR export (.xml) plus the wp-content/uploads folder — preserving /archives/<id>/ URLs, localizing images, and deploying via GitHub Actions. Triggers — "把 WordPress 迁成 Hugo", "wordpress 转静态站", "migrate WordPress to Hugo", "WXR to Hugo", "publish WordPress to GitHub Pages", "/wjs-converting-wp-to-hugo".

日本語の概要は準備中です。原文の説明を表示しています。

jianshuo/claude-skills1312026年8月21日 更新

jianshuo のスキルをすべて見る

このスキルの問題を報告する