anbeime/baoyu-post-to-x
Posts content and articles to X (Twitter). Supports regular posts with images/videos and X Articles (long-form Markdown). Uses real Chrome with CDP to bypass anti-automation. Use when user asks to "post to X", "tweet", "publish to Twitter", or "share on X".
npx skills add https://github.com/anbeime/skill --skill baoyu-post-to-x
Posts text, images, videos, and long-form articles to X via real Chrome browser (bypasses anti-bot detection).
Important: All scripts are located in the scripts/ subdirectory of this skill.
Agent Execution Instructions:
SKILL_DIR${SKILL_DIR}/scripts/<script-name>.ts${SKILL_DIR} in this document with the actual pathScript Reference:
| Script | Purpose |
|--------|---------|
| scripts/x-browser.ts | Regular posts (text + images) |
| scripts/x-video.ts | Video posts (text + video) |
| scripts/x-quote.ts | Quote tweet with comment |
| scripts/x-article.ts | Long-form article publishing (Markdown) |
| scripts/md-to-html.ts | Markdown → HTML conversion |
| scripts/copy-to-clipboard.ts | Copy content to clipboard |
| scripts/paste-from-clipboard.ts | Send real paste keystroke |
Use Bash to check EXTEND.md existence (priority order):
# Check project-level first
test -f .baoyu-skills/baoyu-post-to-x/EXTEND.md && echo "project"
# Then user-level (cross-platform: $HOME works on macOS/Linux/WSL)
test -f "$HOME/.baoyu-skills/baoyu-post-to-x/EXTEND.md" && echo "user"
┌──────────────────────────────────────────────────┬───────────────────┐
│ Path │ Location │
├──────────────────────────────────────────────────┼───────────────────┤
│ .baoyu-skills/baoyu-post-to-x/EXTEND.md │ Project directory │
├──────────────────────────────────────────────────┼───────────────────┤
│ $HOME/.baoyu-skills/baoyu-post-to-x/EXTEND.md │ User home │
└──────────────────────────────────────────────────┴───────────────────┘
┌───────────┬───────────────────────────────────────────────────────────────────────────┐
│ Result │ Action │
├───────────┼───────────────────────────────────────────────────────────────────────────┤
│ Found │ Read, parse, apply settings │
├───────────┼───────────────────────────────────────────────────────────────────────────┤
│ Not found │ Use defaults │
└───────────┴───────────────────────────────────────────────────────────────────────────┘
EXTEND.md Supports: Default Chrome profile | Auto-submit preference
bun runtimereferences/regular-posts.md for manual workflow, troubleshooting, and technical detailsreferences/articles.md for long-form article publishing guideText + up to 4 images.
npx -y bun ${SKILL_DIR}/scripts/x-browser.ts "Hello!" --image ./photo.png # Preview
npx -y bun ${SKILL_DIR}/scripts/x-browser.ts "Hello!" --image ./photo.png --submit # Post
Parameters:
| Parameter | Description |
|-----------|-------------|
| <text> | Post content (positional) |
| --image <path> | Image file (repeatable, max 4) |
| --submit | Post (default: preview) |
| --profile <dir> | Custom Chrome profile |
Text + video file.
npx -y bun ${SKILL_DIR}/scripts/x-video.ts "Check this out!" --video ./clip.mp4 # Preview
npx -y bun ${SKILL_DIR}/scripts/x-video.ts "Amazing content" --video ./demo.mp4 --submit # Post
Parameters:
| Parameter | Description |
|-----------|-------------|
| <text> | Post content (positional) |
| --video <path> | Video file (MP4, MOV, WebM) |
| --submit | Post (default: preview) |
| --profile <dir> | Custom Chrome profile |
Limits: Regular 140s max, Premium 60min. Processing: 30-60s.
Quote an existing tweet with comment.
npx -y bun ${SKILL_DIR}/scripts/x-quote.ts https://x.com/user/status/123 "Great insight!" # Preview
npx -y bun ${SKILL_DIR}/scripts/x-quote.ts https://x.com/user/status/123 "I agree!" --submit # Post
Parameters:
| Parameter | Description |
|-----------|-------------|
| <tweet-url> | URL to quote (positional) |
| <comment> | Comment text (positional, optional) |
| --submit | Post (default: preview) |
| --profile <dir> | Custom Chrome profile |
Long-form Markdown articles (requires X Premium).
npx -y bun ${SKILL_DIR}/scripts/x-article.ts article.md # Preview
npx -y bun ${SKILL_DIR}/scripts/x-article.ts article.md --cover ./cover.jpg # With cover
npx -y bun ${SKILL_DIR}/scripts/x-article.ts article.md --submit # Publish
Parameters:
| Parameter | Description |
|-----------|-------------|
| <markdown> | Markdown file (positional) |
| --cover <path> | Cover image |
| --title <text> | Override title |
| --submit | Publish (default: preview) |
Frontmatter: title, cover_image supported in YAML front matter.
--submitCustom configurations via EXTEND.md. See Preferences section for paths and supported options.
Take anbeime/baoyu-post-to-x from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.