baoyu-post-to-x

baoyu-post-to-x

热门

自动将内容和文章发布到 X (Twitter)。支持带图片/视频的普通推文以及 X 文章(长文本 Markdown)。在 Codex 中,若用户明确要求使用 Codex Chrome 插件/@chrome,请使用 Chrome 扩展工作流;否则在可用时优先使用 Chrome Computer Use,仅在允许的情况下退回到真实 Chrome CDP 脚本模式。当用户要求“发布到 X”、“发推”、“发布到 Twitter”或“在 X 上分享”时使用。

2.2万Star
2606Fork
更新于 2026/6/18
SKILL.md
只读
名称
baoyu-post-to-x
描述

自动将内容和文章发布到 X (Twitter)。支持带图片/视频的普通推文以及 X 文章(长文本 Markdown)。在 Codex 中,若用户明确要求使用 Codex Chrome 插件/@chrome,请使用 Chrome 扩展工作流;否则在可用时优先使用 Chrome Computer Use,仅在允许的情况下退回到真实 Chrome CDP 脚本模式。当用户要求“发布到 X”、“发推”、“发布到 Twitter”或“在 X 上分享”时使用。

版本
1.58.1

发布到 X (Twitter)

通过真实 Chrome 浏览器向 X 发布文本、图片、视频和长文。

在 Codex 中,请勿混淆以下几种浏览器操作路径:

  • Codex Chrome 插件 / @chrome / Chrome Extension:使用内置的 chrome:Chrome Skill 及其 Node REPL 浏览器客户端。当用户提到“Codex Chrome plugin”、“Codex 自带的 Chrome 插件”、@chrome 或类似表述时,必须使用此模式。
  • Chrome Computer Use:仅在用户明确要求使用 Computer Use,或者未指定 Chrome 插件偏好且 Computer Use 可用时,调用 mcp__computer_use__.* 针对可见的 Google Chrome UI 进行操作。
  • CDP 脚本模式:仅在选定的模式不可用,或者用户明确要求使用 CDP/脚本模式时作为备用方案。

脚本目录

重要提醒:所有脚本均位于本 Skill 的 scripts/ 子目录下。

Agent 执行指南

  1. 获取当前 SKILL.md 文件所在的目录路径,记为 {baseDir}
  2. 脚本路径 = {baseDir}/scripts/<脚本名称>.ts
  3. 将本文档中所有的 {baseDir} 替换为实际路径
  4. 解析 ${BUN_X} 运行环境:若已安装 bun → 使用 bun;若 npx 可用 → 使用 npx -y bun;否则提示用户安装 bun

脚本参考

脚本 用途
scripts/x-browser.ts 普通推文(文本 + 图片),CDP 备用
scripts/x-video.ts 视频推文(文本 + 视频),CDP 备用
scripts/x-quote.ts 引用推文(附带评论),CDP 备用
scripts/x-article.ts 长文发布(Markdown),CDP 备用
scripts/md-to-html.ts Markdown 转 HTML
scripts/copy-to-clipboard.ts 复制内容至剪贴板
scripts/paste-from-clipboard.ts 发送真实粘贴按键
scripts/check-paste-permissions.ts 环境与权限检查

执行模式选择(必选)

在与 X 交互之前,必须明确选择一种模式:

  1. 若用户明确要求使用 Codex Chrome 插件、@chrome、Chrome 扩展或“Codex 自带的 Chrome 插件”,请使用 Codex Chrome 插件模式。切勿先调用 Computer Use。
  2. 若用户明确要求使用 Chrome Computer Use,请使用 Chrome Computer Use 模式。未经用户同意,切勿擅自退回到 CDP、Playwright、内置浏览器或 Chrome 插件。
  3. 若用户明确要求使用 CDP/脚本模式,请使用 CDP 脚本模式
  4. 其他情况下,优先选择 Chrome Computer Use 模式。对于包含本地正文图片的 Markdown X 文章,请使用经测试验证的 X 编辑器流程:通过工具栏(Insert -> Media -> 弹窗图标按钮 Add photos or video)在占位符处插入每张正文图片,然后删除占位符文本。仅在选定的浏览器控制模式不可用或 UI 上传/选择流程不稳定时,才使用 CDP 脚本模式。

切勿将内置浏览器用于 X 发布工作流。

Codex Chrome 插件模式

