發布內容與文章至 X (Twitter)。支援包含圖片/影片的一般貼文以及 X Articles(長篇 Markdown 文章)。在 Codex 中,若使用者明確指定 Codex Chrome 外掛 / `@chrome`,請使用 Chrome 擴充功能工作流程;否則在可用時優先使用 Chrome Computer Use,並僅在允許時退回使用真實 Chrome CDP 腳本。當使用者要求「發布至 X」、「發推」、「發布到 Twitter」或「分享至 X」時使用。
發布至 X (Twitter)
透過真實的 Chrome 瀏覽器,將文字、圖片、影片及長篇文章發布至 X。
在 Codex 中,切勿混淆以下幾種瀏覽器控制途徑:
- Codex Chrome 外掛 /
@chrome/ Chrome 擴充功能:使用內建的chrome:ChromeSkill 以及 Node REPL 瀏覽器用戶端。每當使用者提及「Codex Chrome plugin」、「Codex 自帶的 Chrome 外掛」、@chrome或類似用語時,必須使用此途徑。 - Chrome Computer Use:僅在使用者要求 Computer Use,或未指定 Chrome 外掛偏好且 Computer Use 可用時,針對可見的 Google Chrome UI 使用
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 外掛模式。切勿先呼叫 Computer Use。 - 若使用者明確要求使用 Chrome Computer Use,請使用 Chrome Computer Use 模式。未告知使用者並取得同意前,切勿自行退回使用 CDP、Playwright、應用程式內建瀏覽器或 Chrome 外掛。
- 若使用者明確要求使用 CDP/腳本模式,請使用 CDP 腳本模式。
- 否則,優先使用 Chrome Computer Use 模式。針對包含本地圖片的 Markdown X Articles,請使用經測試的 X 編輯器流程:透過工具列(
Insert->Media-> 對話方塊圖示按鈕Add photos or video)在預留位置處插入每張內文圖片,然後刪除預留位置文字。僅在所選的瀏覽器控制模式不可用,或 UI 上傳/選擇流程不可靠時,才使用 CDP 腳本模式。
切勿將應用程式內建瀏覽器用於 X 的發布工作流程。
Codex Chrome 外掛模式
每當使用者要求 Codex Chrome 外掛、@chrome 或 Chrome 擴充功能途徑時,請使用此模式。此模式會透過內建的 Chrome 外掛使用使用者真實的 Chrome 個人檔案與 X 登入狀態,而非使用 Computer Use 或 CDP。
設定流程
- 在進行瀏覽器操作前,先載入
chrome:ChromeSkill。 - 若 Node REPL 的
js工具尚未顯示,請使用tool_search搜尋node_repl js。 - 完全按照 Chrome Skill 的規範初始化 Chrome 瀏覽器用戶端,接著執行輕量級呼叫(例如
browser.user.openTabs())以驗證擴充功能連線。 - 若第一次輕量級呼叫失敗,請等待 2 秒後重試一次。若依然失敗,請遵循 Chrome Skill 的擴充功能檢查與復原步驟。若檢查通過但通訊仍失敗,在開啟新的 Chrome 視窗前請先詢問使用者。切勿默默切換至 Computer Use 或 CDP。
通用規則
- 執行 X UI 操作時,請使用 Chrome 外掛的
browser.tabs.*、tab.playwright.*、tab.cua.*以及檔案選擇器 API。 - 允許使用 Shell 命令進行 Markdown 預處理以及富文字 HTML 剪貼簿準備。針對 X Article 內文圖片,請勿依賴剪貼簿貼上圖片;請使用編輯器的
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 正在運行、擴充功能已啟用且原生主機資訊清單(native host manifest)正確,請請求許可開啟新的 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之前,務必尋求使用者的明確確認。
偏好設定 (EXTEND.md)
依優先順序檢查 EXTEND.md — 以找到的第一個為準:
| 優先順序 | 路徑 | 範圍 |
|---|---|---|
| 1 | .baoyu-skills/baoyu-post-to-x/EXTEND.md |
專案 (Project) |
| 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 |
使用者主目錄 (User home) |
若皆未找到,則使用預設值。
EXTEND.md 支援:預設 Chrome 個人檔案
先決條件
- Google Chrome 或 Chromium
bun執行環境- 首次執行:手動登入 X(會自動儲存工作階段 session)
執行前檢查(可選)
首次使用前,建議執行環境檢查。使用者亦可依偏好跳過。
${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 CLI 工具:xcode-select --install) |
| 貼上按鍵動作 (macOS) | 同上方的輔助功能修復方法 |
| 貼上按鍵動作 (Linux) | 安裝 xdotool (X11) 或 ydotool (Wayland) |
參考資料
- 一般貼文:手動工作流程、疑難排解與技術細節請參閱
references/regular-posts.md - X Articles:長篇文章發布指南請參閱
references/articles.md
Chrome Computer Use 模式
當使用者明確要求 Chrome Computer Use,或者未指定 Chrome 外掛偏好且 Codex 可透過 Computer Use 控制 Google Chrome 時,請使用此模式。此模式會使用使用者現有的 Chrome 視窗、Cookie、登入狀態、擴充功能以及 X 工作階段。
通用規則:
- 每次助理回合控制 Chrome 時,先呼叫
Google Chrome的get_app_state。 - 在可用時優先使用元素索引 (element-index) 動作;僅在編輯器文字選取或拖曳選取時才使用座標。
- 在此模式下,除非使用者同意變更模式,否則切勿將應用程式內建瀏覽器、Chrome 外掛、Playwright 或 CDP 用於 X UI 操作。
- 在當前對話中未取得使用者明確的最終確認之前,切勿點擊
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。 - 在撰寫框中輸入貼文文字。
- 使用可見的媒體上傳/檔案選擇器 UI 附加影片。
- 等待上傳與處理完成。
- 在點擊
Post前先尋求確認。
引用貼文:
- 在 Chrome 中開啟推文網址。
- 使用可見的引用/轉發 UI 選擇 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失敗且選取的文字...
- 定位可見的精確預留位置文字(例如






