--- name: baoyu-post-to-x description: Post 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. --- # Post to X (Twitter) Post content, images, videos, and long-form articles to X using 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/.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 | ## Prerequisites - Google Chrome or Chromium installed - `bun` installed (for running scripts) - First run: log in to X in the opened browser window ## 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 # Preview mode (doesn't post) npx -y bun ${SKILL_DIR}/scripts/x-browser.ts "Hello from Claude!" --image ./screenshot.png # Actually post npx -y bun ${SKILL_DIR}/scripts/x-browser.ts "Hello!" --image ./photo.png --submit ``` > **Note**: `${SKILL_DIR}` represents this skill's installation directory. Agent replaces with actual path at runtime. **Parameters**: | Parameter | Description | |-----------|-------------| | `` | Post content (positional argument) | | `--image ` | Image file path (can be repeated, max 4) | | `--submit` | Actually post (default: preview only) | | `--profile ` | Custom Chrome profile directory | --- ## Video Posts Text + video file (MP4, MOV, WebM). ```bash # Preview mode (doesn't post) npx -y bun ${SKILL_DIR}/scripts/x-video.ts "Check out this video!" --video ./clip.mp4 # Actually post npx -y bun ${SKILL_DIR}/scripts/x-video.ts "Amazing content" --video ./demo.mp4 --submit ``` **Parameters**: | Parameter | Description | |-----------|-------------| | `` | Post content (positional argument) | | `--video ` | Video file path (required) | | `--submit` | Actually post (default: preview only) | | `--profile ` | Custom Chrome profile directory | **Video Limits**: - Regular accounts: 140 seconds max - X Premium: up to 60 minutes - Supported formats: MP4, MOV, WebM - Processing time: 30-60 seconds depending on file size --- ## Quote Tweets Quote an existing tweet with your comment - a way to share content while giving credit to the original creator. ```bash # Preview mode (doesn't post) npx -y bun ${SKILL_DIR}/scripts/x-quote.ts https://x.com/user/status/123456789 "Great insight!" # Actually post npx -y bun ${SKILL_DIR}/scripts/x-quote.ts https://x.com/user/status/123456789 "I agree!" --submit ``` **Parameters**: | Parameter | Description | |-----------|-------------| | `` | URL of the tweet to quote (positional argument) | | `` | Your comment text (positional argument, optional) | | `--submit` | Actually post (default: preview only) | | `--profile ` | Custom Chrome profile directory | --- ## X Articles Long-form Markdown articles (requires X Premium). ```bash # Preview mode npx -y bun ${SKILL_DIR}/scripts/x-article.ts article.md # With cover image npx -y bun ${SKILL_DIR}/scripts/x-article.ts article.md --cover ./cover.jpg # Publish npx -y bun ${SKILL_DIR}/scripts/x-article.ts article.md --submit ``` **Parameters**: | Parameter | Description | |-----------|-------------| | `` | Markdown file path (positional argument) | | `--cover ` | Cover image path | | `--title ` | Override article title | | `--submit` | Actually publish (default: preview only) | **Frontmatter** (optional): ```yaml --- title: My Article Title cover_image: /path/to/cover.jpg --- ``` --- ## Notes - First run requires manual login (session is saved) - Always preview before using `--submit` - Browser closes automatically after operation - Supports macOS, Linux, and Windows ## Extension Support Custom configurations via EXTEND.md. **Check paths** (priority order): 1. `.baoyu-skills/baoyu-post-to-x/EXTEND.md` (project) 2. `~/.baoyu-skills/baoyu-post-to-x/EXTEND.md` (user) If found, load before workflow. Extension content overrides defaults.