NanoSkill
提交你的 Skill

自动发布到 X(Twitter)代理技能

作者JimLiu20KGitHub 星标GitHub

使用真实 Chrome 浏览器自动化发布文本、图片、视频和长篇文章到 X(Twitter)。支持多种模式,包括 Codex Chrome 插件、计算机使用和 CDP 脚本。高效开始分享内容。

推特安全扫描通过
结果预览

完整 Demo

查看一条关于 AI 生产力工具的 Twitter 帖子,其中包含为发布准备的相关图片和话题标签。

开始使用

完成第一个任务

  1. a simple demonstration of the first step in using Post to X
    01

    步骤 1:安装

    将技能添加到你的代理中。

  2. a simple demonstration of the second step in using Post to X
    02

    步骤 2:分享帖子想法

    提供你的推文、图片、视频或文章想法,并要求技能为在 X 上发布做准备。

  3. a simple demonstration of the first step in using Post to X
    03

    步骤 3:发布前审查

    检查生成的帖子并在发布前确认。

安装指令

$ npx skills add https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-post-to-x

关于

发布到 X(Twitter)技能为自动化在 X 上发布内容提供了强大的解决方案,使用户能够高效地分享文本、图片、视频和长篇文章。该工具专为希望简化社交媒体存在的任何人设计,从个人用户到内容创作者和营销人员。它与真实的 Chrome 浏览器实例集成,确保与 X 平台的兼容性,同时提供灵活的控制选项。

该技能支持多种浏览器控制模式,包括 Codex Chrome 插件、Chrome 计算机使用和 CDP 脚本模式,因而脱颖而出。这种适应性使其能够在不同的用户设置和偏好下有效运行。一个关键功能是能够直接从 Markdown 文件发布详细的 X 文章,处理复杂的任务,如封面上传和嵌入内容图片,这对于分享深度内容非常宝贵。

用户可以利用该技能应对多种场景,例如自动发布每日社交媒体更新,将全面的博客文章或报告发布为 X 文章,或快速引用和评论其他推文。它包括有用的预检检查,以确保环境正确配置,并提供清晰的故障排除指导,即使对于自动化新手用户也能轻松使用。

核心功能

它的强大之处

  • 多内容发布

    无缝地向 X(推特)发布文本、图片和视频,处理不同的媒体类型以满足多样化的内容分享需求。

  • 长篇文章发布

    从 Markdown 文件发布 X 文章,包括封面图片和嵌入内容图片,非常适合详细的帖子。

  • 灵活的浏览器控制模式

    支持 Codex Chrome 插件、Chrome 计算机使用模式和 CDP 脚本模式,适应各种执行环境和用户偏好。

  • 引用推文功能

    轻松引用现有推文并添加您的评论,促进平台上的互动和讨论。

  • 预检环境检查

    包含一个脚本,用于检查必要的先决条件,如 Chrome、Bun 和可访问性权限,并为任何问题提供指导。

使用场景

什么时候适合使用

  • 自动发布社交媒体更新

    内容创作者和营销人员可以安排并自动发布他们的常规帖子,包括文本、图片和视频,以在不进行手动操作的情况下保持在 X 上的活跃存在。

  • 发布详细的 X 文章

    记者、博主和分析师可以直接从 Markdown 发布长篇文章,并附带富媒体,以便在 X 上与受众分享深度内容。

  • 高效引用和评论

    用户可以快速引用推文并添加评论,简化了在 X 上参与热门话题或其他用户内容的流程。

SKILL.md

发布到 X(推特)

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

在 Codex 中,不要混淆以下浏览器路径:

  • Codex Chrome 插件 / @chrome / Chrome 扩展:使用捆绑的 chrome:Chrome 技能及其 Node REPL 浏览器客户端。当用户说“Codex Chrome 插件”、“Codex 自带的 Chrome 插件”、@chrome 或类似内容时,必须使用此模式。
  • Chrome Computer Use:仅在用户要求 Computer Use 或未说明 Chrome 插件偏好且 Computer Use 可用时,对可见的 Google Chrome UI 使用 mcp__computer_use__.*
  • CDP 脚本模式:仅当所选模式不可用或用户明确要求 CDP/脚本模式时,用作后备方案。

