發布至 X(Twitter)
透過真實的 Chrome 瀏覽器,將文字、圖片、影片和長篇文章發布到 X。
在 Codex 中,請勿混淆這些瀏覽器路徑:
- Codex Chrome 外掛 /
@chrome/ Chrome 擴充功能:使用捆綁的chrome:Chrome技能及其 Node REPL 瀏覽器用戶端。當使用者提到「Codex Chrome 外掛」、「Codex 自带的 Chrome 插件」、@chrome或類似指令時,必須使用此模式。 - Chrome Computer Use:僅當使用者要求使用 Computer Use,或未指定 Chrome 外掛偏好且 Computer Use 可用時,才使用
mcp__computer_use__.*針對可見的 Google Chrome UI 進行操作。 - CDP 腳本模式:僅作為所選模式不可用,或使用者明確要求 CDP/腳本模式時的備用方案。
腳本目錄
重要:所有腳本位於此技能的 scripts/ 子目錄中。
代理執行指令:
- 確定此 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 文章,使用經過測試的 X 編輯器流程:從工具列(
插入->媒體-> 對話圖示按鈕新增相片或影片)在每個圖片佔位符處插入本文圖片,然後刪除佔位符文字。僅在所選的瀏覽器控制模式不可用,或 UI 上傳/選擇流程不可靠時,才使用 CDP 腳本模式。
請勿將應用程式內瀏覽器用於 X 發布工作流程。
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。
一般規則
- 使用 Chrome 外掛的
browser.tabs.*、tab.playwright.*、tab.cua.*和檔案選擇器 API 進行 X UI 操作。 - 允許使用 Shell 命令進行 Markdown 預處理和豐富 HTML 的剪貼簿準備。對於 X 文章的本文圖片,請勿依賴圖片剪貼簿貼上;使用編輯器的
插入->媒體上傳流程。 - 若檔案上傳失敗並顯示
不允許,告訴使用者:要啟用檔案上傳,請前往 Chrome 中的 chrome://extensions,在 Codex 擴充功能下點擊詳細資料,並啟用「允許存取檔案 URL」。詳情請見 https://developers.openai.com/codex/app/chrome-extension#upload-files。 - 若 Chrome 外掛回報
原生管道已關閉,請在 2 秒後重試輕量瀏覽器呼叫一次,然後執行 Chrome 技能健康檢查。若 Chrome 正在運行、擴充功能已啟用,且原生主機資訊清單正確,則請求允許開啟新的 Chrome 視窗並重試。請勿透過損壞的管道持續傳送瀏覽器動作。 - 在目前對話中獲得使用者的明確最終確認前,請勿點擊
發布、貼文或任何外部可見的提交動作。
X 文章
- 轉換 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)並點擊,將游標置於該處。 - 開啟工具列選單
插入->媒體。 - 在彈出視窗中,點擊帶有
aria-label="新增相片或影片"的圖示按鈕;請勿點擊文字/拖放區或隱藏的檔案輸入。 - 使用檔案選擇器上傳該圖片的
localPath。 - 圖片出現後,若
XIMGPH_N仍在其上方,請選取該佔位符並先按Delete鍵。僅在Delete失敗且已確認所選文字確實為該佔位符時,才使用Backspace。 - 驗證該
XIMGPH_N的佔位符數量為0。
- 找到可見的佔位符文字(
- 開啟預覽並驗證標題、封面、本文、連結和圖片。
- 在獲得明確確認後,再點擊
發布。
偏好設定 (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 設定檔章節) |
| 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 動作,除非使用者核准模式變更。
- 在目前對話中獲得使用者的明確最終確認前,請勿點擊
發布、貼文或任何外部可見的提交動作。
一般貼文:
- 開啟或導航 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 完成媒體上傳。 - 在點擊
貼文前詢問確認。
影片貼文:
- 開啟或導航 Chrome 至
https://x.com/compose/post。 - 在編輯器中輸入貼文文字。
- 使用可見的媒體上傳/檔案選擇器 UI 附加影片。
- 等待上傳和處理完成。
- 在點擊
貼文前詢問確認。
引用推文:
- 在 Chrome 中開啟推文 URL。
- 使用可見的引用/轉發 UI 選擇「引用」。
- 輸入評論。
- 在點擊
貼文前詢問確認。
X 文章:
- 轉換 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,並點擊以設定插入點。 - 開啟工具列
插入下拉選單,選擇媒體,然後點擊彈出視窗中標記為新增相片或影片的圖示按鈕。 - 使用原生檔案選擇器選擇圖片的
localPath。 - 等待圖片區塊出現且所有上傳活動完成。
- 若佔位符仍留在插入的圖片上方,請重新選取該佔位符文字並先按
Delete鍵。僅在Delete失敗且已確認所選文字確實為該佔位符時,才使用Backspace。
- 找到確切的可見佔位符文字,例如
- 驗證沒有留下
XIMGPH_佔位符,且顯示預期的圖片。 - 開啟預覽並驗證標題、封面、本文、連結和圖片。
- 在獲得明確確認後,再點擊
發布。
若 Computer Use 的選取、工具列上傳或檔案選擇器控制變得不穩定,請停止並回報障礙,而非默默切換至 Chrome 外掛或 CDP。
CDP 腳本模式(備用)
僅在所選的瀏覽器控制模式不可用、不可靠或明確未被要求時,才使用下方的腳本區塊。這些腳本透過 CDP 啟動或重複使用真實的 Chrome 實例,並保持瀏覽器開啟以供審查。
當使用者明確要求 Codex Chrome 外掛或 Chrome Computer Use 時,請勿使用 CDP 腳本模式,除非在您說明障礙後,使用者核准此備用方案。
貼文類型選擇
除非使用者明確指定貼文類型:
- 純文字 + 10,000 字元以內 → 一般貼文(Premium 會員支援最多 10,000 字元,非 Premium: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 秒,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 外掛模式。否則,若 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 前言中使用 title、cover_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 進行自訂配置。請參閱 偏好設定 章節以獲得路徑和支援選項。