每当用户要求使用 Codex Chrome 插件、@chrome 或 Chrome 扩展路径时,使用此模式。该模式通过内置 Chrome 插件直接使用用户的真实 Chrome 配置和 X 登录状态,而非 Computer Use 或 CDP。

初始化设置

  1. 在进行浏览器操作前,先加载 chrome:Chrome Skill。
  2. 如果 Node REPL 的 js 工具尚不可见,请使用 tool_search 搜索 node_repl js
  3. 严格按照 Chrome Skill 的说明初始化 Chrome 浏览器客户端,然后执行一次轻量调用(如 browser.user.openTabs())以验证扩展连接。
  4. 若首次轻量调用失败,请等待 2 秒后重试一次。若依然失败,请按照 Chrome Skill 的扩展检查与恢复步骤处理。若检查通过但通信仍失败,请在打开新 Chrome 窗口前询问用户,切勿静默切换到 Computer Use 或 CDP。

通用规则

  • 在 X UI 操作中,请使用 Chrome 插件的 browser.tabs.*tab.playwright.*tab.cua.* 及文件选择器 API。
  • 允许使用 Shell 命令进行 Markdown 预处理和富文本 HTML 剪贴板准备。对于 X 文章的正文图片,请勿依赖剪贴板粘贴图片,务必使用编辑器的 Insert -> Media 上传流程。
  • 若文件上传失败并提示 Not allowed,请告知用户:如需开启文件上传权限,请在 Chrome 中打开 chrome://extensions,点击 Codex 扩展下的“详细信息”,并勾选“允许访问文件网址”。详情参阅 https://developers.openai.com/codex/app/chrome-extension#upload-files
  • 若 Chrome 插件报错 native pipe is closed,请在 2 秒后重试一次轻量浏览器调用,然后运行 Chrome Skill 健康检查。若 Chrome 正在运行、扩展已启用且原生宿主配置无误,请在征得许可后打开新 Chrome 窗口重试。切勿继续向已断开的管道发送浏览器操作指令。
  • 未在当前对话中获得用户的明确最终确认之前,绝不可点击 PublishPost 或任何对外可见的提交按钮。

