canghe-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".
By freestylefly · 476 installs
npx skills add freestylefly/canghe-skills --skill canghe-post-to-x
Source repository · Upstream listing
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
scripts/check paste permissions.ts Verify environment & permissions
Preferences (EXTEND.md)
Use Bash to check EXTEND.md existence (priority order):
┌──────────────────────────────────────────────────┬───────────────────┐
│ Path │ Location │
├──────────────────────────────────────────────────┼───────────────────┤
│ .canghe skills/canghe post to x/EXTEND.md │ Project directory │
├──────────────────────────────────────────────────┼───────────────────┤
│ $HOME/.canghe skills/canghe post to x/EXTEND.md │ User home │
└──────────────────────────────────────────────────┴───────────────────┘
┌───────────┬───────────────────────────────────────────────────────────────────────────┐
│ Result │ Action │
├───────────┼───────────────────────────────────────────────────────────────────────────┤
│ Found │ Read, parse, apply settings │
├───────────┼───────────────────────────────────────────────────────────────────────────┤
│ Not found │ Use defaults │
└───────────┴───────────────────────────────────────────────────────────────────────────┘
EXTEND.md Supports : Default Chrome profile
Prerequisites
Google Chrome or Chromium
bun runtime
First run: log in to X manually (session saved)
Pre flight Check (Optional)
Before first use, suggest running the environment check. User can skip if they prefer.
Checks: Chrome, profile isolation, Bun, Accessibility, clipboard, paste keystroke, Chrome conflicts.
If any check fails , provide fix guidance per item:
Check Fix
Chrome Install Chrome or set X BROWSER CHROME PATH env var
Profile dir Ensure ~/.local/share/x browser profile is writable
Bun runtime curl fsSL https://bun.sh/install \ bash
Accessibility (macOS) System Settings → Privacy & Security → Accessibility → enable terminal app
Clipboard copy Ensure Swift/AppKit available (macOS Xcode CLI tools: xcode select install )
Paste keystroke (macOS) Same as Accessibility fix above
Paste keystroke (Linux) Install xdotool (X11) or ydotool (Wayland)
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.
Parameters :
Parameter Description
<text Post content (positional)
image <path Image file (repeatable, max 4)
profile <dir Custom Chrome profile
Note : Script opens browser with content filled in. User reviews and publishes manually.
Video Posts
Text + video file.
Parameters :
Parameter Description
<text Post content (positional)
video <path Video file (MP4, MOV, WebM)
profile <dir Custom Chrome profile
Note : Script opens browser with content filled in. User reviews and publishes manually.
Limits : Regular 140s max, Premium 60min. Processing: 30 60s.
Quote Tweets
Quote an existing tweet with comment.
Parameters :
Parameter Description
<tweet url URL to quote (positional)
<comment Comment text (positional, optional)
profile <dir Custom Chrome profile
Note : Script opens browser with content filled in. User reviews and publishes manually.
X Articles
Long form Markdown articles (requires X Premium).
Parameters :
Parameter Description
<markdown Markdown file (positional)
cover <path Cover image
title <text Override title
Frontmatter : title , cover image supported in YAML front matter.
Note : Script opens browser with article filled in. User reviews and publishes manually.
Troubleshooting
Chrome debug port not ready
If a script fails with Chrome debug port not ready or Unable to connect , kill existing Chrome CDP instances first, then retry:
Important : This should be done automatically — when encountering this error, kill Chrome CDP instances and retry the command without asking the user.
Notes
First run: manual login required (session persists)
All scripts only fill content into the browser, user must review and publish manually
Cross platform: macOS, Linux, Windows
Extension Support
Custom configurations via EXTEND.md. See Preferences section for paths and supported options.