Claude Skills — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Claude Skills (Plugin) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
我(王建硕)日常在 Claude Code 里用的 skills。
Auto-mirrored from~/.claude/skills/by a PostToolUse hook — 每次我编辑wjs-*skill,对应目录会被 rsync 到这里并推送到 GitHub。 Hook 源码:~/.claude/skills-publish-hook.sh
这些 skill 跑在 Claude Code 里,所以先装 Claude Code。
# 方式 1:npm 全局安装(推荐,需要 Node.js ≥ 18)
npm install -g @anthropic-ai/claude-code
claude # 启动
# 方式 2:不装,直接用 npx 跑一次
npx @anthropic-ai/claude-code
# 方式 3:原生安装脚本(无需 Node.js)
# macOS / Linux
curl -fsSL https://claude.ai/install.sh | bash
# Windows (PowerShell)
irm https://claude.ai/install.ps1 | iex装好后在任意项目目录运行 claude 即可。首次启动会引导登录(Claude 账号或 API key)。 升级:claude update(原生安装)或 npm update -g @anthropic-ai/claude-code(npm 安装)。
# 方式 1:从 ClawHub 装单个 skill
clawhub install wjs-transcribing-audio
# 方式 2:把整个仓库作为 Claude Code marketplace
claude plugin marketplace add jianshuo/claude-skills
claude plugin install wjs-transcribing-audio
# 方式 3:直接 clone 到 skills 目录
git clone https://github.com/jianshuo/claude-skills ~/.claude/skills/wjsSKILL.md 是 Anthropic 公开的 skill 格式标准(2025 年 10 月发布,2025 年 12 月被 OpenAI Codex 采纳),所以这套 skill 同样适用于:
第三方分发平台:ClawHub · SkillsMP(自动索引)
Claude Code skill 是一个带 frontmatter 的 SKILL.md 文件 + 一组脚本。当用户的请求匹配 skill 描述里的触发词("翻译字幕"、"做封面"、"上传 YouTube"……)时,Claude 会自动加载这个 skill 并按里面写的流程执行。
这套 skill 大致围绕 「视频创作 + 公众号写作」 工作流:从原始拍摄素材 → 多机位对齐 → 自动剪辑 → 翻译配音 → 后期合成 → 平台分发。每个 skill 都做一件事,可以单独调用,也可以串成完整流水线。
命名约定:所有 skill 以 动名词(V-ing) 开头 —— transcribing-audio / dubbing-video / editing-multicam —— 描述「正在做什么动作」,方便和 Claude 自动加载逻辑对齐。
把任意一个 skill 目录复制到 Claude Code 的 skills 目录即可:
# 全局安装(所有项目都能用)
cp -r wjs-transcribing-audio ~/.claude/skills/
# 项目级安装(只在当前项目可用)
cp -r wjs-transcribing-audio ./.claude/skills/装好后用触发词自然说话(如「转写这个视频」、「做 SRT」),或用斜杠命令 /wjs-transcribing-audio 显式调用。不需要重启 Claude Code,技能即时生效。
| Skill | 一句话作用 | 输入 → 输出 |
|---|---|---|
wjs-publishing-wechat | 写 / 润色 / 发微信公众号 | 草稿文本 → 排版好的 HTML + 题图 + 解释图 + 上传草稿 |
wjs-mining-articles | 从视频字幕里挖公众号文章(独白或对谈) | SRT → N 篇独立公众号文章 + 微信草稿 |
wjs-mining-voicedrop | VoiceDrop 语音备忘 → 转写 → 公众号文章草稿 | R2 收件箱 VoiceDrop-*.m4a → SRT → N 篇微信草稿 |
wjs-voicedrop | VoiceDrop MCP 的入口:完成 6+4 手机配对登录,把你接上 voicedrop.cn/mcp 的 44 个工具(文章读写与版本、文风与蒸馏、挖矿与重写、社区与投币、书架读书与写书修书等) | voicedrop / voicedrop 登录 / 接 voicedrop mcp / /wjs-voicedrop |
wjs-evaling-voicedrop-prompts | 评估 VoiceDrop 挖矿 prompt 改版:用金标集对冠军和候选做盲评对决,输出胜率报告,人工确认后才晋级生产 | 评估 prompt / 挖矿 prompt 改好了吗 / eval prompt / /wjs-evaling-voicedrop-prompts |
wjs-voicedrop-choosing-cover | 判断 VoiceDrop 文章是否需要 AI 题图,并选定风格与生成可直接用的 prompt(比例 2.45:1 / 1568×640) | 这篇要不要配题图 / 选个题图风格 / 给这篇出个题图 prompt / /wjs-voicedrop-choosing-cover |
wjs-voicedrop-post-processing | 新挖 VoiceDrop 文章后处理守护进程(launchd 每 5 分钟触发,无人值守) | /wjs-voicedrop-post-processing <stem> |
wjs-voicedrop-reading-aloud | 文字转有声书 mp3(豆包 seed-tts-2.0 多声色编排朗读,先写脚本再合成) | 做成有声书 / 朗读出来 / 读给我听 / /wjs-voicedrop-reading-aloud |
wjs-converting-text-to-video | 把公众号文章做成竖屏解说短视频 | article.md → 1080×1920 MP4(TTS + 水彩背景 + GSAP 动画) |
wjs-creating-video-book | 把一本书做成按章节的 YouTube 横屏视频:VoiceDrop 有声书 mp3 作音轨,GPT Image 2 生成配图,Ken Burns 缓推 + 中心思想大字叠加 | 书名/书架章节 → 每章一支 1920×1080 YouTube 视频 |
wjs-voicedrop-creating-motion-book | 把 VoiceDrop 书架整本书做成分章解说动画(口播=书架听书 mp3,无需重新 TTS),竖屏 9:16 默认,画风自动选型,交付 HTML 播放器 + 可选 MP4;支持 Tokyo VPS 一命令无人值守渲染后销毁 | 把这本书做成动画 / 做成艺术动画片 / motion book / /wjs-voicedrop-creating-motion-book <书名> |
wjs-transcribing-audio | 音视频转字幕(原语言) | 视频/音频 → 同语言 SRT |
wjs-translating-subtitles | 字幕翻译 + 标点重切 | A 语言 SRT → B 语言 SRT(或双语 SRT) |
wjs-dubbing-video | 文本时间对齐 TTS 配音 | 视频 + 目标语 SRT → 配好音的视频 |
wjs-burning-subtitles | 烧字幕 + 混音 + 终合成 | 视频 + SRT + (可选)dub → 上传就绪 MP4 |
wjs-localizing-video | 上面四步的总编排器 | 视频 + 目标语言 → 字幕 + 配音的本地化视频 |
wjs-syncing-multicam | 多机位音频互相关对齐 | N 个机位 → 每个机位一份 .sync.json |
wjs-editing-multicam | 多机位自动剪辑(音量切机位) | 同步过的 N 个机位 → 单条 MP4 |
wjs-segmenting-video | 长视频按话题切片 + 裁剪 | 长视频 + SRT → 3–6 个独立短片 + 各自 SRT |
wjs-overlaying-video | 后期:封面 / 字幕 / 动画 / CTA | 短片 + SRT → 带后期的成片 |
wjs-reframing-video | 横竖屏互转 + 说话人跟踪裁切 | 16:9 ↔ 9:16,4:3 ↔ 3:4 |
wjs-uploading-video | 批量上传 YouTube | MP4 (+ UPLOAD_META.md) → YouTube |
wjs-tweeting-from-articles | 从最近公众号文章萃取每日 X tweet,人工挑角度后真发 | article.md → X / Twitter |
wjs-syndicating-articles | 把最新公众号文章一键扇出到 X / Bluesky / Threads / LinkedIn + 手动平台待发件箱 | article.md → API 平台直发 + outbox |
wjs-publishing-books-to-x | 把 VoiceDrop 书架上「我写的书」逐本拆成 6–10 条 X thread 发出(首条带封面、末条讲这本书是怎么写的),launchd 每天 10:10 挑一本没发过的自动起草并发出 | voicedrop.cn/books → X thread(真发 + history.jsonl 去重) |
wjs-promoting-skills | 每日自动推广 skill → X 帖 + 社区草稿 | wjs-* skills → X tweet + outbox drafts |
wjs-x-increasing-follower | X 涨粉实验框架:带编号的 A/B 实验,以新增关注 ÷ 主页访问转化率为北极星 | X Analytics CSV → SCOREBOARD.md |
wjs-x-improving-content | 迭代改 prompt.md 提升每条推的 impression:每版 prompt 是带假设的 git SHA 版本实验 | Content CSV → 版本对比 + 内容特征 |
wjs-polishing-x-engagement | 把平淡中文 tweet 改写成"真事实 + 钩子"的高互动版本,每次给 2–3 个不同钩子的候选 | 一条中文推文 → 2–3 个改写版本 + 事实来源 |
wjs-cleaning-spam | 清理 X 推文下的同城引流 spam 回复:dry-run 预览 → 人工审 borderline → 隐藏 + 静音 | spam 回复列表 → 隐藏条数 + 静音账号数(7 天窗口内) |
wjs-auditing-project | 项目状态体检 | 一句"看看哪里出问题了" → grouped checklist |
wjs-eating-and-growing | 5 步反思框架:把"吃堑"变成 L3 权重的真实改变 | 吃亏的经历 → 堑 + 自动输出 + 旧参数 + 新参数 + 替代动作 |
wjs-teaching-english | 把一个英语单词做成 HLS 视频超剪(word + IPA + 中文解释 + 真实片段) | teach love / 学英语 <word> / /wjs-teaching-english <word> |
wjs-explaining-tv-slang | 解释美剧/英剧台词、口头语、俚语和梗:给出实际用途、语气分量、中文对应说法、使用场景,并追加记录到个人生词本 | 美剧口头语 / 台词什么意思 / 这是什么梗 / /wjs-explaining-tv-slang |
wjs-fetching-movie | 把电影清单变成 Relisten 可直接导入的 HEVC mp4(含英/中内封字幕),只用合法片源(Internet Archive 公版片、官方免费放映等) | 找电影 / 给 relisten 准备片子 / 电影列表 / /wjs-fetching-movie |
wjs-converting-wp-to-hugo | WordPress → Hugo 静态站迁移,老链接不断 | WXR .xml + uploads/ → Hugo + GitHub Pages |
wjs-publishing-hugo | Hugo 博客的对话式后台:说一句就发文/改文件/管类目,无需 CMS 或服务器 | 发一篇博客 / 博客后台 / /wjs-publishing-hugo |
wjs-looping-feedback | 给任意网站装「提个建议→Issue→Claude 自动改代码→部署」反馈闭环 | 给网站加个反馈对话框 / feedback loop / /wjs-looping-feedback |
wjs-publishing-testflight | 配置 fastlane + GitHub Actions,推 main 自动构建上传 TestFlight,每第 10 个 build 自动提审 App Store | iOS 项目 → Fastfile + build.yml + 自动 TestFlight / App Store |
wjs-publishing-appstore | iOS TestFlight build → App Store:截图 + 元数据文案 + 提审(fastlane deliver + release lane) | 提交 App Store / 准备截图和文案 / /wjs-publishing-appstore |
wangjianshuo-perspective | 切换到王建硕视角写作与思考 | "用王建硕的角度" → 以他的声音回应,直到用户说"退出" |
wjs-distilling-style | 从少量样文提炼任意作者写作指纹,再把目标文本改写成那种味道;日常用一次性 prompt 一把过,深验时开完整判官盲测闭环 | 蒸馏文风 / 把这篇改成XX的味儿 / /wjs-distilling-style |
wjs-publishing-wechat帮我写 / 润色微信公众号文章,并自动生成配套素材。
<span style="color:#ff0000;">…</span>),打在点睛句和核心概念词上;**加粗** 语法已弃用。md2wechat 上传草稿到公众号后台,自动在文末注入最近已发布文章链接列表(upload-draft.sh 驱动,支持 WECHAT_PUBLISH_NO_RECENT=1 关闭)。触发词:写一篇微信文章/公众号/润色/题图/发公众号
wjs-mining-articles把一个视频的 SRT(独白或对谈)挖掘成多篇独立的微信公众号文章。
wjs-publishing-wechat 上传),可选再排期发到 X。触发词:把这个视频写成文章/从字幕里挖文章/这个 SRT 能写几篇/把对谈写成文章//wjs-mining-articles <srt>
wjs-mining-voicedrop把 VoiceDrop iOS app 上传到 R2 收件箱(jianshuo.dev/files)的语音备忘,自动转写并挖掘成公众号文章草稿。这是 VoiceDrop 的 Mac 端闭环:开口即录、停即上传,回到桌面就有草稿等着。
wjs-transcribing-audio,成文交 wjs-mining-articles。scripts/voicedrop-inbox.sh(list / download / delete)。触发词:处理 VoiceDrop 录音/把新录音挖成文章/口述备忘变文章/处理一下我的录音//wjs-mining-voicedrop
wjs-voicedropVoiceDrop 的 MCP 接入入口。所有实际功能(文章、文风、挖矿、社区……)都在 voicedrop.cn/mcp 的 44 个 MCP 工具里;本 skill 唯一的工作是把你接上去。
list_articles、read_style、community_feed、credit_balance 等工具时,无需阅读 SKILL.md,直接调用。login 工具完成 6+4 手机配对——先用手机 设置 → 账户 里的 6 位十六进制码发第一步,手机弹出 4 位数字码后发第二步,拿到 anon_ 令牌后接进客户端。触发词:voicedrop/voicedrop 登录/接 voicedrop mcp/voicedrop token//wjs-voicedrop
wjs-evaling-voicedrop-prompts评估 VoiceDrop 挖矿 prompt 的改版是否真的更好。用一组金标集对「冠军 prompt」(当前生产版)和「候选 prompt」(改版)跑相同输入,派盲评裁判 agent 做成对比较,汇总胜率报告——胜率 ≥ 70% 且无确定性回退,才在用户确认后晋级生产。
references/judge-rubric.md):结构完整性、王建硕文风还原、事实骨架保留、句子节奏、段落密度——每维 1–5 分 + 理由。mine.js 后自动跑 npm test 确认无破坏。触发词:评估 prompt/挖矿 prompt 改好了吗/eval prompt/比一比两版 prompt//wjs-evaling-voicedrop-prompts
wjs-voicedrop-choosing-cover给一篇 VoiceDrop 文章做两个决定:配不配题图,以及用哪种风格的 prompt 生成。
[[photo:KEY]] 实拍且与主题相关 → 直接指出用哪张当封面,不写 AI prompt。触发词:这篇要不要配题图/选个题图风格/给这篇出个题图 prompt/choosing cover//wjs-voicedrop-choosing-cover
wjs-voicedrop-post-processingVoiceDrop 新文章的自动后处理——由 launchd com.jianshuo.voicedrop-postprocess 每 5 分钟轮询触发,以文章 stem 为参数无人值守地运行。
claude -p(headless)调用,voicedrop MCP 预先接好;读文章 / 写版本工具可用,发布、删除类工具在调用方已禁用。postprocess ok: <stem> — <标题>(<字数>字)。触发词:/wjs-voicedrop-post-processing <stem>(守护进程直接调用,不走自然语言触发)wjs-voicedrop-reading-aloud把文字(段落、文件、URL 或 VoiceDrop 文章)重写成有声书朗读脚本,再用火山引擎豆包 seed-tts-2.0 合成 mp3。核心不是照字念,而是编排:不同性质的内容(正文叙述、引用、大白话吐槽)分配不同音色,关键转折处加表演指令,合成后 SendUserFile 发回。
~/code/volcano-tts/tts.py --script 模式,支持 @voice 声道切换和 [表演指令] 嵌入;只用 _uranus_bigtts 后缀音色(seed-tts-2.0),裸 API 会把标注原样念出来。afinfo out.mp3 对时长;疑似标注被念出来时用 ASR 抽查。触发词:做成有声书/朗读出来/读给我听/念出来/read aloud//wjs-voicedrop-reading-aloud
wjs-converting-text-to-video把一篇公众号 article.md 做成 1080×1920 竖屏、30–90 秒 的中文解说短视频,直接发视频号 / 抖音 / 小红书 / YouTube Shorts。
zh_male_ahu_conversation_wvae_bigtts),5–10 个 narration chunk,每段 3–12 秒bg.png(6 种 theme 可选:tech / personal / reflection / growth…),blur 30 柔化后作全片基底#Shorts触发词:把这篇文章做成视频/做一个解说视频/讲解视频//wjs-converting-text-to-video
wjs-creating-video-book把一本书做成 按章节的 1920×1080 横屏 YouTube 视频,给"听书"的观众。
style.md 统一媒介、色调、光线气质,章与章之间画风一致。触发词:把这本书做成视频/有声书做成视频/讲书视频/book video//wjs-creating-video-book <书名>
wjs-voicedrop-creating-motion-book把 VoiceDrop 书架上的整本书做成分章解说动画。口播直接用书架「听本章」那份完整朗读 mp3(不另写稿、不新花 TTS 钱),画面由 Canvas 逐帧动画引擎生成,画风按书的内容气质自动选型(已有套件 kurzgesagt / banknote 可直接复用)。
bash cloud/run_book.sh <slug> 开 Vultr 机器 → Claude Code 自动做到 HTML → 发布到书架 /books/<slug>/video/ → 销毁机器,整本约 1–2 小时。voicedrop.cn/books/<slug>/video/ 会自动触发后台下单,书架已有时直接播放;lab.jianshuo.dev/api/video-book?slug= 可查进度。触发词:把这本书做成动画/做成艺术动画片/读书动画/听书配动画/motion book//wjs-voicedrop-creating-motion-book <书名>
一条 「转写 → 翻译 → 配音 → 烧字幕」 的四步流水线。每一步都是独立 skill,可以单独跑,也可以让 wjs-localizing-video 这个 orchestrator 串起来跑完整流程。
| 步骤 | Skill | IN | OUT |
|---|---|---|---|
| ① 转写 | wjs-transcribing-audio | 音/视频 + 源语言 | 源语言 SRT |
| ② 翻译 | wjs-translating-subtitles | 源语言 SRT + 目标语言 | 目标语言 SRT(标点重切) |
| ③ 配音(可选) | wjs-dubbing-video | 视频 + 目标语 SRT + 音色 | 替换音轨的视频 |
| ④ 烧字幕 / 终混(可选) | wjs-burning-subtitles | 视频 + SRT (+ 可选 dub) | 一次编码完成的最终 MP4 |
wjs-transcribing-audio中文走豆包(Volcano)ASR,其它语言走 OpenAI Whisper word-level timestamps + 自己重新组装 cue。所有 cue 都按标点切,避免句子被切到一半。
wjs-translating-subtitles纯文本,不碰音视频。简体中文 / 英文是 first-class targets。重切逻辑保证每条字幕都在真正的句号 / 问号 / 感叹号处结束。可输出单语 SRT 或双语 SRT。
wjs-dubbing-video按 voice ID 路由:中文 → 豆包 TTS,其它语言 → edge-tts neural。默认单说话人,opt-in 视觉 diarization 做多说话人多音色。只产出 dub 音轨,不做最终合成。
wjs-burning-subtitles本地化流水线的终点。一次 ffmpeg 编码同时做:烧字幕(libass)、把 dub 混进来、把原音降低音量作为底噪保留。不走级联——避免多次重编码掉画质。当 Homebrew 的 ffmpeg 不带 libass 时,会自动下载 evermeet 的静态构建。
wjs-localizing-video(orchestrator)当用户说 「完整本地化」 时用这个总编排器。单步需求请直接用上面四个之一 —— boundary 更清楚也更快。
wjs-syncing-multicam同一事件、不同设备拍的 N 路素材,用 音频互相关 算出每个文件相对共同时间轴的偏移。实现由开源的 [`polysync`](https://pypi.org/project/polysync/) pip 包承载(pip install polysync),通过 polysync sync 命令驱动。
_synced.MOV,只输出每个原始文件旁边一份 .sync.json。原片永不被改写、不被复制、不被重编码。a:0/a:1 静音的边界情况)。ffmpeg -itsoffset 在消费侧应用偏移;polysync verify 做独立残差校验。wjs-editing-multicam读 sidecar,自动剪辑成单条 MP4。决策完全由 每秒音频能量 驱动 —— 哪个机位的麦最响,就切到哪个。实现由 [`polysync`](https://pypi.org/project/polysync/) 驱动(polysync edit 生成 EDL,polysync render-cuts / render-pip 渲染)。
render-pip)。--duck-audio 说话人门控混音——每秒保留当前说话人的领夹麦、压低其余麦,消除串音和底噪。--audio-cams 限定门控范围,排除宽景/空间感声道。--log slog3)、逐机位旋转(--rotate 1:90)、竖屏输出(--width 1080 --height 1920 --fill)。wjs-overlaying-video 或 HyperFrames 的事。wjs-segmenting-video长访谈 / 讲座 / 播客 → 3–6 段独立可看的短片。
5 步流水线(每步也能独立跑):
只做切 + 裁 —— 封面 / 字幕 / 动画 / CTA 交给下游 `wjs-overlaying-video`。
wjs-overlaying-video视频后期。基于 HyperFrames —— 一个 HTML/CSS 的视频合成框架。在同一份 HyperFrames 工程里加:
所有元素在一次最终编码里渲染,不做级联。
wjs-reframing-video横竖屏互转 —— 裁切 而不是缩放或加黑边。
.crop.json 记录裁切计划,原片不动wjs-uploading-video批量上传成片到 YouTube(王建硕频道)。
UPLOAD_META.md 拿每个视频的 title / description / tags(用户自定义的 markdown 格式)requests 做 resumable upload,避开 google-api-python-client 的 MediaFileUpload 在该代理下卡死的问题wjs-tweeting-from-articles每天一条 X tweet,灵感直接从最近发布的公众号文章里萃取。
xurl POST /2/tweets),记录到 state/history.jsonl 防重复--dry-run 预览不发;支持 /schedule daily 自动触发触发词:今天的 tweet/从文章里发推/每天发一个 tweet//wjs-tweeting-from-articles
wjs-syndicating-articles把最新一篇还没分发过的公众号文章,一套文案扇出到所有平台。
outbox/ 目录,复制粘贴即可):Facebook / 小红书 / 即刻 / 知乎state/history.jsonl 记录每篇文章在每个平台的发布状态,重复跑只补发没成功的--dry-run 预览;--mark <slug> <platform> 手动标记已发;--open 交互模式开浏览器触发词:分发文章到各平台/同步到社交平台/今天的文章发各平台//wjs-syndicating-articles
wjs-publishing-books-to-x把 VoiceDrop 书架(voicedrop.cn/books)上王建硕自己写的书逐本发成 X thread。一本一 thread,首条带封面 + 钩子,中间按书的脉络抠 6–10 条硬内容,最后一条讲「这本书是怎么用 VoiceDrop 写出来的」——不写营销词,讲真实过程。
author == "王建硕" 或 author 为空(早期未署名)算我的;社区书架上署名蜜蜡 / Dennis / sissi 等的书自动跳过,不替别人代言。state/history.jsonl 记录每本书的 thread 首条 id,重跑自动跳过已发;任一条 tweet 失败就停在原地报错,绝不断链跳过。com.jianshuo.wjs-publishing-books-to-x 每天 10:10 挑最新一本没发过的书 → claude -p 起草 → 校验长度 → 链式发出;书发完了自动歇着。DRY_RUN=1 daily.sh 预览不发。触发词:把书发到 X/发书的 thread/publish my book to X/书架的书发推//wjs-publishing-books-to-x
wjs-promoting-skills每天 04:00 自动推广 skill:挑一个 wjs-* skill → 生成今日推广角度 → 发到 X(Twitter)→ 把 Reddit / HN / Discord 草稿落到 outbox/ 等人工 review。
DRY_RUN=1 daily.sh 可以预览而不真发;uninstall.sh 随时停掉 launchd 定时任务。触发词:推广 skills/skill marketing/promote my skills/每天自动推广
wjs-teaching-english把一个英语单词做成 HLS "超剪" 课程,从 mira 视频库里找出所有含该单词的 season2 片段,拼成一个完整的 .m3u8 播放列表。
.ts,其余直接引用 COS 上的原始片段,减少重编码触发词:teach <word>/讲讲 <word>/学英语 <word>/把 <word> 做成视频//wjs-teaching-english <word>
wjs-explaining-tv-slang解释美剧/英剧台词、口头语、俚语和梗,让用户真正懂「这句话在那一刻干了什么」——而不只是字面意思。
~/code/tv-slang/notebook.md;用户说「复习」时随机抽题考察触发词:美剧口头语/台词什么意思/这是什么梗/这个口头语怎么用//wjs-explaining-tv-slang
wjs-fetching-movie把一份电影清单变成 Relisten 可直接导入的 HEVC mp4 文件,每部归档到 ~/Movies/Relisten/<片名> (<年份>)/,内封英文(默认)+ 中文字幕轨。
yt-dlp 下载)。找不到合法片源就如实报告,给正规获取路径,绝不走种子 / 磁力 / 破解 DRM。hevc_videotoolbox -q:v 55、hvc1 tag(QuickTime/AVPlayer 直接播)、AAC 128k 双声道(避免 5.1 丢中置对白),目标 90 分钟片约 1–2GB。ffprobe 确认轨道语言 + 时长一致;抽 3 个时间点核对字幕和语音对齐。ia_search.py(Internet Archive 搜索)/ opensubs.py(OpenSubtitles 精确匹配)/ pack.sh(压制 + 封装)。触发词:找电影/下载这几部电影/给 relisten 准备片子/电影列表//wjs-fetching-movie
wjs-auditing-project当我说 "看看项目出了什么问题" / "为什么用户的需求还没上线" / "为什么没提交 App Store",跑这个 skill。
wjs-eating-and-growing(吃一堑长一智)当我反思一个失误、反复犯的错,或者"知道道理但做不到",走这五步。
触发词:反思/复盘/吃一堑/这次又栽了/为什么我总是…/知道道理但做不到
wangjianshuo-perspective以王建硕(Jian Shuo Wang)的身份和声音写作、回应、思考。基于约 100 万词英文博客 + 约 109 万字中文博客(2002–2022,全部一手)提炼出 7 个核心心智模型、10 条决策启发式和完整的双语表达 DNA。
yuanqi-prompt.md —— 为元器(Yuanqi)平台精简版的人设 prompt触发词:用王建硕的视角/王建硕会怎么看/像王建硕一样写/Jian Shuo Wang perspective/切换到王建硕
wjs-distilling-style从少量样文提炼任意作者的写作指纹,再把目标文本改写成那种味道——任何作者都适用,不限于王建硕。
references/oneshot-prompts.md 提供两段自包含提示词——Prompt A(Style Card + 目标文章 → 改写稿)和 Prompt B(样本文章 → Style Card)——内嵌 9 轴指纹、事实骨架纪律和 AI 露馅 6 条反制,把多轮判官循环压缩成一轮内联自检,够用、一把过。~/code/style-cards/<author>/style-card.md)/ 改写(目标文本 + Style Card → 改写稿,不达标最多 2–3 轮回炉)。样本 < 3 篇会明确提示用户指纹会不稳。~/code/style-cards/),不同步到公开 repo,防止他人稿件外泄。触发词:蒸馏文风/提炼XX的风格/把这篇改成XX的味儿/mimic this writer/match this author's style//wjs-distilling-style
wjs-x-increasing-follower把「涨粉」当工程做:每个改动是带编号的实验,有假设、有目标指标、有 before 可回滚、有判决。不靠感觉,靠数。
daily-check.sh 自动 ingest + 算判决。触发词:涨粉/X 涨粉实验/A/B 测我的 profile/今天的涨粉检查//wjs-x-increasing-follower
wjs-x-improving-content把「写好推」当工程做:不断改 prompts/x/prompt.md,用 impression 数据看哪版最好,挖出内容特征反哺下一版。是 wjs-x-increasing-follower 的孪生——那个测 profile→关注转化,这个测 prompt→每条推的 impression。
inbox/ 目录)。触发词:改 X 的 prompt/X 内容改进/哪版 prompt 最好/什么内容 impression 高//wjs-x-improving-content
wjs-polishing-x-engagement把一条平淡的中文推文改写成"有真实事实支撑 + 带互动钩子"的高参与度版本,每次给 2–3 个钩子不同的候选。核心是两件事叠加:一个真事实(用 web_search 现查,绝不编造)+ 一个钩子(留缺口让读者忍不住接话)。
image_search 找出来给用户。触发词:润色这条推/改写这条推文/让它更有互动/涨互动/帮我把这条发得更好//wjs-polishing-x-engagement
wjs-cleaning-spam清理挂在王建硕 X/Twitter 推文下的同城引流 spam 回复。X API 只允许串主 隐藏回复(访客不可见)和 静音账号(通知静音),block 端点已从 API 下线,拉黑只能网页手动。
state/cleaned.jsonl 记录已处理 id,重跑自动跳过;撞 429 限流(约 50 次/15 分钟)脚本自动停,等窗口刷新后续跑触发词:把这些spam删掉/清理X垃圾回复/推文下面好多引流号/clean spam replies//wjs-cleaning-spam
wjs-publishing-hugoHugo 博客的对话式后台。没有 CMS,没有 /admin 页面——说要发什么,Claude 就改 content/、放图、commit、push,走仓库现有部署流自动上线。先做前置检测(确认 hugo.toml 和现有帖子 front matter 格式),再动手,格式不漂。
scripts/new-post.py(生成标准 front matter,日期/URL/类目一次到位)scripts/categories.sh 列现有类目,防止造重复;批量改名/合并类目也支持scripts/add-image.py,新图进 static/uploads/<年>/,超 2000px 宽自动缩小scripts/publish.sh commit + push,触发 GitHub Actions 自动部署触发词:发一篇博客/给 Hugo 加文章/写篇帖子到博客/博客后台//wjs-publishing-hugo
wjs-converting-wp-to-hugo把任意 WordPress 站迁成 Hugo + Markdown + git 静态站,部署到 GitHub Pages。全程离线、零第三方依赖。
.xml + 站点 wp-content/uploads/ 文件夹。content/*.md + static/wp-content/uploads/ + 手写极简主题,Hugo 构建,GitHub Actions 自动发布。/archives/<数字>/ 格式,SEO 和外部引用不受影响。gitignore 已根锚定,绝不进 git 历史。密码保护文章和脚手架页的处理方式必须由用户决定,不静默发布。wxr_to_hugo.py 是纯函数,test_wxr.py 先跑测试再全量转换;verify_build.py 断言每个老链接都命中。触发词:把 WordPress 迁成 Hugo/wordpress 转静态站/migrate WordPress to Hugo/WXR to Hugo//wjs-converting-wp-to-hugo
wjs-looping-feedback给任意网站装「提一句话就自动改代码」的反馈闭环。完全跑在仓库所有者自己的 GitHub Actions 上,用自己的 Pro/Max OAuth token 或 ANTHROPIC_API_KEY,无需任何第三方服务或后端。
工作流:访客点浮动「提个建议」按钮 → 填建议 → 变成 GitHub Issue(feedback 标签)→ allowlist 检查(只有白名单用户能触发)→ Claude Code 按 .feedback/INSTRUCTIONS.md 改网站 → 自动 commit 到 main → 触发部署上线 → /_feedback 仪表板记录每条建议的处理状态 + issue 回复 commit 链接。Revert:发一条 revert: #N issue 即可。
支持 Hugo / Next.js / Astro / 静态站。
触发词:给网站加个反馈对话框/提一句话就自动改网站/装上反馈闭环/feedback loop//wjs-looping-feedback
wjs-publishing-testflight为任意 iOS 项目配置 fastlane + GitHub Actions CI/CD,基于 Cathier 项目的实战模板。
main 分支 → GitHub Actions 在 macos-15 (Xcode 26.2) 上自动构建match(只读)签名,导出 app-store IPAtestflight/<build_num> tagbuild_num % 10 == 0)自动 bump minor 版本并提审 App Store;或开发者手动改 MARKETING_VERSION 触发;CI 永不静默 commit pbxprojbeta(日常 CI)/ bump(本地版本升级)/ release(强制立即提审)Appfile / Matchfile / Fastfile / Gemfile 模板和 build.yml workflow,只需全局替换三个占位符(bundle ID、repo 名、Xcode scheme)触发词:testflight/fastlane/自动构建/CI TestFlight//wjs-publishing-testflight
wjs-publishing-appstorewjs-publishing-testflight 的配套技能——接过 CI/CD 之后的那一步:把 TestFlight 上已有 build 的 iOS app 正式提交 App Store。
scripts/scaffold-metadata.sh 搭 deliver 元数据骨架(VoiceDrop 模板起步)→ scripts/shoot.sh 用 simctl 截图(iPhone 6.9" 为唯一必要尺寸,每 locale 一轮)→ scripts/release_lane.rb 粘入 Fastfile 加 release lane → fastlane release 提审。name 字段全局唯一(显示名,非 bundle ID)——短常用名几乎必然被占,要加词或中文后缀;是可改的,不是永久锁死的。simctl privacy grant 无法抑制(手动点一次 Allow,之后重跑截图脚本即是干净画面);TabView 标签栏附近会出现 Liquid Glass 幻影(device only 没有,不必追查)。beta lane 上传并等 Apple 处理完毕 → 再触发 fastlane release skip_build:true 复用已处理的 build,避免提审时 build 还在 processing 的竞争条件。触发词:提交 App Store/上架/app store 审核/准备截图和文案/submit for review//wjs-publishing-appstore
完整本地化一个西班牙语播客 → 中文版上 YouTube:
源视频
└─ wjs-transcribing-audio → 西语 SRT
└─ wjs-translating-subtitles → 中文 SRT
└─ wjs-dubbing-video → 中文配音的视频
└─ wjs-burning-subtitles → 烧字幕 + 混音 → 最终 MP4
└─ wjs-uploading-video → YouTube或者一句话:/wjs-localizing-video 把上面四步串起来跑。
双机位访谈 → 抖音 + YouTube 双版本:
两路 MOV
└─ wjs-syncing-multicam → 两份 .sync.json
└─ wjs-editing-multicam → 单条 16:9 MP4
├─ wjs-segmenting-video → 4 个独立话题 clip
│ └─ wjs-overlaying-video → 加封面 + 字幕 + CTA
│ └─ wjs-uploading-video → YouTube
└─ wjs-reframing-video → 9:16 竖屏版本 → 视频号 / 抖音写公众号文章并做成视频:
草稿 → wjs-publishing-wechat → 题图 + 解释图 + HTML + 上传草稿 → mp.weixin.qq.com 后台微调发布
└─ wjs-converting-text-to-video → 1080×1920 MP4(TTS + 水彩背景 + GSAP 动画)
└─ 日推 cron → YouTube Shorts欢迎提 Issue 或 PR。新增 skill 的要求:
wjs-doing-something),加 wjs- 前缀与本仓库风格保持一致。SKILL.md,frontmatter 里写 name 和 description(含具体触发词/例句),正文写清楚 when to use / when NOT to use / 执行步骤。有问题或建议,请到 Issues 反馈。
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.