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

View Source
name:baoyu-post-to-xdescription: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".

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/.ts

  • Replace all ${SKILL_DIR} in this document with the actual path
  • Script Reference:

    ScriptPurpose
    scripts/x-browser.tsRegular posts (text + images)
    scripts/x-video.tsVideo posts (text + video)
    scripts/x-quote.tsQuote tweet with comment
    scripts/x-article.tsLong-form article publishing (Markdown)
    scripts/md-to-html.tsMarkdown → HTML conversion
    scripts/copy-to-clipboard.tsCopy content to clipboard
    scripts/paste-from-clipboard.tsSend 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:

    ParameterDescription
    <text>Post content (positional)
    --image <path>Image file (repeatable, max 4)
    --submitPost (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:

    ParameterDescription
    <text>Post content (positional)
    --video <path>Video file (MP4, MOV, WebM)
    --submitPost (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:

    ParameterDescription
    <tweet-url>URL to quote (positional)
    <comment>Comment text (positional, optional)
    --submitPost (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:

    ParameterDescription
    <markdown>Markdown file (positional)
    --cover <path>Cover image
    --title <text>Override title
    --submitPublish (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.