X 文章

  1. 转换 Markdown 并保留图片映射:
    ${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json
    
  2. 读取 JSON 输出中的 titlecoverImage 以及 contentImagesplaceholderlocalPath)。
  3. 打开或创建文章草稿(访问 https://x.com/compose/articles)。
  4. 使用 Chrome 插件文件选择器流程上传封面。若上传因扩展权限受阻,请暂停并提示上述权限修复方案。
  5. 填写标题,然后复制富文本 HTML:
    ${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html
    
  6. 通过 Chrome 插件发送真实粘贴按键将内容粘贴到文章正文区域。macOS 上使用 Meta+V
  7. 检查编辑器文本是否包含文章正文及 XIMGPH_ 占位符。Shell 命令写入剪贴板后,切勿将 tab.clipboard.readText() 作为系统剪贴板校验依据;macOS 上必要时可使用 pbpaste 进行验证。
  8. 按占位符顺序依次处理 contentImages 中的每一项:
    • 找到可见的占位符文本(XIMGPH_N)并点击,将光标定位至该处。
    • 打开工具栏菜单 Insert -> Media
    • 在弹窗中,点击 aria-label="Add photos or video" 的图标按钮;不要点击文本/拖拽区或隐藏的文件输入框。
    • 使用文件选择器上传该图片的 localPath
    • 图片显示后,若上方仍残留 XIMGPH_N,优先精确选中该占位符文本并按 Delete 删除;仅在 Delete 失败且已确认选中文本确实为该占位符时,才使用 Backspace
    • 确认该 XIMGPH_N 的占位符计数已归零(为 0)。
  9. 打开预览,检查标题、封面、正文、链接及图片是否正常。
  10. 在点击 Publish 之前,必须请求用户的明确确认。

偏好设置 (EXTEND.md)

按优先级顺序检查 EXTEND.md(命中即止):

优先级 路径 作用域
1 .baoyu-skills/baoyu-post-to-x/EXTEND.md 项目
2 ${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-post-to-x/EXTEND.md XDG
3 $HOME/.baoyu-skills/baoyu-post-to-x/EXTEND.md 用户主目录

若均未找到,则使用默认设置。

EXTEND.md 支持: 默认 Chrome 配置(Profile)

前置条件

  • Google Chrome 或 Chromium
  • bun 运行时
  • 首次运行:手动登录 X(登录状态会被保存)

环境预检(可选)

首次使用前,建议运行环境检查。用户也可自行选择跳过。

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

检查项包括:Chrome、配置隔离、Bun、辅助功能权限(Accessibility)、剪贴板、粘贴按键模拟、Chrome 冲突。

若有检查项失败,请按对应项目提供修复指引:

检查项 修复方案
Chrome 安装 Chrome 或设置 X_BROWSER_CHROME_PATH 环境变量
配置目录 共享配置目录位于 baoyu-skills/chrome-profile(详见 CLAUDE.md 的 Chrome Profile 章节)
Bun 运行时 brew install oven-sh/bun/bun (macOS) 或 npm install -g bun
辅助功能权限 (macOS) 系统设置 → 隐私与安全性 → 辅助功能 → 勾选对应的终端应用
剪贴板复制 确保 Swift/AppKit 可用(macOS Xcode 命令行工具:xcode-select --install
粘贴按键 (macOS) 同上方的辅助功能权限修复方案
粘贴按键 (Linux) 安装 xdotool (X11) 或 ydotool (Wayland)

参考文档

  • 普通推文:参阅 references/regular-posts.md 获取手动工作流、排障指南及技术细节
  • X 文章:参阅 references/articles.md 获取长文发布指南

Chrome Computer Use 模式

当用户明确要求使用 Chrome Computer Use,或者未指定 Chrome 插件偏好且 Codex 能够通过 Computer Use 控制 Google Chrome 时使用此模式。该模式直接复用用户现有的 Chrome 窗口、Cookie、登录状态、扩展和 X 会话。

通用规则

  • 在控制 Chrome 的每个助手轮次开始时,先调用 Google Chromeget_app_state
  • 优先选择基于元素索引的操作;仅在编辑器文本选择或拖拽选择时使用坐标定位。
  • 在此模式下,除非用户批准变更模式,否则切勿将内置浏览器、Chrome 插件、Playwright 或 CDP 用于 X UI 操作。
  • 未在当前对话中获得用户的明确最终确认之前,绝不可点击 PublishPost 或任何对外可见的提交按钮。

普通推文

  1. 打开 Chrome 或导航至 https://x.com/compose/post
  2. 使用 Computer Use 在编辑器中输入推文文本。
  3. 针对每张图片,运行:
    ${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts image /absolute/path/to/image.png
    
  4. 使用 Computer Use 执行粘贴操作(macOS 上为 super+v,Windows/Linux 上为 control+v),等待 X 完成媒体文件上传。
  5. 在点击 Post 前请求确认。

视频推文

  1. 打开 Chrome 或导航至 https://x.com/compose/post
  2. 在编辑器中输入推文文本。
  3. 使用可见的媒体上传/文件选择器 UI 附加视频。
  4. 等待上传及处理完成。
  5. 在点击 Post 前请求确认。

引用推文

  1. 在 Chrome 中打开推文 URL。
  2. 使用可见的引用/转发 UI 选择“引用”(Quote)。
  3. 输入评论内容。
  4. 在点击 Post 前请求确认。

X 文章

  1. 转换 Markdown 并保留图片映射:
    ${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json
    
  2. 读取 JSON 输出中的 titlecoverImage 以及 contentImagesplaceholderlocalPath)。
  3. 在 Chrome 中打开 https://x.com/compose/articles,创建或打开草稿,若有封面则上传封面,并填写标题。
  4. 将富文本 HTML 复制到剪贴板:
    ${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html
    
  5. 使用 Computer Use 将内容粘贴到文章正文区域。
  6. 按占位符顺序依次处理 contentImages 中的每一项:
    • 定位到可见的精准占位符文本(如 XIMGPH_3)并点击以设置插入光标。
    • 打开工具栏 Insert 下拉菜单,选择 Media,然后点击弹窗中标记为 Add photos or video 的图标按钮。
    • 使用原生文件选择器挑选图片的 localPath
    • 等待图片块出现且上传活动结束。
    • 若插入的图片上方仍残留占位符,优先重新精确选中该占位符文本并按 Delete 删除;仅在 Delete 失败且已确认选中...

<!-- 翻译截断部分同源保持 -->