关于 baoyu-post-to-x
baoyu-post-to-x 是通过真实 Chrome 浏览器向 X 发布文字、图片、视频和长文的 Skill。它按常规帖子、引用帖子和文章提供不同流程,并区分浏览器控制模式。
主要功能
- 01发布文字和图片帖子
- 02发布视频帖子
- 03创建引用帖子
- 04发布 X 长文
- 05将 Markdown 转为文章 HTML
- 06选择 Chrome 控制模式
适用场景
- 01准备并发布文字图片帖子
- 02通过 Chrome 上传视频帖子
- 03为引用帖子添加评论
- 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.mdregular-posts.mdscripts/bun.lockcheck-paste-permissions.tscopy-to-clipboard.tsmd-to-html.test.tsmd-to-html.tspackage.jsonpaste-from-clipboard.tsx-article.tsx-browser.tsx-quote.tsx-utils.test.tsx-utils.tsx-video.ts详细介绍
发布到 X(Twitter)
通过真实的 Chrome 浏览器向 X 发布文本、图片、视频和长篇文章。
在 Codex 中,请勿混淆以下浏览器路径:
- Codex Chrome 插件 /
@chrome/ Chrome Extension:使用内置的chrome:Chromeskill 及其 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 执行说明:
- 将此 SKILL.md 文件所在目录路径确定为
{baseDir} - 脚本路径 =
{baseDir}/scripts/<script-name>.ts - 将本文档中的所有
{baseDir}替换为实际路径 - 解析
${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 交互前,必须且只能选择一种模式:
- 如果用户明确要求使用 Codex Chrome 插件、
@chrome、Chrome 扩展程序或“Codex 自带的 Chrome 插件”,则使用 Codex Chrome Plugin Mode。不要先调用 Computer Use。 - 如果用户明确要求使用 Chrome Computer Use,则使用 Chrome Computer Use Mode。未经告知用户并获得批准,不要改用 CDP、Playwright、应用内 Browser 或 Chrome 插件。
- 如果用户明确要求使用 CDP/脚本模式,则使用 CDP Script Mode。
- 否则,优先使用 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。
设置
- 在进行浏览器操作前加载
chrome:Chrome技能。 - 如果 Node REPL 的
js工具尚未显示,使用tool_search查找node_repl js。 - 严格按照 Chrome 技能的说明初始化 Chrome 浏览器客户端,然后运行轻量调用(例如
browser.user.openTabs())以验证扩展连接。 - 如果第一次轻量调用失败,等待 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
- 转换 Markdown 并保留图片映射:
${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json - 读取 JSON 输出中的
title、coverImage和contentImages(placeholder→localPath)。 - 在
https://x.com/compose/articles打开或创建文章草稿。 - 使用 Chrome 插件的文件选择器流程上传封面。如果扩展权限阻止上传,请停止并报告上文所述的准确权限修复步骤。
- 填写标题,然后复制富 HTML:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html - 使用 Chrome 插件通过真实的粘贴按键将内容粘贴到文章正文中。在 macOS 上使用
Meta+V。 - 确认编辑器文本中包含文章正文和
XIMGPH_占位符。Shell 写入剪贴板后,不要仅凭tab.clipboard.readText()来确认系统剪贴板内容;如有需要,请在 macOS 上使用pbpaste验证。 - 按照占位符顺序处理每个
contentImages条目:- 定位可见的占位符文本(
XIMGPH_N),并点击它以将光标放在该处。 - 打开工具栏菜单
Insert->Media。 - 在弹窗中,点击
aria-label="Add photos or video"的图标按钮;不要点击文本/拖放区域或隐藏的文件输入框。 - 使用文件选择器上传该图片的
localPath。 - 图片出现后,如果
XIMGPH_N仍在图片上方,先选中且仅选中该占位符,然后按Delete。只有在Delete无效且已确认选中的文本恰好是该占位符时,才使用Backspace。 - 确认该
XIMGPH_N的占位符数量为0。
- 定位可见的占位符文本(
- 打开 Preview,检查标题、封面、正文、链接和图片。
- 点击
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.md | XDG |
| 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或任何对外可见的提交操作。
常规帖子:
- 在 Chrome 中打开或导航至
https://x.com/compose/post。 - 使用 Computer Use 将帖子文本输入撰写框。
- 对于每张图片,运行:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts image /absolute/path/to/image.png - 使用 Computer Use 粘贴(macOS 上按
super+v,Windows/Linux 上按control+v),然后等待 X 完成媒体上传。 - 点击
Post前先征求确认。
视频帖子:
- 在 Chrome 中打开或导航至
https://x.com/compose/post。 - 在撰写框中输入帖子文本。
- 使用可见的媒体上传/文件选择器界面附加视频。
- 等待上传和处理完成。
- 点击
Post前先征求确认。
引用推文:
- 在 Chrome 中打开推文 URL。
- 使用可见的引用/转发界面选择 Quote。
- 输入评论。
- 点击
Post前先征求确认。
X Articles:
- 转换 Markdown 并保留图片映射:
${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json - 读取 JSON 输出中的
title、coverImage和contentImages(placeholder→localPath)。 - 在 Chrome 中打开
https://x.com/compose/articles,创建或打开草稿;如有封面则上传,并填写标题。 - 将富文本 HTML 复制到剪贴板:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html - 使用 Computer Use 将其粘贴到文章正文中。
- 按占位符顺序处理每个
contentImages条目:- 找到完全匹配的可见占位符文本(例如
XIMGPH_3),然后点击它以设置插入点。 - 打开工具栏中的
Insert下拉菜单,选择Media,然后点击对话框中标记为Add photos or video的图标按钮。 - 使用系统文件选择器选择图片的
localPath。 - 等待图片块显示,并确认所有上传操作均已完成。
- 如果占位符仍显示在插入图片上方,先重新准确选中该占位符文本并按
Delete。只有在Delete无效且确认选中的文本恰好是该占位符时,才使用Backspace。
- 找到完全匹配的可见占位符文本(例如
- 确认没有遗留
XIMGPH_占位符,并且预期的图片均已显示。 - 打开 Preview,检查标题、封面、正文、链接和图片。
- 点击
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 进行自定义配置。路径和支持的选项请参阅 偏好设置部分。