post-to-x

将内容和文章发布到 X(Twitter)。支持带图片/视频的常规帖子以及 X Articles(长篇 Markdown 文章)。使用真实的 Chrome 并通过 CDP(Chrome 调试协议)绕过反自动化。用户要求“发布到 X”“发推”“发布到 Twitter”或“在 X 上分享”时使用。

安装

热度:3

下载并解压到你的 skills 目录

复制命令,发送给 OpenClaw 自动安装:

下载并安装这个技能 https://openskills.cc/api/download?slug=ginobefun-skills-post-to-x&locale=zh&source=copy
name: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/<script-name>.ts

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

  • Resolve ${BUN_X} runtime: if bun installed → bun; if npx available → npx -y bun; else suggest installing bun
  • 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
    scripts/check-paste-permissions.tsVerify environment & permissions

    Preferences (EXTEND.md)

    Check EXTEND.md existence (priority order):

    # macOS, Linux, WSL, Git Bash
    test -f .gino-skills/post-to-x/EXTEND.md && echo "project"
    test -f "$HOME/.gino-skills/post-to-x/EXTEND.md" && echo "user"

    # PowerShell (Windows)
    if (Test-Path .gino-skills/post-to-x/EXTEND.md) { "project" }
    if (Test-Path "$HOME/.gino-skills/post-to-x/EXTEND.md") { "user" }

    ┌──────────────────────────────────────────────────┬───────────────────┐
    │ Path │ Location │
    ├──────────────────────────────────────────────────┼───────────────────┤
    │ .gino-skills/post-to-x/EXTEND.md │ Project directory │
    ├──────────────────────────────────────────────────┼───────────────────┤
    │ $HOME/.gino-skills/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.

    ${BUN_X} ${SKILL_DIR}/scripts/check-paste-permissions.ts

    Checks: Chrome, profile isolation, Bun, Accessibility, clipboard, paste keystroke, Chrome conflicts.

    If any check fails, provide fix guidance per item:

    CheckFix
    ChromeInstall Chrome or set X_BROWSER_CHROME_PATH env var
    Profile dirEnsure ~/.local/share/x-browser-profile is writable
    Bun runtimecurl -fsSL https://bun.sh/install \| bash
    Accessibility (macOS)System Settings → Privacy & Security → Accessibility → enable terminal app
    Clipboard copyEnsure 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.

    ${BUN_X} ${SKILL_DIR}/scripts/x-browser.ts "Hello!" --image ./photo.png

    Parameters:

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

    ${BUN_X} ${SKILL_DIR}/scripts/x-video.ts "Check this out!" --video ./clip.mp4

    Parameters:

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

    ${BUN_X} ${SKILL_DIR}/scripts/x-quote.ts https://x.com/user/status/123 "Great insight!"

    Parameters:

    ParameterDescription
    <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).

    ${BUN_X} ${SKILL_DIR}/scripts/x-article.ts article.md
    ${BUN_X} ${SKILL_DIR}/scripts/x-article.ts article.md --cover ./cover.jpg

    Parameters:

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

    Post-Composition Check: The script automatically verifies after all images are inserted:

  • Remaining XIMGPH_ placeholders in editor content

  • Expected vs actual image count
  • If the check fails (warnings in output), alert the user with the specific issues before they publish.


    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:

    pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2

    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.