mcpField
B
baoyu-post-to-x

baoyu-post-to-x

github.com/jimliu营销与增长27.0k29.0k 次安装7 周前更新
代码仓库

关于 baoyu-post-to-x

baoyu-post-to-x 是通过真实 Chrome 浏览器向 X 发布文字、图片、视频和长文的 Skill。它按常规帖子、引用帖子和文章提供不同流程,并区分浏览器控制模式。

主要功能

  1. 01发布文字和图片帖子
  2. 02发布视频帖子
  3. 03创建引用帖子
  4. 04发布 X 长文
  5. 05将 Markdown 转为文章 HTML
  6. 06选择 Chrome 控制模式

适用场景

  1. 01准备并发布文字图片帖子
  2. 02通过 Chrome 上传视频帖子
  3. 03为引用帖子添加评论
  4. 04将含图片的 Markdown 转为 X 长文

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jimliu/baoyu-skills --skill baoyu-post-to-x

安装后在 Claude Code 中输入/baoyu-post-to-x确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
articles.md
regular-posts.md
scripts/
bun.lock
check-paste-permissions.ts
copy-to-clipboard.ts
md-to-html.test.ts
md-to-html.ts
package.json
paste-from-clipboard.ts
x-article.ts
x-browser.ts
x-quote.ts
x-utils.test.ts
x-utils.ts
x-video.ts

详细介绍

发布到 X(Twitter)

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

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

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

脚本目录

重要:所有脚本都位于此 skill 的 scripts/ 子目录中。

Agent 执行说明:

  1. 将此 SKILL.md 文件所在目录路径确定为 {baseDir}
  2. 脚本路径 = {baseDir}/scripts/<script-name>.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.tsMarkdown → 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 Plugin Mode。不要先调用 Computer Use。
  2. 如果用户明确要求使用 Chrome Computer Use,则使用 Chrome Computer Use Mode。未经告知用户并获得批准,不要改用 CDP、Playwright、应用内 Browser 或 Chrome 插件。
  3. 如果用户明确要求使用 CDP/脚本模式,则使用 CDP Script Mode。
  4. 否则,优先使用 Chrome Computer Use Mode。对于包含本地内容图片的 Markdown X Articles,请使用经过测试的 X 编辑器流程:在图片占位符处,通过工具栏(Insert -> Media -> 对话框图标按钮 Add photos or video)插入每张正文图片,然后删除占位符文本。只有在所选浏览器控制模式不可用,或界面上传/选择流程不可靠时,才使用 CDP Script Mode。

发布到 X 时,绝不要使用应用内 Browser。

Codex Chrome 插件模式

当用户请求使用 Codex Chrome 插件、@chrome 或 Chrome 扩展路径时,使用此模式。此模式通过内置的 Chrome 插件使用用户真实的 Chrome 配置文件和 X 登录,而不是 Computer Use 或 CDP。

设置

  1. 在进行浏览器操作前加载 chrome:Chrome 技能。
  2. 如果 Node REPL 的 js 工具尚未显示,使用 tool_search 查找 node_repl js。
  3. 严格按照 Chrome 技能的说明初始化 Chrome 浏览器客户端,然后运行轻量调用(例如 browser.user.openTabs())以验证扩展连接。
  4. 如果第一次轻量调用失败,等待 2 秒后重试一次。如果仍然失败,请按照 Chrome 技能中的扩展检查和恢复步骤操作。如果检查均通过但通信仍然失败,请先征求用户同意,再打开新的 Chrome 窗口。不要悄悄切换到 Computer Use 或 CDP。

常规规则

  • 对 X 界面操作使用 Chrome 插件的 browser.tabs.*、tab.playwright.*、tab.cua.* 和文件选择器 API。
  • 允许使用 Shell 命令进行 Markdown 预处理和富 HTML 剪贴板准备。对于 X Article 正文图片,不要依赖从剪贴板粘贴图片;请使用编辑器中的 Insert -> Media 上传流程。
  • 如果文件上传失败并显示 Not allowed,请告知用户:要启用文件上传,请在 Chrome 中打开 chrome://extensions,点击 Codex 扩展下方的 Details,然后启用 "Allow access to file URLs"。详情请参阅 https://developers.openai.com/codex/app/chrome-extension#upload-files。
  • 如果 Chrome 插件报告 native pipe is closed,等待 2 秒后重试一次轻量浏览器调用,然后运行 Chrome 技能中的健康检查。如果 Chrome 正在运行、扩展已启用且原生主机清单正确,请先征求用户同意,再打开新的 Chrome 窗口并重试。不要继续通过已损坏的管道发送浏览器操作。
  • 未经用户在当前对话中明确最终确认,绝不要点击 Publish、Post 或任何会对外提交的操作。

X Articles

  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 输出中的 title、coverImage 和 contentImages(placeholder → localPath)。
  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. 打开 Preview,检查标题、封面、正文、链接和图片。
  10. 点击 Publish 前,征求用户明确确认。

