Hook Writer Sms
blacktwist/social-media-skills
When the user wants help writing opening lines, hooks, first sentences, video hooks, thumbnails titles, or pin titles that grab attention.
A skill your agent uses when the user wants to post a daily X/Twitter tweet inspired by one of their recently-published 微信公众号 articles.
$ npx skills add jianshuo/claude-skills --skill wjs-tweeting-from-articles -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jianshuo/claude-skills wjs-tweeting-from-articles --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/wjs-tweeting-from-articles .claude/skills/wjs-tweeting-from-articles && rm -rf skills-srcUse ~/.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/
Install the "wjs-tweeting-from-articles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-tweeting-from-articles into .claude/skills/wjs-tweeting-from-articles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-tweeting-from-articles", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jianshuo/claude-skills/tree/main/wjs-tweeting-from-articlesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jianshuo/claude-skills --skill wjs-tweeting-from-articles -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jianshuo/claude-skills wjs-tweeting-from-articles --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/wjs-tweeting-from-articles .agents/skills/wjs-tweeting-from-articles && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "wjs-tweeting-from-articles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-tweeting-from-articles into .agents/skills/wjs-tweeting-from-articles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-tweeting-from-articles", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jianshuo/claude-skills --skill wjs-tweeting-from-articles -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jianshuo/claude-skills wjs-tweeting-from-articles --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/wjs-tweeting-from-articles .cursor/skills/wjs-tweeting-from-articles && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "wjs-tweeting-from-articles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-tweeting-from-articles into .cursor/skills/wjs-tweeting-from-articles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-tweeting-from-articles", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jianshuo/claude-skills.git --path wjs-tweeting-from-articles--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jianshuo/claude-skills --skill wjs-tweeting-from-articles -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jianshuo/claude-skills wjs-tweeting-from-articles --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/wjs-tweeting-from-articles .gemini/skills/wjs-tweeting-from-articles && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "wjs-tweeting-from-articles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-tweeting-from-articles into .gemini/skills/wjs-tweeting-from-articles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-tweeting-from-articles", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jianshuo/claude-skills wjs-tweeting-from-articlesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jianshuo/claude-skills --skill wjs-tweeting-from-articles -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/wjs-tweeting-from-articles .github/skills/wjs-tweeting-from-articles && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "wjs-tweeting-from-articles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-tweeting-from-articles into .github/skills/wjs-tweeting-from-articles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-tweeting-from-articles", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jianshuo/claude-skills --skill wjs-tweeting-from-articles -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jianshuo/claude-skills wjs-tweeting-from-articles --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jianshuo/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/wjs-tweeting-from-articles .opencode/skills/wjs-tweeting-from-articles && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "wjs-tweeting-from-articles" agent skill from https://github.com/jianshuo/claude-skills/tree/main/wjs-tweeting-from-articles into .opencode/skills/wjs-tweeting-from-articles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wjs-tweeting-from-articles", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
wjs-tweeting-from-articlesA skill your agent uses when the user wants to post a daily X/Twitter tweet inspired by one of their recently-published 微信公众号 articles.
Wjs Tweeting From Articles is an agent skill from jianshuo/claude-skills. Use when the user wants to post a daily X/Twitter tweet inspired by one of their recently-published 微信公众号 articles. Picks the newest article that hasn't been tweeted yet, drafts 3 tweet candidates from it (different angles — quote / metaphor / one-liner), posts the chosen one via xurl, records to history. Triggers — "每天发一个 tweet", "从文章里发推", "今天的 tweet", "/wjs-tweeting-from-articles".
Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including scripts (for example `daily.sh`, `scripts/mirror-articles.py` and `scripts/pick-next-article.sh`).
It sits in Writing & Content, covering Social media posts. It works with X (Twitter). The repository describes itself as: 13 Claude Code skills for video production (transcribe / translate / dub / multicam / subtitles / reframe) + WeChat publishing. Compatible with Claude Code, OpenAI Codex CLI… The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b2690f5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Shell and Python), which the agent can run.
Shell commands in SKILL.md call:
jqbashFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
x.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Wjs Tweeting From Articles loads about 1.3k tokens when it runs. Until then it costs about 103 tokens; SKILL.md has 257 words of instructions outside code blocks.
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.
The automated check found no risky patterns in SKILL.md.
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); the scripts in this folder are not scanned.
The full file from jianshuo/claude-skills at commit b2690f5, republished under its MIT licence (© jianshuo). 257 words, ~1,318 tokens.
.claude/skills/wjs-tweeting-from-articles/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.每天一条 X tweet,灵感直接从最近发的公众号文章里抠。文章是源头,tweet 是更短的萃取。
文章已经过了一轮王建硕式的精炼,tweet 只是再短一格的版本。 不要重新构思——从 article.md 里直接抠最 quotable 的一句 / 一段,按 X 的节奏切。
一天最多一条,一篇文章只推一次。 状态文件 state/history.jsonl 记录哪些 article 已经推过;不重复。(例外:批量排期模式——一次把多篇排进队列、按每 N 小时一条自动发,见下文。)
真发,不暂存。 用户确认后立刻 xurl POST。失败原文 dump 给用户重试。
/wjs-tweeting-from-articles/schedule daily /wjs-tweeting-from-articles 之后每天自动调xurl POST /2/tweets 即可/publish-skill 或 /wjs-promoting-skillsscripts/pick-next-article.sh输出最新一篇还没推过的文章的 folder 路径(最近一周内,按日期倒序找第一个未推的)。已经全推完 → 退出 0、空输出,告诉用户「最近 7 天的文章都推过了,今天 rest day」。
如果用户想推特定那一篇:跳过此脚本,直接用 <folder>。
读 <folder>/article.md,按下面三个角度各起草一条:
| 角度 | 选材 | 例子 |
|---|---|---|
| A · 金句 | 从文中挑一句最 quotable 的,可以加一句铺垫 | "笔头钝了,写不出锋——蘸点墨,在砚台上转两圈,重新有了尖。" |
| B · 比喻 | 文章的核心比喻 + 一句把比喻落到读者头上 | "写 prompt 跟画画一样,是手感活儿。每天都得写点。" |
| C · 反差 | 「不是 X,是 Y」式的认知翻转 | "不是变聪明,是手感来了。" |
长度硬约束:tweet ≤ 280 字符(X 限制;中文每字算 2)——所以中文 tweet 实际 ≤ 140 字。留 buffer 到 120 字以内比较稳。
风格:保留王建硕语气——平实、家常比喻、不写营销腔。不要加 hashtags、不要加 @、不要加 emoji(除非原文有)。不要加 mp.weixin 链接(默认);如果用户问要不要带链接,提示可以 reply 里附。
用 AskUserQuestion 给出 A/B/C 三条候选 + 「四选其他」。用户选一条之后进入 Step 4。
TWEET_TEXT='<picked text>'
JSON=$(jq -nc --arg text "$TWEET_TEXT" '{text:$text}')
resp=$(xurl -X POST -d "$JSON" /2/tweets)
# Don't use `jq -r '.data.id'` here — X API returns raw newlines in the echoed
# `text` field, which strict jq rejects with "control characters must be escaped".
# Grep the id directly instead.
TWEET_ID=$(printf '%s' "$resp" | grep -oE '"id":"[0-9]+"' | head -1 | sed -E 's/.*"([0-9]+)".*/\1/')
[[ -n "$TWEET_ID" ]] || { echo "POST failed: $resp"; exit 1; }
echo "https://x.com/jianshuo/status/$TWEET_ID"成功 → 拿到 tweet_id + URL,告诉用户。
HIST="$HOME/.claude/skills/wjs-tweeting-from-articles/state/history.jsonl"
SLUG=$(basename "$FOLDER")
jq -nc --arg date "$(date +%F)" --arg slug "$SLUG" --arg angle "$ANGLE" \
--arg tweet_id "$TWEET_ID" --arg text "$TWEET_TEXT" \
'{date:$date,slug:$slug,angle:$angle,tweet_id:$tweet_id,text:$text,status:"posted"}' \
>> "$HIST"angle ∈ A / B / C / other。
告诉用户:
/wjs-tweeting-from-articles # 自动挑最近一篇没推过的
/wjs-tweeting-from-articles <article-folder> # 显式指定
/wjs-tweeting-from-articles --dry-run # 草稿不发~/.claude/skills/wjs-tweeting-from-articles/
├── SKILL.md
├── scripts/
│ ├── pick-next-article.sh # 找最近一篇未推的 article folder
│ └── post-next-from-queue.sh # 批量排期模式:每次发队列里下一条,自节流
└── state/
├── .gitignore # 屏蔽 history.jsonl 不被推到 public repo
├── history.jsonl # 每条 tweet 一行 JSON record
├── queue-<DATE>.tsv # 批量模式:待发队列 idx/slug/text
├── queue-cursor # 批量模式:下一条序号
└── last-post-epoch # 批量模式:上次发出的时间戳(节流用)一次要发很多篇(典型来源:wjs-mining-articles 从一场长对谈挖出十几篇文章),用这个模式——一次连发会被 X 判刷屏,所以排成队列、按固定间隔自动发。
为什么不用 AskUserQuestion 逐篇选 angle:十几篇 × A/B/C 太多。每篇直接抠一条最 quotable 的(≤120 字、王建硕语气、无 hashtag/emoji/链接、带盘古之白),列全文给用户一次过目 + 定节奏,确认后排期。
机制(scripts/post-next-from-queue.sh + 每小时 cron,脚本自己节流):
# 1. 队列文件:state/queue-<DATE>.tsv,每行 idx<TAB>slug<TAB>text
# 2. cursor: state/queue-cursor(下一条序号);last-post-epoch(上次发的时间)
# 3. 立刻发第一条(FORCE 绕过节流,顺便验证 xurl 能发):
FORCE=1 bash scripts/post-next-from-queue.sh
# 4. 装 cron:每小时跑,脚本只在距上次 ≥ MIN_GAP(默认 4h)才真发:
( crontab -l 2>/dev/null | grep -v post-next-from-queue.sh; \
echo "5 * * * * /bin/bash $HOME/.claude/skills/wjs-tweeting-from-articles/scripts/post-next-from-queue.sh >/dev/null 2>&1" ) | crontab -脚本要点:单机锁(防并发)、发失败不推进 cursor(下小时重试)、发成功才写 history.jsonl 并推进、队列发完自动删掉自己的 cron 行。改间隔用 MIN_GAP(秒)。
要每天自动跑:
/schedule daily 09:00 /wjs-tweeting-from-articles或写 cron。但默认不自动跑——每天人工确认 angle 选哪条更稳。
| 不要 | 原因 |
|---|---|
| 加 hashtags(#AI #prompt) | 王建硕的 X 风格不用 hashtag,加了变营销腔 |
| 同一篇文章推两条 | 一篇一推;如果文章特别长 / 多核心,下次跑时把它从 history 删一行重推 |
| tweet 里塞 mp.weixin 链接 | 默认不带;想带就放 reply 里 |
| 把 3 条候选都发出去 | 用户挑 1 条;不挑 = 跳过今天 |
| 凭空生造一条不在文章里的 tweet | 灵感必须从 article.md 抠;这条 skill 的价值就是「文章是源」 |
| LLM 自己改原文风格做"提炼" | 王建硕原文已经够紧;直接抠 > 重写 |
xurl whoami 能返回用户名(auth OK)~/code/wechat-publish/articles/YYYY-MM-DD-*/article.md:源文章© jianshuo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 9 other files (scripts) in wjs-tweeting-from-articles of jianshuo/claude-skills.
Open the folder on GitHubat commit b2690f5
Wjs Tweeting From Articles 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Wjs Tweeting From Articles this skilljianshuo/claude-skills | 131 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Hook Writer Smsblacktwist/social-media-skills | 560 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Podcast Pipelineericosiu/ai-marketing-skills | 3.6k | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| AI Social Media ContentNeverSight/learn-skills.dev | 217 | 1 repos | ~1.8k | Automated safety check: Pass | None | |
| Download X Videoswyxio/skills | 176 | — | ~256 | Automated safety check: Pass | MIT | |
| Search Xsundial-org/awesome-openclaw-skills | 663 | — | ~599 | Automated safety check: Pass | None |
blacktwist/social-media-skills
When the user wants help writing opening lines, hooks, first sentences, video hooks, thumbnails titles, or pin titles that grab attention.
ericosiu/ai-marketing-skills
Podcast-to-Everything content pipeline. An agent skill from ericosiu/ai-marketing-skills.
NeverSight/learn-skills.dev
Create AI-powered social media content for TikTok, Instagram, YouTube, Twitter/X.
swyxio/skills
Download video from X/Twitter posts using yt-dlp. An agent skill from swyxio/skills.
sundial-org/awesome-openclaw-skills
Search X/Twitter in real-time using Grok. An agent skill from sundial-org/awesome-openclaw-skills.
coreyhaines31/marketingskills
When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, or Facebook, or wants to do social listening and engagement triage.
jianshuo/claude-skills
A skill your agent uses when the user has a long-form video (interview / lecture / podcast / conversation) and a transcript SRT, and wants to extract 3–6 stand-alone topical short clips from it.
jianshuo/claude-skills
Upload one or many videos to YouTube. An agent skill from jianshuo/claude-skills.
jianshuo/claude-skills
A skill your agent uses 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…
jianshuo/claude-skills
A skill your agent uses 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.
jianshuo/claude-skills
A skill your agent uses when the user complains about spam on his X/Twitter posts — 同城面付 / 寻固炮 / 线下上门 / 免费破处 这类引流号在他推文下刷的 emoji 垃圾回复 — and wants them removed.
jianshuo/claude-skills
A skill your agent uses when the user wants a book turned into YouTube chapter videos — 每章用 VoiceDrop 读书的有声书 mp3 做音轨,配 GPT Image 2 画面和中心思想大字,输出 1920×1080 横屏视频发 YouTube。Triggers — "把这本书做成视频"…
Works with
Categories
A skill your agent uses when the user wants to post a daily X/Twitter tweet inspired by one of their recently-published 微信公众号 articles. Wjs Tweeting From Articles is an agent skill from jianshuo/claude-skills. Use when the user wants to post a daily X/Twitter tweet inspired by one of their recently-published 微信公众号 articles.
Wjs Tweeting From Articles fits situations like: the user wants to post a daily X/Twitter tweet inspired by one of their recently-published 微信公众号 articles; /wjs-tweeting-from-articles.
Run `npx skills add jianshuo/claude-skills --skill wjs-tweeting-from-articles -a claude-code`. Or copy the skill folder (wjs-tweeting-from-articles in jianshuo/claude-skills) into .claude/skills/wjs-tweeting-from-articles in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jianshuo/claude-skills --skill wjs-tweeting-from-articles -a codex`. Or copy the skill folder (wjs-tweeting-from-articles in jianshuo/claude-skills) into .agents/skills/wjs-tweeting-from-articles in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jianshuo/claude-skills --skill wjs-tweeting-from-articles -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wjs-tweeting-from-articles, .gemini/skills/wjs-tweeting-from-articles, .github/skills/wjs-tweeting-from-articles and .opencode/skills/wjs-tweeting-from-articles in your project.
Going by SKILL.md and its folder, Wjs Tweeting From Articles needs a shell and Python for the scripts in its folder and the command-line tools its instructions call (jq and bash). Our summary lists: Python 3; A Bash shell.
SKILL.md names 1 domain. In commands or code: x.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Wjs Tweeting From Articles is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.3k tokens (SKILL.md is roughly 5.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Wjs Tweeting From Articles: Hook Writer Sms (blacktwist/social-media-skills, 560 stars), Podcast Pipeline (ericosiu/ai-marketing-skills, 3.6k stars), AI Social Media Content (NeverSight/learn-skills.dev, 217 stars) and Download X Video (swyxio/skills, 176 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jianshuo (a GitHub user) maintains it in jianshuo/claude-skills, which has 131 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on August 20, 2026.
Source: jianshuo/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.