Auf X (Twitter) posten
Postet Text, Bilder, Videos und Langform-Artikel über einen echten Chrome-Browser auf X.
Verwechseln Sie in Codex nicht diese Browser-Pfade:
- Codex Chrome-Plugin /
@chrome/ Chrome-Erweiterung: Verwenden Sie die mitgeliefertechrome:Chrome-Fähigkeit und ihren Node REPL-Browser-Client. Dies ist erforderlich, wenn der Benutzer "Codex Chrome-Plugin", "Codex 自带的 Chrome 插件",@chromeoder ähnliches sagt. - Chrome Computer Use: Verwenden Sie
mcp__computer_use__.*gegen die sichtbare Google Chrome-UI nur, wenn der Benutzer Computer Use anfordert oder keine Präferenz für das Chrome-Plugin angegeben ist und Computer Use verfügbar ist. - CDP-Skriptmodus: Verwenden Sie diesen nur als Fallback, wenn der ausgewählte Modus nicht verfügbar ist oder der Benutzer explizit nach dem CDP-/Skriptmodus fragt.
Skriptverzeichnis
Wichtig: Alle Skripte befinden sich im Unterverzeichnis scripts/ dieser Fähigkeit.
Ausführungsanweisungen für den Agenten:
- Bestimmen Sie den Verzeichnispfad dieser SKILL.md-Datei als
{baseDir} - Skriptpfad =
{baseDir}/scripts/<script-name>.ts - Ersetzen Sie alle
{baseDir}in diesem Dokument durch den tatsächlichen Pfad - Auflösen der
${BUN_X}-Laufzeit: Wennbuninstalliert →bun; wennnpxverfügbar →npx -y bun; sonst schlagen Sie die Installation von bun vor
Skriptreferenz:
| Skript | Zweck |
|---|---|
scripts/x-browser.ts | Normale Posts (Text + Bilder), CDP-Fallback |
scripts/x-video.ts | Videoposts (Text + Video), CDP-Fallback |
scripts/x-quote.ts | Zitat-Tweet mit Kommentar, CDP-Fallback |
scripts/x-article.ts | Veröffentlichung von Langform-Artikeln (Markdown), CDP-Fallback |
scripts/md-to-html.ts | Markdown → HTML-Konvertierung |
scripts/copy-to-clipboard.ts | Inhalt in die Zwischenablage kopieren |
scripts/paste-from-clipboard.ts | Echten Einfüge-Tastendruck senden |
scripts/check-paste-permissions.ts | Umgebung & Berechtigungen prüfen |
Auswahl des Ausführungsmodus (Erforderlich)
Wählen Sie genau einen Modus, bevor Sie mit X interagieren:
- Wenn der Benutzer explizit nach dem Codex Chrome-Plugin,
@chrome, der Chrome-Erweiterung oder „Codex 自带的 Chrome 插件“ fragt, verwenden Sie den Codex Chrome Plugin Mode. Rufen Sie Computer Use nicht zuerst auf. - Wenn der Benutzer explizit nach Chrome Computer Use fragt, verwenden Sie den Chrome Computer Use Mode. Fallback auf CDP, Playwright, den In-App-Browser oder das Chrome-Plugin nur nach Benachrichtigung und Genehmigung des Benutzers.
- Wenn der Benutzer explizit nach dem CDP-/Skriptmodus fragt, verwenden Sie den CDP Script Mode.
- Andernfalls bevorzugen Sie den Chrome Computer Use Mode. Für Markdown-X-Artikel mit lokalen Inhaltsbildern verwenden Sie den getesteten X-Editor-Workflow: Fügen Sie jedes Hauptbild über die Symbolleiste (
Einfügen->Medien-> Dialog-SchaltflächeFotos oder Video hinzufügen) an seinem Platzhalter ein und löschen Sie dann den Platzhaltertext. Verwenden Sie den CDP Script Mode nur, wenn der ausgewählte Browsersteuerungsmodus nicht verfügbar ist oder der UI-Upload-/Auswahlfluss unzuverlässig ist.
Verwenden Sie niemals den In-App-Browser für X-Veröffentlichungs-Workflows.
Codex Chrome Plugin Mode
Verwenden Sie diesen Modus, wann immer der Benutzer das Codex Chrome-Plugin, @chrome oder den Pfad der Chrome-Erweiterung anfordert. Dies nutzt das echte Chrome-Profil des Benutzers und die X-Anmeldung über das gebündelte Chrome-Plugin, nicht Computer Use und nicht CDP.
Einrichtung
- Laden Sie die
chrome:Chrome-Fähigkeit vor der Browserarbeit. - Verwenden Sie
tool_searchfürnode_repl js, wenn das Node REPLjs-Tool nicht bereits sichtbar ist. - Initialisieren Sie den Chrome-Browser-Client genau wie in der Chrome-Fähigkeit angegeben und führen Sie dann einen schlanken Aufruf wie
browser.user.openTabs()aus, um die Erweiterungsverbindung zu überprüfen. - Wenn der erste schlanke Aufruf fehlschlägt, warten Sie 2 Sekunden und versuchen Sie es einmal erneut. Wenn es immer noch fehlschlägt, folgen Sie den Erweiterungsprüfungen und Wiederherstellungsschritten der Chrome-Fähigkeit. Wenn die Prüfungen bestanden werden, aber die Kommunikation immer noch fehlschlägt, fragen Sie den Benutzer, bevor Sie ein neues Chrome-Fenster öffnen. Wechseln Sie nicht stillschweigend zu Computer Use oder CDP.
Allgemeine Regeln
- Verwenden Sie die APIs
browser.tabs.*,tab.playwright.*,tab.cua.*und die Dateiauswahl des Chrome-Plugins für X-UI-Aktionen. - Shell-Befehle sind für die Markdown-Vorverarbeitung und die Vorbereitung der Rich-HTML-Zwischenablage erlaubt. Verlassen Sie sich bei Bildern im Hauptteil von X-Artikeln nicht auf das Einfügen von Bildern aus der Zwischenablage; verwenden Sie den Upload-Workflow
Einfügen->Mediendes Editors. - Wenn ein Datei-Upload mit
Nicht erlaubtfehlschlägt, teilen Sie dem Benutzer mit:Um den Datei-Upload zu aktivieren, gehen Sie in Chrome zu chrome://extensions, klicken Sie unter der Codex-Erweiterung auf Details und aktivieren Sie "Zugriff auf Datei-URLs erlauben". Siehe https://developers.openai.com/codex/app/chrome-extension#upload-files für Details. - Wenn das Chrome-Plugin
native pipe is closedmeldet, wiederholen Sie den schlanken Browseraufruf einmal nach 2 Sekunden und führen Sie dann die Gesundheitsprüfungen der Chrome-Fähigkeit aus. Wenn Chrome läuft, die Erweiterung aktiviert ist und das Native-Host-Manifest korrekt ist, bitten Sie um Erlaubnis, ein neues Chrome-Fenster zu öffnen und es erneut zu versuchen. Senden Sie keine Browseraktionen weiterhin über die defekte Pipe. - Klicken Sie niemals auf
Veröffentlichen,Postenoder eine extern sichtbare Absendeaktion ohne ausdrückliche endgültige Bestätigung des Benutzers in der aktuellen Konversation.
X-Artikel
- Konvertieren Sie Markdown und behalten Sie die Bildzuordnung:
${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json - Lesen Sie die JSON-Ausgabe für
title,coverImageundcontentImages(placeholder→localPath). - Öffnen oder erstellen Sie den Artikelenwurf unter
https://x.com/compose/articles. - Laden Sie das Titelbild mit dem Dateiauswahl-Workflow des Chrome-Plugins hoch. Wenn der Upload durch Erweiterungsberechtigungen blockiert wird, stoppen Sie und melden Sie die genaue Berechtigungsbehebung wie oben.
- Füllen Sie den Titel aus und kopieren Sie dann Rich-HTML:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html - Fügen Sie den Inhalt mit einem echten Einfüge-Tastendruck über das Chrome-Plugin in den Artikelkörper ein. Auf macOS verwenden Sie
Meta+V. - Überprüfen Sie, ob der Editortext den Artikelkörper und
XIMGPH_-Platzhalter enthält. Verlassen Sie sich nicht auftab.clipboard.readText()als Beweis für die Systemzwischenablage nach Shell-Zwischenablageschreibvorgängen; auf macOS überprüfen Sie bei Bedarf mitpbpaste. - Für jedes
contentImages-Element in Platzhalterreihenfolge:- Suchen Sie den sichtbaren Platzhaltertext (
XIMGPH_N) und klicken Sie darauf, um die Einfügemarke dort zu platzieren. - Öffnen Sie das Symbolleistenmenü
Einfügen->Medien. - Klicken Sie im Modal auf die Symbolschaltfläche mit
aria-label="Fotos oder Video hinzufügen"; klicken Sie nicht auf den Text/die Dropzone oder die versteckte Dateieingabe. - Verwenden Sie die Dateiauswahl, um den
localPathdieses Bildes hochzuladen. - Wenn
XIMGPH_Nnach dem Erscheinen des Bildes darüber verbleibt, wählen Sie genau diesen Platzhalter aus und drücken Sie zuerstEntf. Verwenden SieRücktastenur, wennEntffehlschlägt und der ausgewählte Text genau dem Platzhalter entspricht. - Überprüfen Sie, ob die Platzhalteranzahl für dieses
XIMGPH_N0ist.
- Suchen Sie den sichtbaren Platzhaltertext (
- Öffnen Sie die Vorschau und überprüfen Sie Titel, Titelbild, Hauptteil, Links und Bilder.
- Bitten Sie um ausdrückliche Bestätigung, bevor Sie auf
Veröffentlichenklicken.
Einstellungen (EXTEND.md)
Überprüfen Sie EXTEND.md in Prioritätsreihenfolge – die erste gefundene Datei gewinnt:
| Priorität | Pfad | Bereich |
|---|---|---|
| 1 | .baoyu-skills/baoyu-post-to-x/EXTEND.md | Projekt |
| 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 | Benutzerverzeichnis |
Wenn keine gefunden wird, verwenden Sie die Standardeinstellungen.
EXTEND.md unterstützt: Standard-Chrome-Profil
Voraussetzungen
- Google Chrome oder Chromium
bun-Laufzeitumgebung- Erster Start: Melden Sie sich manuell bei X an (Sitzung wird gespeichert)
Vorabprüfung (Optional)
Schlagen Sie vor der ersten Verwendung die Durchführung der Umgebungsprüfung vor. Der Benutzer kann sie überspringen, wenn er möchte.
${BUN_X} {baseDir}/scripts/check-paste-permissions.ts
Prüfungen: Chrome, Profilisolation, Bun, Barrierefreiheit, Zwischenablage, Einfüge-Tastendruck, Chrome-Konflikte.
Wenn eine Prüfung fehlschlägt, geben Sie eine Lösungsanleitung pro Element:
| Prüfung | Lösung |
|---|---|
| Chrome | Installieren Sie Chrome oder setzen Sie die Umgebungsvariable X_BROWSER_CHROME_PATH |
| Profilverzeichnis | Geteiltes Profil unter baoyu-skills/chrome-profile (siehe Abschnitt Chrome Profile in CLAUDE.md) |
| Bun-Laufzeit | brew install oven-sh/bun/bun (macOS) oder npm install -g bun |
| Barrierefreiheit (macOS) | Systemeinstellungen → Datenschutz & Sicherheit → Bedienungshilfen → Terminal-App aktivieren |
| Zwischenablage-Kopie | Sicherstellen, dass Swift/AppKit verfügbar ist (macOS Xcode CLI-Tools: xcode-select --install) |
| Einfüge-Tastendruck (macOS) | Wie bei der Barrierefreiheitslösung oben |
| Einfüge-Tastendruck (Linux) | Installieren Sie xdotool (X11) oder ydotool (Wayland) |
Referenzen
- Normale Posts: Siehe
references/regular-posts.mdfür manuellen Workflow, Fehlerbehebung und technische Details - X-Artikel: Siehe
references/articles.mdfür Leitfaden zur Veröffentlichung von Langform-Artikeln
Chrome Computer Use Mode
Verwenden Sie diesen Modus, wenn der Benutzer explizit nach Chrome Computer Use fragt oder wenn keine Präferenz für das Chrome-Plugin angegeben ist und Codex Google Chrome mit Computer Use steuern kann. Dies nutzt das vorhandene Chrome-Fenster, Cookies, Anmeldung, Erweiterungen und die X-Sitzung des Benutzers.
Allgemeine Regeln:
- Beginnen Sie jede Assistentenrunde, die Chrome steuert, mit dem Aufruf von
get_app_statefürGoogle Chrome. - Bevorzugen Sie Elementindex-Aktionen, wenn verfügbar; verwenden Sie Koordinaten nur für die Textauswahl im Editor oder die Ziehauswahl.
- Verwenden Sie in diesem Modus nicht den In-App-Browser, das Chrome-Plugin, Playwright oder CDP für X-UI-Aktionen, es sei denn, der Benutzer stimmt einem Moduswechsel zu.
- Klicken Sie niemals auf
Veröffentlichen,Postenoder eine extern sichtbare Absendeaktion ohne ausdrückliche endgültige Bestätigung des Benutzers in der aktuellen Konversation.
Normale Posts:
- Öffnen oder navigieren Sie Chrome zu
https://x.com/compose/post. - Geben Sie den Posttext mit Computer Use in den Composer ein.
- Für jedes Bild führen Sie aus:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts image /absoluter/pfad/zum/bild.png - Fügen Sie mit Computer Use ein (
super+vauf macOS,control+vauf Windows/Linux) und warten Sie dann, bis X den Medien-Upload abgeschlossen hat. - Bitten Sie um Bestätigung, bevor Sie auf
Postenklicken.
Videoposts:
- Öffnen oder navigieren Sie Chrome zu
https://x.com/compose/post. - Geben Sie den Posttext in den Composer ein.
- Verwenden Sie die sichtbare Medien-Upload-/Dateiauswahl-UI, um das Video anzuhängen.
- Warten Sie, bis der Upload und die Verarbeitung abgeschlossen sind.
- Bitten Sie um Bestätigung, bevor Sie auf
Postenklicken.
Zitat-Tweets:
- Öffnen Sie die Tweet-URL in Chrome.
- Verwenden Sie die sichtbare Zitat-/Repost-UI, um Zitat auszuwählen.
- Geben Sie den Kommentar ein.
- Bitten Sie um Bestätigung, bevor Sie auf
Postenklicken.
X-Artikel:
- Konvertieren Sie Markdown und behalten Sie die Bildzuordnung:
${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json - Lesen Sie die JSON-Ausgabe für
title,coverImageundcontentImages(placeholder→localPath). - Öffnen Sie in Chrome
https://x.com/compose/articles, erstellen oder öffnen Sie den Entwurf, laden Sie das Titelbild hoch, falls vorhanden, und füllen Sie den Titel aus. - Kopieren Sie Rich-HTML in die Zwischenablage:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html - Fügen Sie mit Computer Use in den Artikelkörper ein.
- Für jeden
contentImages-Eintrag in Platzhalterreihenfolge:- Suchen Sie den genauen sichtbaren Platzhaltertext wie
XIMGPH_3und klicken Sie darauf, um die Einfügemarke zu setzen. - Öffnen Sie das Dropdown-Menü
Einfügenin der Symbolleiste, wählen SieMedienund klicken Sie dann auf die Symbolschaltfläche des Modals mit der BezeichnungFotos oder Video hinzufügen. - Verwenden Sie die native Dateiauswahl, um den
localPathdes Bildes auszuwählen. - Warten Sie, bis der Bildblock erscheint und alle Upload-Aktivitäten abgeschlossen sind.
- Wenn der Platzhalter über dem eingefügten Bild verbleibt, wählen Sie diesen Platzhaltertext erneut genau aus und drücken Sie zuerst
Entf. Verwenden SieRücktastenur, wennEntffehlschlägt und der ausgewählte Text genau dem Platzhalter entspricht.
- Suchen Sie den genauen sichtbaren Platzhaltertext wie
- Überprüfen Sie, ob keine
XIMGPH_-Platzhalter mehr vorhanden sind und die erwarteten Bilder erscheinen. - Öffnen Sie die Vorschau und überprüfen Sie Titel, Titelbild, Hauptteil, Links und Bilder.
- Bitten Sie um ausdrückliche Bestätigung, bevor Sie auf
Veröffentlichenklicken.
Wenn die Computer Use-Auswahl, der Symbolleisten-Upload oder die Dateiauswahlsteuerung unzuverlässig werden, stoppen Sie und melden Sie den Blocker, anstatt stillschweigend zum Chrome-Plugin oder CDP zu wechseln.
CDP Script Mode (Fallback)
Verwenden Sie die folgenden Skriptabschnitte nur, wenn der ausgewählte Browsersteuerungsmodus nicht verfügbar, unzuverlässig oder explizit nicht angefordert ist. Diese Skripte starten oder verwenden eine echte Chrome-Instanz über CDP und halten den Browser zur Überprüfung geöffnet.
Verwenden Sie den CDP Script Mode nicht, wenn der Benutzer explizit das Codex Chrome-Plugin oder Chrome Computer Use benötigt, es sei denn, der Benutzer genehmigt den Fallback, nachdem Sie den Blocker erklärt haben.
Auswahl des Posttyps
Sofern der Benutzer den Posttyp nicht explizit angibt:
- Nur Text + innerhalb von 10.000 Zeichen → Normaler Post (Premium-Mitglieder unterstützen bis zu 10.000 Zeichen, Nicht-Premium: 280)
- Markdown-Datei (.md) → X-Artikel
Normale Posts
${BUN_X} {baseDir}/scripts/x-browser.ts "Hallo!" --image ./foto.png
Parameter:
| Parameter | Beschreibung |
|---|---|
<text> | Postinhalt (positional) |
--image <pfad> | Bilddatei (wiederholbar, max. 4) |
--profile <verz> | Benutzerdefiniertes Chrome-Profil |
Hinweis: Das Skript öffnet den Browser mit vorausgefülltem Inhalt. Der Benutzer überprüft und veröffentlicht manuell.
Codex-Modus-Hinweis: Wenn der Benutzer explizit das Codex Chrome-Plugin angefordert hat, verwenden Sie den Codex Chrome Plugin Mode. Andernfalls, wenn Chrome Computer Use aktiviert ist, verwenden Sie den Chrome Computer Use Mode anstelle von x-browser.ts.
Videoposts
Text + Videodatei.
${BUN_X} {baseDir}/scripts/x-video.ts "Schau dir das an!" --video ./clip.mp4
Parameter:
| Parameter | Beschreibung |
|---|---|
<text> | Postinhalt (positional) |
--video <pfad> | Videodatei (MP4, MOV, WebM) |
--profile <verz> | Benutzerdefiniertes Chrome-Profil |
Hinweis: Das Skript öffnet den Browser mit vorausgefülltem Inhalt. Der Benutzer überprüft und veröffentlicht manuell.
Codex-Modus-Hinweis: Wenn der Benutzer explizit das Codex Chrome-Plugin angefordert hat, verwenden Sie den Codex Chrome Plugin Mode. Andernfalls, wenn Chrome Computer Use aktiviert ist, verwenden Sie den Chrome Computer Use Mode anstelle von x-video.ts.
Grenzen: Normal max. 140 s, Premium 60 min. Verarbeitung: 30–60 s.
Zitat-Tweets
Einen bestehenden Tweet mit Kommentar zitieren.
${BUN_X} {baseDir}/scripts/x-quote.ts https://x.com/user/status/123 "Tolle Einsicht!"
Parameter:
| Parameter | Beschreibung |
|---|---|
<tweet-url> | Zu zitierende URL (positional) |
<comment> | Kommentartext (positional, optional) |
--profile <verz> | Benutzerdefiniertes Chrome-Profil |
Hinweis: Das Skript öffnet den Browser mit vorausgefülltem Inhalt. Der Benutzer überprüft und veröffentlicht manuell.
Codex-Modus-Hinweis: Wenn der Benutzer explizit das Codex Chrome-Plugin angefordert hat, verwenden Sie den Codex Chrome Plugin Mode. Andernfalls, wenn Chrome Computer Use aktiviert ist, verwenden Sie den Chrome Computer Use Mode anstelle von x-quote.ts.
X-Artikel
Langform-Markdown-Artikel (erfordert X Premium).
${BUN_X} {baseDir}/scripts/x-article.ts article.md
${BUN_X} {baseDir}/scripts/x-article.ts article.md --cover ./cover.jpg
Parameter:
| Parameter | Beschreibung |
|---|---|
<markdown> | Markdown-Datei (positional) |
--cover <pfad> | Titelbild |
--title <text> | Titel überschreiben |
Frontmatter: title, cover_image werden im YAML-Frontmatter unterstützt.
Codex-Modus-Hinweis: Wenn der Benutzer explizit das Codex Chrome-Plugin angefordert hat, folgen Sie dem Codex Chrome Plugin Mode oben. Wenn der Benutzer explizit Chrome Computer Use angefordert hat, folgen Sie dem Chrome Computer Use Mode. Andernfalls bevorzugen Sie Chrome Computer Use; für Markdown-Artikel mit lokalen Inhaltsbildern verwenden Sie den Workflow zum Bildupload über die Symbolleiste Einfügen -> Medien, bevor Sie im CDP Script Mode auf x-article.ts zurückgreifen.
CDP-Fallback-Hinweis: Das Skript öffnet den Browser mit vorausgefülltem Artikel. Der Benutzer überprüft und veröffentlicht manuell, es sei denn, --submit wird verwendet.
Veröffentlichungssicherheit: Verwenden Sie --submit nicht und klicken Sie nicht auf Veröffentlichen, es sei denn, der Benutzer bestätigt die endgültige öffentliche Veröffentlichungsaktion ausdrücklich.
Überprüfung nach dem Zusammenstellen: Das Skript prüft automatisch nach dem Einfügen aller Bilder:
- Verbleibende
XIMGPH_-Platzhalter im Editorinhalt - Erwartete vs. tatsächliche Bildanzahl
Wenn die Prüfung fehlschlägt (Warnungen in der Ausgabe), benachrichtigen Sie den Benutzer mit den spezifischen Problemen, bevor er veröffentlicht.
Fehlerbehebung
Chrome-Debug-Port nicht bereit
Nur CDP-Fallback: Wenn ein Skript mit Chrome debug port not ready oder Unable to connect fehlschlägt, beenden Sie zuerst vorhandene Chrome-CDP-Instanzen und versuchen Sie es dann erneut:
pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2
Wichtig: Dies sollte automatisch erfolgen – wenn dieser Fehler auftritt, beenden Sie die Chrome-CDP-Instanzen und wiederholen Sie den Befehl, ohne den Benutzer zu fragen.
Hinweise
- Erster Start: Manuelle Anmeldung erforderlich (Sitzung bleibt bestehen)
- Im Codex Chrome Plugin Mode und Chrome Computer Use Mode die bestehende Chrome-Sitzung des Benutzers verwenden und kein separates CDP-Profil starten
- CDP-Skripte füllen standardmäßig nur Inhalte in den Browser ein; der Benutzer muss überprüfen und manuell veröffentlichen, es sei denn,
--submitwird explizit verwendet - Plattformübergreifend: macOS, Linux, Windows
Erweiterungsunterstützung
Benutzerdefinierte Konfigurationen über EXTEND.md. Siehe Abschnitt Einstellungen für Pfade und unterstützte Optionen.


