mcpbeat

Baoyu Post To X

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".

27k tokens
context cost
the whole folder, loaded on every use
11
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
4658
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/anbeime/skill --skill baoyu-post-to-x

What comes with it

101 239 bytes besides the instruction
references/articles.md
references/regular-posts.md
scripts/copy-to-clipboard.ts
scripts/md-to-html.ts
scripts/paste-from-clipboard.ts
scripts/x-article.ts
scripts/x-browser.ts
scripts/x-quote.ts
scripts/x-utils.ts
scripts/x-video.ts

What it tells the agent to use

found in the instruction text
Bash runs shell commands — read the instruction before connecting

The instruction itself

11 sections, as written by the author

Post to X (Twitter)

Posts text, images, videos, and long-form articles to X via real Chrome browser (bypasses anti-bot detection).

Script Directory

Important: All scripts are located in the scripts/ subdirectory of this skill.

Agent Execution Instructions:

  • Determine this SKILL.md file's directory path as SKILL_DIR
  • Script path = ${SKILL_DIR}/scripts/<script-name>.ts
  • Replace all ${SKILL_DIR} in this document with the actual path

Script 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 |

Preferences (EXTEND.md)

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

Prerequisites

  • Google Chrome or Chromium
  • bun runtime
  • First run: log in to X manually (session saved)

References

  • Regular Posts: See references/regular-posts.md for manual workflow, troubleshooting, and technical details
  • X Articles: See references/articles.md for long-form article publishing guide

Regular Posts

Text + 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 |


Video Posts

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 Tweets

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 |


X Articles

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.


Notes

  • First run: manual login required (session persists)
  • Always preview before --submit
  • Cross-platform: macOS, Linux, Windows

Extension Support

Custom configurations via EXTEND.md. See Preferences section for paths and supported options.

How to use it

Copy the folder

Take anbeime/baoyu-post-to-x from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

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.

Install what it needs

The instructions reference npx. Without those the skill loads but fails at the first command.