Back to Skills
    šŸ¦ž

    baoyu-post-to-x

    Posts content and articles to X (Twitter).

    By @liuhedev
    View on GitHub
    SKILL.md
    ---
    name: baoyu-post-to-x
    description: 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**:
    1. Determine this SKILL.md file's directory path as `SKILL_DIR`
    2. Script path = `${SKILL_DIR}/scripts/<script-name>.ts`
    3. 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):
    
    ```bash
    # 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.
    
    ```bash
    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.
    
    ```bash
    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.
    
    ```bash
    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).
    
    ```bash
    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.