Preferences(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.mdXDG
3$HOME/.baoyu-skills/baoyu-post-to-x/EXTEND.md用户主目录

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

EXTEND.md 支持:默认 Chrome 配置文件

前置条件

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

运行前检查(可选)

首次使用前,建议运行环境检查。如果愿意,用户可以跳过。

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

检查项:Chrome、配置文件隔离、Bun、辅助功能、剪贴板、粘贴按键、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 执行操作时,助手都应先调用 get_app_state 获取 Google Chrome 的状态。
  • 有可用的元素索引操作时,优先使用;仅在选择编辑器文本或拖动选择内容时使用坐标。
  • 在此模式下,除非用户批准切换模式,否则不要使用应用内浏览器、Chrome 插件、Playwright 或 CDP 执行 X 界面操作。
  • 未经用户在当前对话中明确作出最终确认,绝不要点击 Publish、Post 或任何对外可见的提交操作。

常规帖子:

  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. 使用可见的媒体上传/文件选择器界面附加视频。
  4. 等待上传和处理完成。
  5. 点击 Post 前先征求确认。

引用推文:

  1. 在 Chrome 中打开推文 URL。
  2. 使用可见的引用/转发界面选择 Quote。
  3. 输入评论。
  4. 点击 Post 前先征求确认。

X Articles:

  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 输出中的 title、coverImage 和 contentImages(placeholder → localPath)。
  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 无效且确认选中的文本恰好是该占位符时,才使用 Backspace。
  7. 确认没有遗留 XIMGPH_ 占位符,并且预期的图片均已显示。
  8. 打开 Preview,检查标题、封面、正文、链接和图片。
  9. 点击 Publish 前征求明确确认。

如果 Computer Use 的选择操作、工具栏上传或文件选择器控制变得不可靠,请停止操作并报告阻碍,不要擅自改用 Chrome 插件或 CDP。


CDP 脚本模式(备用)

仅在所选浏览器控制模式不可用、不可靠或未被明确要求时,才使用以下脚本部分。这些脚本会通过 CDP 启动或复用真实的 Chrome 实例,并保持浏览器打开以供检查。

如果用户明确要求使用 Codex Chrome 插件或 Chrome Computer Use,除非用户在你说明阻碍后批准使用备用方案,否则不要使用 CDP 脚本模式。


帖子类型选择

除非用户明确指定帖子类型:

  • 纯文本且不超过 10,000 个字符 → 常规帖子(Premium 会员最多支持 10,000 个字符,非 Premium 会员:280 个字符)
  • Markdown 文件(.md)→ X Article

常规帖子

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

参数:

参数说明
<text>帖子内容(位置参数)
--image <path>图片文件(可重复,最多 4 张)
--profile <dir>自定义 Chrome 配置文件

注意:脚本会打开浏览器并填入内容。用户检查后手动发布。

Codex 模式说明:如果用户明确要求使用 Codex Chrome 插件,请使用 Codex Chrome Plugin Mode。否则,如果已启用 Chrome Computer Use,请使用 Chrome Computer Use Mode,而不是运行 x-browser.ts。


视频帖子

文本 + 视频文件。

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

参数:

参数说明
<text>帖子内容(位置参数)
--video <path>视频文件(MP4、MOV、WebM)
--profile <dir>自定义 Chrome 配置文件

注意:脚本会打开浏览器并填入内容。用户检查后手动发布。

Codex 模式说明:如果用户明确要求使用 Codex Chrome 插件,请使用 Codex Chrome Plugin Mode。否则,如果已启用 Chrome Computer Use,请使用 Chrome Computer Use Mode,而不是运行 x-video.ts。

限制:普通用户最长 140 秒,Premium 用户最长 60 分钟。处理时间:30-60 秒。


引用推文

引用现有推文并添加评论。

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

参数:

参数说明
<tweet-url>要引用的 URL(位置参数)
<comment>评论文本(位置参数,可选)
--profile <dir>自定义 Chrome 配置文件

注意:脚本会打开浏览器并填入内容。用户检查后手动发布。

Codex 模式说明:如果用户明确要求使用 Codex Chrome 插件,请使用 Codex Chrome Plugin Mode。否则,如果已启用 Chrome Computer Use,请使用 Chrome Computer Use Mode,而不是运行 x-quote.ts。


X 文章

长篇 Markdown 文章(需要 X Premium)。

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

参数:

参数说明
<markdown>Markdown 文件(位置参数)
--cover <path>封面图片
--title <text>覆盖标题

Frontmatter:YAML front matter 支持 title、cover_image。

Codex 模式说明:如果用户明确要求使用 Codex Chrome 插件,请遵循上文的 Codex Chrome Plugin Mode。如果用户明确要求使用 Chrome Computer Use,请遵循 Chrome Computer Use Mode。否则,优先使用 Chrome Computer Use;对于包含本地内容图片的 Markdown 文章,请先使用工具栏的 Insert -> Media 图片上传工作流,再考虑在 CDP Script Mode 下使用 x-article.ts。

CDP 回退说明:脚本会打开浏览器并填入文章内容。除非使用 --submit,否则用户检查后手动发布。

发布安全:除非用户明确确认最终公开发布操作,否则不要使用 --submit 或点击 Publish。

发布后检查:所有图片插入后,脚本会自动检查:

  • 编辑器内容中剩余的 XIMGPH_ 占位符
  • 预期图片数量与实际图片数量

如果检查失败(输出中出现警告),请在用户发布前告知具体问题。


故障排除

Chrome 调试端口未就绪

仅限 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 CDP 实例并重试该命令,无需询问用户。

备注

  • 首次运行:需要手动登录(会话会保留)
  • 在 Codex Chrome Plugin Mode 和 Chrome Computer Use Mode 下,请使用用户现有的 Chrome 会话,不要启动单独的 CDP 配置文件
  • 默认情况下,CDP 脚本只会在浏览器中填入内容;除非明确使用 --submit,否则用户必须检查并手动发布
  • 跨平台:macOS、Linux、Windows

扩展支持

通过 EXTEND.md 进行自定义配置。路径和支持的选项请参阅 偏好设置部分。

评论

支持 Markdown