wjs-publishing-books-to-x

wjs-publishing-books-to-x is a skill for Claude Code, Codex from jianshuo/claude-skills. It costs 97 tokens per session (2,012 once invoked), scanned A, original, MIT.

A workflow for turning books from the VoiceDrop online bookshelf into X (formerly Twitter) threads, with one thread per book. It selects the author's books, skips books already published, and follows the book's existing structure.

In plain words
What is it for?
Use it to publish book summaries and the real VoiceDrop writing process as 6–10-post X threads, including the cover and reading links.
Why use it?
It removes the work of choosing unpublished books and manually breaking a complete book into a thread. It also separates the author's books from books written by other users.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: reads .claude/ paths.

Good fit Use it to publish book summaries and the real VoiceDrop writing process as 6–10-post X threads, including the cover and reading links.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/jianshuo/claude-skills/wjs-publishing-books-to-x
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add jianshuo/claude-skills --skill wjs-publishing-books-to-x
Clone the repo
git clone --depth 1 https://github.com/jianshuo/claude-skills

Made for: Claude Code, Codex.

Its marketplace also offers this one on its own, as the plugin wjs-publishing-books-to-x/plugin install wjs-publishing-books-to-x after adding the marketplace above.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for wjs-publishing-books-to-x

README.md
[![agentmods](https://agentmods.dev/badge/skills/jianshuo/claude-skills/wjs-publishing-books-to-x/github.svg)](https://agentmods.dev/skills/jianshuo/claude-skills/wjs-publishing-books-to-x)
Your own site
<a href="https://agentmods.dev/skills/jianshuo/claude-skills/wjs-publishing-books-to-x"><img src="https://agentmods.dev/badge/skills/jianshuo/claude-skills/wjs-publishing-books-to-x/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for wjs-publishing-books-to-x

Your own site · 80×15
<a href="https://agentmods.dev/skills/jianshuo/claude-skills/wjs-publishing-books-to-x"><img src="https://agentmods.dev/badge/skills/jianshuo/claude-skills/wjs-publishing-books-to-x.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 97 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,012 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 2 findings, up to medium

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • medium Rogue Agent · line 99
    Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
    Fix: Remove any persistence mechanisms (cron jobs, startup scripts, state files). Skills should not maintain state across sessions without explicit user consent.
  • medium Rogue Agent · line 118
    Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
    Fix: Remove any persistence mechanisms (cron jobs, startup scripts, state files). Skills should not maintain state across sessions without explicit user consent.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00097 $0.02012
Opus 5 $0.00048 $0.01006
Sonnet 5 $0.00019 $0.00402
Haiku 4.5 $0.00010 $0.00201

Measured 13d ago against content hash fcd4d39563d7, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

wjs-publishing-books-to-x scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 13d ago.

The scan reads SKILL.md. This mod also ships 3 executable files (daily.sh, scripts/fetch-book.py, scripts/pick-next-book.sh), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

curl -s -o /tmp/cover.jpg "https://voicedrop.cn/books/$SLUG/cover.jpg"
wjs-publishing-books-to-x/SKILL.md · 133 lines

How it starts

The opening of the file, as written. The whole thing — 133 lines — stays where its author put it; the contents beside it link to each section on GitHub.

wjs-publishing-books-to-x

把 VoiceDrop 书架上我写的书,一本一个 thread 发到 X。首条钩子 + 封面图,中间按书的脉络走,最后一条讲这本书是怎么用 VoiceDrop 写出来的

Core Principle

一本书 = 一个 thread。 书已经是成品,thread 是它的预告片——从章节梗概和正文里最硬的内容,不重新构思、不写营销腔。

只发我的书。 书架是社区书架,上面有别的用户写的书,发出去就是替别人代言,绝对不行。

Workflow

Step 1: 列我的书,排除已发过的

mcp__voicedrop__list_books   # 公开书架,免登录
  • hidden 的书(book.json 里 hidden: true)服务端已滤掉,不用再处理
  • 我的书判定author == "王建硕" 或为空(早期的书没署名,都是我的)→ 是我的。其他署名(蜜蜡 / Dennis / sissi / …)→ 别人的书,不发
  • 对照 state/history.jsonl 排除已发过的,列出剩余清单让用户挑。用户点名某本 → 直接用那本。

Step 2: 读书

mcp__voicedrop__read_book <slug>            # 目录 + 每章梗概 + 一句话简介
mcp__voicedrop__read_book_chapter <slug> intro   # 序章;再挑 1-2 个最有料的章读正文

梗概给骨架,正文给 quotable 的细节(数字、比喻、反直觉的断言)。

Step 3: 拆 thread(结构合同)

内容
1 钩子:书的核心断言或问题 + 书名,配封面图 https://voicedrop.cn/books/<slug>/cover.jpg
2 … N-2 按书的脉络每条讲透一个点,从梗概/正文里抠。总共 6–10 条
N-1 全书免费读:https://voicedrop.cn/books/<slug>/
N(必须) 这本书怎么写的:真实过程——在 VoiceDrop 丢了一句什么中心思想(seed),书自己长出来、逐章补齐、不满意的地方一句话修书。落 voicedrop.cn

硬约束:每条加权 ≤280(中文每字算 2),buffer 到 ~120 汉字。王建硕语气:平实、家常比喻。无 hashtag、无 emoji、无 @。链接只出现在 N-1 和 N 两条。盘古之白。

Step 4: 过目

整串列给用户确认(每条标序号 + 字数)。用户说过 --yes 或明确「直接发」才跳过。

Step 5: 发(xurl 链式)

SLUG=<slug>
curl -s -o /tmp/cover.jpg "https://voicedrop.cn/books/$SLUG/cover.jpg"
MEDIA_ID=$(xurl media upload --category tweet_image --media-type image/jpeg /tmp/cover.jpg \
  | grep -oE '"media_id_string":"[0-9]+"' | grep -oE '[0-9]+')
# 注意:不带 --category tweet_image 会按视频处理,media id 无效

# 首条(带图)
resp=$(xurl -X POST -d "$(jq -nc --arg t "$T1" --arg m "$MEDIA_ID" \
  '{text:$t, media:{media_ids:[$m]}}')" /2/tweets)
# X 返回的 text 里有裸换行,jq 会拒;grep 抠 id
PREV=$(printf '%s' "$resp" | grep -oE '"id":"[0-9]+"' | head -1 | grep -oE '[0-9]+')
[[ -n "$PREV" ]] || { echo "POST failed: $resp"; exit 1; }

# 2…N 条依次 reply 上一条,条间 sleep 5
resp=$(xurl -X POST -d "$(jq -nc --arg t "$TN" --arg r "$PREV" \
  '{text:$t, reply:{in_reply_to_tweet_id:$r}}')" /2/tweets)

Read the full file on GitHub · 133 lines

Files

What ships with it

5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 13d ago First seen · 133 lines · 97 tokens per session scan A fcd4d39563d7

Subscribe to this mod's changes

wjs-publishing-books-to-x is a skill published in the GitHub repository jianshuo/claude-skills (129 stars, last pushed 23d ago), licensed MIT. It adds 97 tokens to every session and 2,012 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

exploratory-data-analysis

Perform bounded, local exploratory analysis of explicitly supported scientific files. Use for redacted CSV/TSV/JSON profiles; optional NumPy, HDF5, FASTA/FASTQ, and basic image metadata inspection; missingness/leakage audits; outlier and transformation sensitivity; and rigorous EDA report scaffolds. Other domain…

K-Dense-AI/scientific-agent-skills · 83 tokens

google-ads-audit

Google Ads account audit and business context setup. Use for account-health audits and business-context setup. Trigger on "audit my ads", "ads audit", "set up my ads", "onboard", "account overview", "how's my account", "ads health check", "what should I fix in my ads", or when the user is new to NotFair and hasn't run…

nowork-studio/notfair-plugin · 86 tokens

data-charts-tako

Search and visualize the world's data - get charts, insights, and embeddable knowledge cards for finance, economics, demographics, sports, and more.

gooseworks-ai/goose-skills · 35 tokens

webhook-management

Configure and validate CCAM webhook targets across supported chat, incident, automation, and generic providers. Use when listing provider requirements, creating or updating a target, scoping it to alert rules, sending a test notification, reviewing delivery history, or deleting a target.

hoangsonww/Claude-Code-Agent-Monitor · 56 tokens

gesellschaftsrechtliche-satzungen-agb

Für Gesellschaftsrechtliche Satzungen AGB Abgrenzung: ordnet Norm, Beweislast und Gegenargument; Ergebnis: Prüfprodukt mit Risiko und nächstem Schritt. Fachgebiet: AGB-Recht-Prüfer. Route: gesellschaftsrechtliche-satzungen-agb.

Klotzkette/claude-fuer-deutsches-recht · 69 tokens

master-yinguang

A reference-based assistant for questions about Yinguang and Pure Land Buddhism, a Buddhist tradition focused on faith, ethical living, and practice connected with rebirth in the Pure Land. It can answer in Yinguang’s historical teaching style.

xr843/Master-skill · 274 tokens