用途
baoyu-post-to-x 用于把内容发布到 X(Twitter),支持常规帖文(文字配图片/视频)、引用推文,以及长文形式(X Articles,使用 Markdown)。所有发布都经由真实的 Chrome 浏览器完成,并使用用户已有的 Chrome 会话与 X 登录状态。
主要能力
- 常规帖文:文字加图片(最多 4 张,可重复指定 --image)或视频(MP4、MOV、WebM)。
- 引用推文:引用指定推文 URL 并附上评论。
- X Articles 长文:将 Markdown 转换为富 HTML 并粘贴到 X 文章编辑器,支持封面图、标题覆盖与正文内图片占位符替换。
- 辅助脚本:md-to-html.ts(Markdown → HTML)、copy-to-clipboard.ts(复制内容到剪贴板)、paste-from-clipboard.ts(发送真实粘贴按键)、check-paste-permissions.ts(检查环境与权限)。
执行模式
必须在使用前选择且仅选择一种模式:
- Codex Chrome 插件模式:当用户明确要求 Codex Chrome 插件、@chrome、Chrome 扩展或类似表述时使用;先加载 chrome:Chrome 技能并通过 Node REPL 浏览器客户端操作,不要先调用 Computer Use。
- Chrome Computer Use 模式:当用户明确要求 Chrome Computer Use,或在未指定插件偏好且 Computer Use 可用时优先使用;使用 mcp__computer_use__.* 针对可见的 Google Chrome UI。
- CDP 脚本模式:仅作为回退,当所选浏览器控制模式不可用、不可靠或用户明确要求 CDP/脚本模式时使用。
用户未指定发布类型时的判断:纯文本且不超过 10,000 字符(Premium 会员上限 10,000,非 Premium 为 280)→ 常规帖文;Markdown 文件(.md)→ X Article。
使用方式
脚本目录为 {baseDir}/scripts/,运行时按环境解析 ${BUN_X}(bun 已安装则用 bun;否则用 npx -y bun;否则建议安装 bun)。
常规帖文: ${BUN_X} {baseDir}/scripts/x-browser.ts "Hello!" --image ./photo.png
视频帖文: ${BUN_X} {baseDir}/scripts/x-video.ts "Check this out!" --video ./clip.mp4
引用推文: ${BUN_X} {baseDir}/scripts/x-quote.ts https://x.com/user/status/123 "Great insight!"
X Articles: ${BUN_X} {baseDir}/scripts/x-article.ts article.md ${BUN_X} {baseDir}/scripts/x-article.ts article.md --cover ./cover.jpg
Markdown 转换与图片映射: ${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json
复制富 HTML 到剪贴板: ${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html
环境预检: ${BUN_X} {baseDir}/scripts/check-paste-permissions.ts
X Articles 正文图片流程:按占位符顺序(XIMGPH_N)定位可见占位文本,将光标置于此处;打开工具栏 Insert -> Media;在弹窗中点击 aria-label="Add photos or video" 的图标按钮(不要点击文字/拖放区或隐藏文件输入),通过文件选择器上传对应 localPath;图片出现后若占位符仍在上方,先精确选中该占位符并按 Delete,Delete 失败且确认选中内容恰为占位符时才用 Backspace;确认该 XIMGPH_N 计数为 0。
发布安全:未获得用户在当前对话中的明确最终确认,绝不点击 Publish、Post 或任何对外可见的提交操作;不要使用 --submit,除非用户明确确认最终公开发布。脚本默认只把内容填入浏览器,由用户审核并手动发布。
适用场景
- 需要把带图/带视频的短帖发布到 X。
- 需要对某条推文进行带评论的引用转发。
- 需要把长文 Markdown 发布为 X Articles(需 X Premium)。
- 在 macOS、Linux、Windows 上跨平台使用(资料明确支持这三个平台)。
限制与前置条件
- 前置条件:Google Chrome 或 Chromium;bun 运行时;首次运行需手动登录 X(会话会被保存)。
- X Articles 需要 X Premium。
- 常规视频时长:普通账号最大 140 秒,Premium 最大 60 分钟;处理约需 30-60 秒。
- Codex Chrome 插件模式与 Chrome Computer Use 模式使用用户现有 Chrome 会话,不另启动独立 CDP 配置;在任何 X 发布工作流中都不使用 in-app Browser。
- 模式降级不得静默进行:若所选模式不可用或不可靠,应停止并报告阻塞,未经用户同意不得切换到 Chrome 插件或 CDP。
- 文件上传若报 Not allowed,需在 chrome://extensions 的 Codex 扩展详情中启用 "Allow access to file URLs"。
- CDP 回退故障:若脚本报 Chrome debug port not ready 或 Unable to connect,可先结束已有 Chrome CDP 实例后重试:pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2。
- 其他环境修复:Chrome 缺失可安装 Chrome 或设置 X_BROWSER_CHROME_PATH;bun 可 brew install oven-sh/bun/bun(macOS)或 npm install -g bun;macOS 辅助功能需在系统设置 → 隐私与安全性 → 辅助功能中启用终端应用;剪贴板复制需 Swift/AppKit(macOS 可 xcode-select --install);Linux 粘贴按键需安装 xdotool(X11)或 ydotool(Wayland)。
偏好配置(EXTEND.md)
按优先级查找,找到的第一个生效:
- .baoyu-skills/baoyu-post-to-x/EXTEND.md(项目)
- ${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-post-to-x/EXTEND.md(XDG)
- $HOME/.baoyu-skills/baoyu-post-to-x/EXTEND.md(用户主目录)
未找到时使用默认值。EXTEND.md 支持配置默认 Chrome 配置。
参考资料
- 常规帖文:references/regular-posts.md(手动工作流、故障排查与技术细节)
- X Articles:references/articles.md(长文发布指南)