脚本目录

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

代理执行说明

  1. 确定此 SKILL.md 文件的目录路径为 {baseDir}
  2. 脚本路径 = {baseDir}/scripts/<script-name>.ts
  3. 将本文档中的所有 {baseDir} 替换为实际路径
  4. 解析 ${BUN_X} 运行时:如果安装了 bunbun;如果 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 插件模式。不要先调用 Computer Use。
  2. 如果用户明确要求 Chrome Computer Use,请使用 Chrome Computer Use 模式。未经告知用户并获批准,不要回退到 CDP、Playwright、应用内浏览器或 Chrome 插件。
  3. 如果用户明确要求 CDP/脚本模式,请使用 CDP 脚本模式
  4. 否则,优先使用 Chrome Computer Use 模式。对于包含本地内容图片的 Markdown X 文章,请使用经过测试的 X 编辑器流程:从工具栏(插入 -> 媒体 -> 对话框图标按钮 添加照片或视频)在占位符处插入每张正文图片,然后删除占位符文本。仅当所选浏览器控制模式不可用或 UI 上传/选择流程不可靠时,才使用 CDP 脚本模式。

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

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。

一般规则

  • 使用 Chrome 插件的 browser.tabs.*tab.playwright.*tab.cua.* 和文件选择器 API 来执行 X UI 操作。
  • 允许使用 shell 命令进行 Markdown 预处理和富 HTML 剪贴板准备。对于 X 文章的正文图片,不要依赖剪贴板粘贴图片;请使用编辑器的 插入 -> 媒体 上传流程。
  • 如果文件上传失败并显示 不允许,请告知用户:要启用文件上传,请在 Chrome 中前往 chrome://extensions,点击 Codex 扩展下的详细信息,并启用“允许访问文件网址”。详情请参阅 https://developers.openai.com/codex/app/chrome-extension#upload-files。
  • 如果 Chrome 插件报告 原生管道已关闭,请在 2 秒后重试一次轻量级浏览器调用,然后运行 Chrome 技能健康检查。如果 Chrome 正在运行,扩展已启用,且本地主机清单正确,请请求权限打开一个新 Chrome 窗口并重试。不要继续通过已损坏的管道发送浏览器操作。
  • 在当前对话中获得用户的明确最终确认之前,切勿点击 发布发送 或任何外部可见的提交操作。

X 文章

  1. 将 Markdown 转换为 HTML 并保留图片映射:
    ${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json
    
  2. 读取 JSON 输出,获取 titlecoverImagecontentImagesplaceholderlocalPath)。
  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)并点击以将插入点置于该处。
    • 打开工具栏菜单 插入 -> 媒体
    • 在模态框中,点击带有 aria-label="添加照片或视频" 的图标按钮;不要点击文本/拖放区或隐藏的文件输入。
    • 使用文件选择器上传该图片的 localPath
    • 图片出现后,如果 XIMGPH_N 仍在其上方,请先精确选择该占位符并按 Delete 键。仅当 Delete 失败且所选文本确认正是该占位符时,才使用 Backspace
    • 验证该 XIMGPH_N 的占位符计数为 0
  9. 打开预览并验证标题、封面、正文、链接和图片。
  10. 在点击 发布 之前请求明确确认。

偏好设置 (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 配置文件部分)
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 窗口、cookies、登录状态、扩展和 X 会话。

一般规则

  • 在控制 Chrome 的每个助手回合开始时,为 Google Chrome 调用 get_app_state
  • 尽可能优先使用元素索引操作;仅在编辑器文本选择或拖动选择时使用坐标。
  • 除非用户批准模式更改,否则不要在此模式下使用应用内浏览器、Chrome 插件、Playwright 或 CDP 进行 X UI 操作。
  • 在当前对话中获得用户的明确最终确认之前,切勿点击 发布发送 或任何外部可见的提交操作。

