Pubblica su X (Twitter)
Pubblica testi, immagini, video e articoli di lunga forma su X tramite un vero browser Chrome.
In Codex, non confondere questi percorsi del browser:
- Plugin Chrome di Codex /
@chrome/ Estensione Chrome: usa la skillchrome:Chromein bundle e il suo client browser Node REPL. Questo è richiesto ogni volta che l'utente dice "Plugin Chrome di Codex", "Codex 自带的 Chrome 插件",@chromeo simili. - Chrome Computer Use: usa
mcp__computer_use__.*sull'interfaccia visibile di Google Chrome solo quando l'utente richiede Computer Use o quando non viene specificata una preferenza per il plugin Chrome e Computer Use è disponibile. - Modalità script CDP: usa solo come fallback quando la modalità selezionata non è disponibile o l'utente richiede esplicitamente la modalità CDP/script.
Directory Script
Importante: Tutti gli script si trovano nella sottodirectory scripts/ di questa skill.
Istruzioni per l'esecuzione dell'agente:
- Determina il percorso della directory di questo file SKILL.md come
{baseDir} - Percorso dello script =
{baseDir}/scripts/<script-name>.ts - Sostituisci tutti i
{baseDir}in questo documento con il percorso effettivo - Risolvi il runtime
${BUN_X}: sebunè installato →bun; senpxè disponibile →npx -y bun; altrimenti suggerisci di installare bun
Riferimento script:
| Script | Scopo |
|---|---|
scripts/x-browser.ts | Post regolari (testo + immagini), fallback CDP |
scripts/x-video.ts | Post video (testo + video), fallback CDP |
scripts/x-quote.ts | Cita tweet con commento, fallback CDP |
scripts/x-article.ts | Pubblicazione di articoli di lunga forma (Markdown), fallback CDP |
scripts/md-to-html.ts | Conversione Markdown → HTML |
scripts/copy-to-clipboard.ts | Copia contenuto negli appunti |
scripts/paste-from-clipboard.ts | Invia un vero tasto incolla |
scripts/check-paste-permissions.ts | Verifica ambiente e permessi |
Selezione della modalità di esecuzione (Obbligatorio)
Scegli esattamente una modalità prima di interagire con X:
- Se l'utente richiede esplicitamente il plugin Chrome di Codex,
@chrome, l'estensione Chrome o "Codex 自带的 Chrome 插件", usa la Modalità Plugin Chrome di Codex. Non chiamare prima Computer Use. - Se l'utente richiede esplicitamente Chrome Computer Use, usa la Modalità Chrome Computer Use. Non passare a CDP, Playwright, al Browser in-app o al plugin Chrome senza informare l'utente e ottenere l'approvazione.
- Se l'utente richiede esplicitamente la modalità CDP/script, usa la Modalità Script CDP.
- Altrimenti, preferisci la Modalità Chrome Computer Use. Per gli Articoli X in Markdown con immagini di contenuto locali, usa il flusso collaudato dell'editor di X: inserisci ogni immagine del corpo dalla barra degli strumenti (
Inserisci->Media-> pulsante icona della finestra di dialogoAggiungi foto o video) al suo segnaposto, quindi elimina il testo del segnaposto. Usa la Modalità Script CDP solo quando la modalità di controllo del browser selezionata non è disponibile o il flusso di caricamento/selezione dell'interfaccia utente non è affidabile.
Non usare mai il Browser in-app per i flussi di lavoro di pubblicazione su X.
Modalità Plugin Chrome di Codex
Usa questa modalità ogni volta che l'utente richiede il plugin Chrome di Codex, @chrome o il percorso dell'estensione Chrome. Questo utilizza il profilo Chrome reale dell'utente e l'accesso a X tramite il plugin Chrome in bundle, non Computer Use e non CDP.
Configurazione
- Carica la skill
chrome:Chromeprima di lavorare con il browser. - Usa
tool_searchpernode_repl jsse lo strumento Node REPLjsnon è già visibile. - Inizializza il client del browser Chrome esattamente come specificato dalla skill Chrome, quindi esegui una chiamata leggera come
browser.user.openTabs()per verificare la connessione dell'estensione. - Se la prima chiamata leggera fallisce, attendi 2 secondi e riprova una volta. Se fallisce ancora, segui i controlli dell'estensione e i passaggi di ripristino della skill Chrome. Se i controlli passano ma la comunicazione fallisce ancora, chiedi all'utente prima di aprire una nuova finestra di Chrome. Non passare silenziosamente a Computer Use o CDP.
Regole generali
- Usa le API
browser.tabs.*,tab.playwright.*,tab.cua.*e di selezione file del plugin Chrome per le azioni sull'interfaccia di X. - I comandi shell sono consentiti per il preprocessing Markdown e la preparazione degli appunti HTML ricco. Per le immagini del corpo di un Articolo X, non fare affidamento sull'incolla immagini dagli appunti; usa il flusso di caricamento
Inserisci->Mediadell'editor. - Se un caricamento file fallisce con
Non consentito, informa l'utente:Per abilitare il caricamento file, vai a chrome://extensions in Chrome, clicca su Dettagli sotto l'estensione Codex e abilita "Consenti l'accesso agli URL dei file." Vedi https://developers.openai.com/codex/app/chrome-extension#upload-files per i dettagli. - Se il plugin Chrome segnala
native pipe is closed, riprova la chiamata leggera al browser una volta dopo 2 secondi, quindi esegui i controlli di salute della skill Chrome. Se Chrome è in esecuzione, l'estensione è abilitata e il manifest dell'host nativo è corretto, chiedi il permesso di aprire una nuova finestra di Chrome e riprova. Non continuare a inviare azioni del browser attraverso il pipe interrotto. - Non cliccare mai su
Pubblica,Posto qualsiasi azione di invio visibile esternamente senza una conferma finale esplicita dell'utente nella conversazione corrente.
Articoli X
- Converti il Markdown e mantieni la mappa delle immagini:
${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json - Leggi l'output JSON per
title,coverImageecontentImages(placeholder→localPath). - Apri o crea la bozza dell'articolo su
https://x.com/compose/articles. - Carica la copertina con il flusso di selezione file del plugin Chrome. Se il caricamento è bloccato dai permessi dell'estensione, fermati e segnala l'esatta correzione dei permessi sopra.
- Compila il titolo, quindi copia l'HTML ricco:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html - Incolla nel corpo dell'articolo con un vero tasto incolla tramite il plugin Chrome. Su macOS usa
Meta+V. - Verifica che il testo dell'editor contenga il corpo dell'articolo e i segnaposto
XIMGPH_. Non fare affidamento sutab.clipboard.readText()come prova degli appunti di sistema dopo le scritture degli appunti da shell; su macOS verifica conpbpastese necessario. - Per ogni elemento
contentImagesin ordine di segnaposto:- Individua il testo del segnaposto visibile (
XIMGPH_N) e cliccalo per posizionare il cursore lì. - Apri il menu della barra degli strumenti
Inserisci->Media. - Nella finestra modale, clicca il pulsante icona con
aria-label="Aggiungi foto o video"; non cliccare sul testo/dropzone o sull'input file nascosto. - Usa il selettore file per caricare il
localPathdi quell'immagine. - Dopo che l'immagine appare, se
XIMGPH_Nrimane sopra di essa, seleziona esattamente quel segnaposto e premi primaElimina. UsaBackspacesolo seEliminafallisce e il testo selezionato è confermato essere esattamente il segnaposto. - Verifica che il conteggio del segnaposto per quel
XIMGPH_Nsia0.
- Individua il testo del segnaposto visibile (
- Apri Anteprima e verifica titolo, copertina, corpo, link e immagini.
- Chiedi conferma esplicita prima di cliccare su
Pubblica.
Preferenze (EXTEND.md)
Controlla EXTEND.md in ordine di priorità — vince il primo trovato:
| Priorità | Percorso | Ambito |
|---|---|---|
| 1 | .baoyu-skills/baoyu-post-to-x/EXTEND.md | Progetto |
| 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 | Home utente |
Se non trovato, usa i valori predefiniti.
EXTEND.md supporta: Profilo Chrome predefinito
Prerequisiti
- Google Chrome o Chromium
- runtime
bun - Prima esecuzione: accedi a X manualmente (sessione salvata)
Controllo pre-volo (Opzionale)
Prima del primo utilizzo, suggerisci di eseguire il controllo dell'ambiente. L'utente può saltare se preferisce.
${BUN_X} {baseDir}/scripts/check-paste-permissions.ts
Controlli: Chrome, isolamento del profilo, Bun, Accessibilità, appunti, tasto incolla, conflitti di Chrome.
Se qualche controllo fallisce, fornisci indicazioni per la correzione per ogni voce:
| Controllo | Correzione |
|---|---|
| Chrome | Installa Chrome o imposta la variabile d'ambiente X_BROWSER_CHROME_PATH |
| Dir profilo | Profilo condiviso in baoyu-skills/chrome-profile (vedi sezione Chrome Profile in CLAUDE.md) |
| runtime Bun | brew install oven-sh/bun/bun (macOS) o npm install -g bun |
| Accessibilità (macOS) | Impostazioni di Sistema → Privacy e Sicurezza → Accessibilità → abilita l'app terminale |
| Copia appunti | Assicurati che Swift/AppKit sia disponibile (strumenti CLI Xcode macOS: xcode-select --install) |
| Tasto incolla (macOS) | Stessa correzione dell'Accessibilità sopra |
| Tasto incolla (Linux) | Installa xdotool (X11) o ydotool (Wayland) |
Riferimenti
- Post regolari: Vedi
references/regular-posts.mdper flusso di lavoro manuale, risoluzione problemi e dettagli tecnici - Articoli X: Vedi
references/articles.mdper guida alla pubblicazione di articoli di lunga forma
Modalità Chrome Computer Use
Usa questa modalità quando l'utente richiede esplicitamente Chrome Computer Use, o quando non viene specificata una preferenza per il plugin Chrome e Codex può controllare Google Chrome con Computer Use. Questo utilizza la finestra di Chrome esistente dell'utente, i cookie, l'accesso, le estensioni e la sessione X.
Regole generali:
- Inizia ogni turno dell'assistente che controlla Chrome chiamando
get_app_stateperGoogle Chrome. - Preferisci le azioni con indice di elemento quando disponibili; usa le coordinate solo per la selezione del testo nell'editor o la selezione tramite trascinamento.
- Non usare il Browser in-app, il plugin Chrome, Playwright o CDP per le azioni sull'interfaccia di X in questa modalità a meno che l'utente non approvi un cambio di modalità.
- Non cliccare mai su
Pubblica,Posto qualsiasi azione di invio visibile esternamente senza una conferma finale esplicita dell'utente nella conversazione corrente.
Post regolari:
- Apri o naviga Chrome su
https://x.com/compose/post. - Scrivi il testo del post nel compositore usando Computer Use.
- Per ogni immagine, esegui:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts image /absolute/path/to/image.png - Incolla con Computer Use (
super+vsu macOS,control+vsu Windows/Linux), quindi attendi che X finisca di caricare i media. - Chiedi conferma prima di cliccare su
Post.
Post video:
- Apri o naviga Chrome su
https://x.com/compose/post. - Scrivi il testo del post nel compositore.
- Usa l'interfaccia visibile di caricamento media/selezione file per allegare il video.
- Attendi il completamento del caricamento e dell'elaborazione.
- Chiedi conferma prima di cliccare su
Post.
Cita tweet:
- Apri l'URL del tweet in Chrome.
- Usa l'interfaccia visibile di cita/ripubblica per scegliere Cita.
- Scrivi il commento.
- Chiedi conferma prima di cliccare su
Post.
Articoli X:
- Converti il Markdown e mantieni la mappa delle immagini:
${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json - Leggi l'output JSON per
title,coverImageecontentImages(placeholder→localPath). - In Chrome, apri
https://x.com/compose/articles, crea o apri la bozza, carica la copertina se presente e compila il titolo. - Copia l'HTML ricco negli appunti:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html - Incolla nel corpo dell'articolo con Computer Use.
- Per ogni voce
contentImagesin ordine di segnaposto:- Individua l'esatto testo del segnaposto visibile come
XIMGPH_3e cliccalo per impostare il punto di inserimento. - Apri il menu a discesa
Inseriscidella barra degli strumenti, scegliMedia, quindi clicca il pulsante icona della finestra modale etichettatoAggiungi foto o video. - Usa il selettore file nativo per scegliere il
localPathdell'immagine. - Attendi che appaia il blocco immagine e che qualsiasi attività di caricamento sia terminata.
- Se il segnaposto rimane sopra l'immagine inserita, riseleziona esattamente quel testo segnaposto e premi prima
Elimina. UsaBackspacesolo seEliminafallisce e il testo selezionato è confermato essere esattamente il segnaposto.
- Individua l'esatto testo del segnaposto visibile come
- Verifica che non rimangano segnaposto
XIMGPH_e che appaiano le immagini previste. - Apri Anteprima e verifica titolo, copertina, corpo, link e immagini.
- Chiedi conferma esplicita prima di cliccare su
Pubblica.
Se la selezione, il caricamento dalla barra degli strumenti o il controllo del selettore file di Computer Use diventano inaffidabili, fermati e segnala il blocco invece di passare silenziosamente al plugin Chrome o CDP.
Modalità Script CDP (Fallback)
Usa le sezioni di script qui sotto solo quando la modalità di controllo del browser selezionata non è disponibile, non è affidabile o non è esplicitamente richiesta. Questi script avviano o riutilizzano un'istanza reale di Chrome tramite CDP e mantengono il browser aperto per la revisione.
Non usare la Modalità Script CDP quando l'utente richiede esplicitamente il plugin Chrome di Codex o Chrome Computer Use, a meno che l'utente non approvi il fallback dopo che hai spiegato il blocco.
Selezione del tipo di post
A meno che l'utente non specifichi esplicitamente il tipo di post:
- Testo semplice + entro 10.000 caratteri → Post regolare (i membri Premium supportano fino a 10.000 caratteri, non Premium: 280)
- File Markdown (.md) → Articolo X
Post regolari
${BUN_X} {baseDir}/scripts/x-browser.ts "Hello!" --image ./photo.png
Parametri:
| Parametro | Descrizione |
|---|---|
<text> | Contenuto del post (posizionale) |
--image <path> | File immagine (ripetibile, max 4) |
--profile <dir> | Profilo Chrome personalizzato |
Nota: Lo script apre il browser con il contenuto compilato. L'utente rivede e pubblica manualmente.
Nota sulla modalità Codex: Se l'utente ha richiesto esplicitamente il plugin Chrome di Codex, usa la Modalità Plugin Chrome di Codex. Altrimenti, se Chrome Computer Use è abilitato, usa la Modalità Chrome Computer Use invece di eseguire x-browser.ts.
Post video
Testo + file video.
${BUN_X} {baseDir}/scripts/x-video.ts "Check this out!" --video ./clip.mp4
Parametri:
| Parametro | Descrizione |
|---|---|
<text> | Contenuto del post (posizionale) |
--video <path> | File video (MP4, MOV, WebM) |
--profile <dir> | Profilo Chrome personalizzato |
Nota: Lo script apre il browser con il contenuto compilato. L'utente rivede e pubblica manualmente.
Nota sulla modalità Codex: Se l'utente ha richiesto esplicitamente il plugin Chrome di Codex, usa la Modalità Plugin Chrome di Codex. Altrimenti, se Chrome Computer Use è abilitato, usa la Modalità Chrome Computer Use invece di eseguire x-video.ts.
Limiti: Massimo 140s per account normale, 60min per Premium. Elaborazione: 30-60s.
Cita tweet
Cita un tweet esistente con un commento.
${BUN_X} {baseDir}/scripts/x-quote.ts https://x.com/user/status/123 "Great insight!"
Parametri:
| Parametro | Descrizione |
|---|---|
<tweet-url> | URL da citare (posizionale) |
<comment> | Testo del commento (posizionale, opzionale) |
--profile <dir> | Profilo Chrome personalizzato |
Nota: Lo script apre il browser con il contenuto compilato. L'utente rivede e pubblica manualmente.
Nota sulla modalità Codex: Se l'utente ha richiesto esplicitamente il plugin Chrome di Codex, usa la Modalità Plugin Chrome di Codex. Altrimenti, se Chrome Computer Use è abilitato, usa la Modalità Chrome Computer Use invece di eseguire x-quote.ts.
Articoli X
Articoli Markdown di lunga forma (richiede X Premium).
${BUN_X} {baseDir}/scripts/x-article.ts article.md
${BUN_X} {baseDir}/scripts/x-article.ts article.md --cover ./cover.jpg
Parametri:
| Parametro | Descrizione |
|---|---|
<markdown> | File Markdown (posizionale) |
--cover <path> | Immagine di copertina |
--title <text> | Sovrascrivi il titolo |
Frontmatter: title, cover_image supportati nel front matter YAML.
Nota sulla modalità Codex: Se l'utente ha richiesto esplicitamente il plugin Chrome di Codex, segui la Modalità Plugin Chrome di Codex sopra. Se l'utente ha richiesto esplicitamente Chrome Computer Use, segui la Modalità Chrome Computer Use. Altrimenti, preferisci Chrome Computer Use; per articoli Markdown con immagini di contenuto locali, usa il flusso di caricamento immagini dalla barra degli strumenti Inserisci -> Media prima di passare a x-article.ts nella Modalità Script CDP.
Nota sul fallback CDP: Lo script apre il browser con l'articolo compilato. L'utente rivede e pubblica manualmente a meno che non venga usato --submit.
Sicurezza della pubblicazione: Non usare --submit o cliccare su Pubblica a meno che l'utente non confermi esplicitamente l'azione di pubblicazione finale.
Controllo post-composizione: Lo script verifica automaticamente dopo che tutte le immagini sono state inserite:
- Segnaposto
XIMGPH_rimanenti nel contenuto dell'editor - Conteggio immagini previsto vs effettivo
Se il controllo fallisce (avvisi nell'output), avvisa l'utente con i problemi specifici prima che pubblichi.
Risoluzione dei problemi
Porta di debug di Chrome non pronta
Solo fallback CDP: se uno script fallisce con Chrome debug port not ready o Impossibile connettersi, termina prima le istanze CDP di Chrome esistenti, quindi riprova:
pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2
Importante: Questo dovrebbe essere fatto automaticamente — quando si incontra questo errore, termina le istanze CDP di Chrome e riprova il comando senza chiedere all'utente.
Note
- Prima esecuzione: è richiesto l'accesso manuale (la sessione persiste)
- Nella Modalità Plugin Chrome di Codex e nella Modalità Chrome Computer Use, usa la sessione Chrome esistente dell'utente e non avviare un profilo CDP separato
- Gli script CDP per impostazione predefinita riempiono solo il contenuto nel browser; l'utente deve rivedere e pubblicare manualmente a meno che non venga usato esplicitamente
--submit - Multipiattaforma: macOS, Linux, Windows
Supporto estensioni
Configurazioni personalizzate tramite EXTEND.md. Vedi la sezione Preferenze per percorsi e opzioni supportate.