常规帖子

  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. 点击 发送 前请求确认。

视频帖子

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

引用推文

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

X 文章

  1. 将 Markdown 转换为 HTML 并保留图片映射:
    ${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json
    
  2. 读取 JSON 输出,获取 titlecoverImagecontentImagesplaceholderlocalPath)。
  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,并点击以设置插入点。
    • 打开工具栏的 插入 下拉菜单,选择 媒体,然后点击模态框中标签为 添加照片或视频 的图标按钮。
    • 使用原生文件选择器选择图片的 localPath
    • 等待图片块出现且所有上传活动完成。
    • 如果占位符仍存在于插入的图片上方,请重新精确选择该占位符文本,并按 Delete 键。仅当 Delete 失败且所选文本确认正是该占位符时,才使用 Backspace
  7. 验证没有 XIMGPH_ 占位符残留,且预期的图片已显示。
  8. 打开预览并验证标题、封面、正文、链接和图片。
  9. 在点击 发布 之前请求明确确认。

如果 Computer Use 选择、工具栏上传或文件选择器控件变得不可靠,请停止并报告阻碍因素,而不是静默切换到 Chrome 插件或 CDP。


CDP 脚本模式(后备)

仅当所选浏览器控制模式不可用、不可靠或明确未请求时,才使用下面的脚本部分。这些脚本通过 CDP 启动或重用一个真实的 Chrome 实例,并保持浏览器打开以供审查。

当用户明确要求 Codex Chrome 插件或 Chrome Computer Use 时,不要使用 CDP 脚本模式,除非你在解释阻碍因素后获得了用户的批准。


帖子类型选择

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

  • 纯文本 + 在 10,000 字符以内 → 常规帖子(高级会员支持最多 10,000 字符,非高级会员:280 字符)
  • Markdown 文件(.md) → X 文章

常规帖子

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

参数

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

注意:脚本会打开已填充内容的浏览器。用户手动审核并发布。

Codex 模式说明:如果用户明确请求了 Codex Chrome 插件,请使用 Codex Chrome 插件模式。否则,如果 Chrome Computer Use 已启用,请使用 Chrome Computer Use 模式,而不是运行 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 插件模式。否则,如果 Chrome Computer Use 已启用,请使用 Chrome Computer Use 模式,而不是运行 x-video.ts

限制:普通用户最长 140 秒,高级用户 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 插件模式。否则,如果 Chrome Computer Use 已启用,请使用 Chrome Computer Use 模式,而不是运行 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 中的 titlecover_image

Codex 模式说明:如果用户明确请求了 Codex Chrome 插件,请遵循上面的 Codex Chrome 插件模式。如果用户明确请求了 Chrome Computer Use,请遵循 Chrome Computer Use 模式。否则,优先使用 Chrome Computer Use;对于包含本地内容图片的 Markdown 文章,在回退到 CDP 脚本模式 中的 x-article.ts 之前,请使用工具栏 插入 -> 媒体 图片上传工作流程。

CDP 后备说明:脚本会打开已填充文章的浏览器。用户手动审核并发布,除非使用了 --submit

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

撰写后检查:插入所有图片后,脚本会自动验证:

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

如果检查失败(输出中有警告),请在用户发布之前提醒他们具体问题。


故障排除

Chrome 调试端口未就绪

仅 CDP 后备:如果脚本失败并显示 Chrome 调试端口未就绪无法连接,请先终止现有的 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 插件模式和 Chrome Computer Use 模式下,使用用户现有的 Chrome 会话,不要启动单独的 CDP 配置文件
  • CDP 脚本默认仅将内容填充到浏览器中;用户必须手动审核和发布,除非明确使用 --submit
  • 跨平台:macOS、Linux、Windows

扩展支持

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

常见问题