Publicar en X (Twitter)
Publica texto, imágenes, videos y artículos de formato largo en X a través de un navegador Chrome real.
En Codex, no confundas estas rutas de navegador:
- Complemento de Chrome de Codex /
@chrome/ Extensión de Chrome: usa la habilidad incorporadachrome:Chromey su cliente de navegador Node REPL. Esto es obligatorio cuando el usuario dice "Complemento de Chrome de Codex", "el complemento de Chrome propio de Codex",@chromeo similar. - Uso de Computadora con Chrome: usa
mcp__computer_use__.*contra la interfaz visible de Google Chrome solo cuando el usuario solicite Uso de Computadora o no se indique preferencia por el complemento de Chrome y el Uso de Computadora esté disponible. - Modo de script CDP: úsalo solo como respaldo cuando el modo seleccionado no esté disponible o el usuario solicite explícitamente el modo CDP/script.
Directorio de scripts
Importante: Todos los scripts se encuentran en el subdirectorio scripts/ de esta habilidad.
Instrucciones de ejecución del agente:
- Determina la ruta del directorio de este archivo SKILL.md como
{baseDir} - Ruta del script =
{baseDir}/scripts/<nombre-del-script>.ts - Reemplaza todos los
{baseDir}en este documento con la ruta real - Resuelve el tiempo de ejecución
${BUN_X}: sibuninstalado →bun; sinpxdisponible →npx -y bun; de lo contrario sugiere instalar bun
Referencia de scripts:
| Script | Propósito |
|---|---|
scripts/x-browser.ts | Publicaciones regulares (texto + imágenes), respaldo CDP |
scripts/x-video.ts | Publicaciones de video (texto + video), respaldo CDP |
scripts/x-quote.ts | Cita de tweet con comentario, respaldo CDP |
scripts/x-article.ts | Publicación de artículos de formato largo (Markdown), respaldo CDP |
scripts/md-to-html.ts | Conversión de Markdown → HTML |
scripts/copy-to-clipboard.ts | Copiar contenido al portapapeles |
scripts/paste-from-clipboard.ts | Enviar pulsación de pegado real |
scripts/check-paste-permissions.ts | Verificar entorno y permisos |
Selección del modo de ejecución (Obligatorio)
Elige exactamente un modo antes de interactuar con X:
- Si el usuario solicita explícitamente el complemento de Chrome de Codex,
@chrome, la extensión de Chrome o "el complemento de Chrome propio de Codex", usa el Modo de complemento de Chrome de Codex. No llames primero al Uso de Computadora. - Si el usuario solicita explícitamente el Uso de Computadora con Chrome, usa el Modo de Uso de Computadora con Chrome. No recurras a CDP, Playwright, el navegador integrado en la app o el complemento de Chrome sin informar al usuario y obtener su aprobación.
- Si el usuario solicita explícitamente el modo CDP/script, usa el Modo de script CDP.
- De lo contrario, prefiere el Modo de Uso de Computadora con Chrome. Para Artículos de X con imágenes de contenido local en Markdown, usa el flujo probado del editor de X: inserta cada imagen del cuerpo desde la barra de herramientas (
Insertar->Multimedia-> botón de icono en el diálogoAgregar fotos o video) en su marcador de posición, luego elimina el texto del marcador. Usa el Modo de script CDP solo cuando el modo de control del navegador seleccionado no esté disponible o el flujo de carga/selección de la interfaz de usuario no sea confiable.
Nunca uses el navegador integrado en la app para los flujos de publicación en X.
Modo de complemento de Chrome de Codex
Usa este modo siempre que el usuario solicite el complemento de Chrome de Codex, @chrome o la ruta de la extensión de Chrome. Esto utiliza el perfil real de Chrome del usuario y su inicio de sesión en X a través del complemento de Chrome incorporado, no el Uso de Computadora ni CDP.
Configuración
- Carga la habilidad
chrome:Chromeantes de trabajar con el navegador. - Usa
tool_searchparanode_repl jssi la herramientajsde Node REPL no está visible. - Inicializa el cliente del navegador Chrome exactamente como lo especifica la habilidad Chrome, luego ejecuta una llamada ligera como
browser.user.openTabs()para verificar la conexión de la extensión. - Si la primera llamada ligera falla, espera 2 segundos y vuelve a intentarlo una vez. Si aún falla, sigue los pasos de verificación de extensión y recuperación de la habilidad de Chrome. Si las verificaciones son correctas pero la comunicación sigue fallando, pregunta al usuario antes de abrir una nueva ventana de Chrome. No cambies al Uso de Computadora o CDP silenciosamente.
Reglas generales
- Usa las API
browser.tabs.*,tab.playwright.*,tab.cua.*y del selector de archivos del complemento de Chrome para las acciones de la interfaz de usuario de X. - Se permiten comandos de shell para el preprocesamiento de Markdown y la preparación del portapapeles con HTML enriquecido. Para las imágenes del cuerpo de un artículo de X, no dependas del pegado de imágenes desde el portapapeles; usa el flujo de carga
Insertar->Multimediadel editor. - Si una carga de archivo falla con
No permitido, dile al usuario:Para habilitar la carga de archivos, ve a chrome://extensions en Chrome, haz clic en Detalles debajo de la extensión de Codex y habilita "Permitir acceso a las URL de archivos". Consulta https://developers.openai.com/codex/app/chrome-extension#upload-files para más detalles. - Si el complemento de Chrome informa
tubería nativa cerrada, vuelve a intentar la llamada ligera al navegador una vez después de 2 segundos, luego ejecuta las comprobaciones de estado de la habilidad de Chrome. Si Chrome está en ejecución, la extensión está habilitada y el manifiesto del host nativo es correcto, pide permiso para abrir una nueva ventana de Chrome y vuelve a intentarlo. No sigas enviando acciones del navegador a través de la tubería rota. - Nunca hagas clic en
Publicar,Enviaro cualquier acción de envío visible externamente sin la confirmación final explícita del usuario en la conversación actual.
Artículos de X
- Convierte Markdown y conserva el mapa de imágenes:
${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json - Lee la salida JSON para obtener
title,coverImageycontentImages(placeholder→localPath). - Abre o crea el borrador del artículo en
https://x.com/compose/articles. - Sube la portada con el flujo del selector de archivos del complemento de Chrome. Si la carga está bloqueada por los permisos de la extensión, detente e informa la solución exacta de permisos anterior.
- Rellena el título, luego copia el HTML enriquecido:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html - Pega en el cuerpo del artículo con una pulsación de pegado real a través del complemento de Chrome. En macOS usa
Meta+V. - Verifica que el texto del editor contenga el cuerpo del artículo y los marcadores de posición
XIMGPH_. No confíes entab.clipboard.readText()como prueba del portapapeles del sistema después de las escrituras del portapapeles del shell; en macOS verifica conpbpastesi es necesario. - Para cada elemento de
contentImagesen el orden de los marcadores de posición:- Localiza el texto visible del marcador de posición (
XIMGPH_N) y haz clic en él para colocar el cursor allí. - Abre el menú de la barra de herramientas
Insertar->Multimedia. - En el modal, haz clic en el botón con el icono que tiene
aria-label="Agregar fotos o video"; no hagas clic en el texto/zona de arrastre ni en el campo de archivo oculto. - Usa el selector de archivos para cargar la
localPathde esa imagen. - Después de que aparezca la imagen, si
XIMGPH_Npermanece encima de ella, selecciona exactamente ese marcador y presionaEliminarprimero. UsaRetrocesosolo siEliminarfalla y se confirma que el texto seleccionado es exactamente el marcador. - Verifica que el recuento de marcadores para ese
XIMGPH_Nsea0.
- Localiza el texto visible del marcador de posición (
- Abre la Vista previa y verifica el título, la portada, el cuerpo, los enlaces y las imágenes.
- Pide confirmación explícita antes de hacer clic en
Publicar.
Preferencias (EXTEND.md)
Verifica EXTEND.md en orden de prioridad: el primero que se encuentre gana:
| Prioridad | Ruta | Ámbito |
|---|---|---|
| 1 | .baoyu-skills/baoyu-post-to-x/EXTEND.md | Proyecto |
| 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 | Hogar del usuario |
Si no se encuentra ninguno, usa los valores predeterminados.
EXTEND.md admite: Perfil de Chrome predeterminado
Requisitos previos
- Google Chrome o Chromium
- Tiempo de ejecución
bun - Primera ejecución: inicia sesión en X manualmente (la sesión se guarda)
Verificación previa al vuelo (Opcional)
Antes del primer uso, sugiere ejecutar la verificación del entorno. El usuario puede omitirla si lo prefiere.
${BUN_X} {baseDir}/scripts/check-paste-permissions.ts
Verificaciones: Chrome, aislamiento del perfil, Bun, Accesibilidad, portapapeles, pulsación de pegado, conflictos de Chrome.
Si alguna verificación falla, proporciona orientación de solución por elemento:
| Verificación | Solución |
|---|---|
| Chrome | Instala Chrome o establece la variable de entorno X_BROWSER_CHROME_PATH |
| Directorio de perfil | Perfil compartido en baoyu-skills/chrome-profile (consulta la sección Perfil de Chrome en CLAUDE.md) |
| Tiempo de ejecución Bun | brew install oven-sh/bun/bun (macOS) o npm install -g bun |
| Accesibilidad (macOS) | Configuración del Sistema → Privacidad y Seguridad → Accesibilidad → habilita la app de terminal |
| Copia del portapapeles | Asegúrate de que Swift/AppKit estén disponibles (herramientas CLI de Xcode en macOS: xcode-select --install) |
| Pulsación de pegado (macOS) | Igual que la solución de Accesibilidad anterior |
| Pulsación de pegado (Linux) | Instala xdotool (X11) o ydotool (Wayland) |
Referencias
- Publicaciones regulares: Consulta
references/regular-posts.mdpara conocer el flujo de trabajo manual, la resolución de problemas y los detalles técnicos - Artículos de X: Consulta
references/articles.mdpara obtener la guía de publicación de artículos de formato largo
Modo de Uso de Computadora con Chrome
Usa este modo cuando el usuario solicite explícitamente el Uso de Computadora con Chrome, o cuando no se indique preferencia por el complemento de Chrome y Codex pueda controlar Google Chrome con el Uso de Computadora. Esto utiliza la ventana de Chrome existente del usuario, las cookies, el inicio de sesión, las extensiones y la sesión de X.
Reglas generales:
- Comienza cada turno del asistente que controle Chrome llamando a
get_app_stateparaGoogle Chrome. - Prefiere las acciones de índice de elementos cuando estén disponibles; usa coordenadas solo para la selección de texto del editor o la selección por arrastre.
- No uses el navegador integrado en la app, el complemento de Chrome, Playwright o CDP para acciones de la interfaz de usuario de X en este modo a menos que el usuario apruebe un cambio de modo.
- Nunca hagas clic en
Publicar,Enviaro cualquier acción de envío visible externamente sin la confirmación final explícita del usuario en la conversación actual.
Publicaciones regulares:
- Abre o navega en Chrome a
https://x.com/compose/post. - Escribe el texto de la publicación en el compositor usando el Uso de Computadora.
- Para cada imagen, ejecuta:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts image /absolute/path/to/image.png - Pega con el Uso de Computadora (
super+ven macOS,control+ven Windows/Linux), luego espera hasta que X termine de subir el medio. - Pide confirmación antes de hacer clic en
Enviar.
Publicaciones de video:
- Abre o navega en Chrome a
https://x.com/compose/post. - Escribe el texto de la publicación en el compositor.
- Usa la interfaz de usuario visible de carga de medios/selector de archivos para adjuntar el video.
- Espera a que se complete la carga y el procesamiento.
- Pide confirmación antes de hacer clic en
Enviar.
Citar tweets:
- Abre la URL del tweet en Chrome.
- Usa la interfaz de usuario visible de citar/republicar para elegir Citar.
- Escribe el comentario.
- Pide confirmación antes de hacer clic en
Enviar.
Artículos de X:
- Convierte Markdown y conserva el mapa de imágenes:
${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json - Lee la salida JSON para obtener
title,coverImageycontentImages(placeholder→localPath). - En Chrome, abre
https://x.com/compose/articles, crea o abre el borrador, sube la portada si está presente y rellena el título. - Copia el HTML enriquecido al portapapeles:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html - Pega en el cuerpo del artículo con el Uso de Computadora.
- Para cada entrada de
contentImagesen el orden de los marcadores de posición:- Localiza el texto exacto visible del marcador de posición, como
XIMGPH_3, y haz clic en él para establecer el punto de inserción. - Abre el menú desplegable
Insertarde la barra de herramientas, eligeMultimedia, luego haz clic en el botón con el icono del modal etiquetado comoAgregar fotos o video. - Usa el selector de archivos nativo para elegir la
localPathde la imagen. - Espera hasta que aparezca el bloque de imagen y termine cualquier actividad de carga.
- Si el marcador de posición permanece encima de la imagen insertada, vuelve a seleccionar exactamente ese texto del marcador y presiona
Eliminarprimero. UsaRetrocesosolo siEliminarfalla y se confirma que el texto seleccionado es exactamente el marcador.
- Localiza el texto exacto visible del marcador de posición, como
- Verifica que no queden marcadores de posición
XIMGPH_y que aparezcan las imágenes esperadas. - Abre la Vista previa y verifica el título, la portada, el cuerpo, los enlaces y las imágenes.
- Pide confirmación explícita antes de hacer clic en
Publicar.
Si la selección con el Uso de Computadora, la carga desde la barra de herramientas o el control del selector de archivos se vuelven poco confiables, detente e informa el bloqueo en lugar de cambiar al complemento de Chrome o CDP silenciosamente.
Modo de script CDP (Respaldo)
Usa las secciones de script a continuación solo cuando el modo de control del navegador seleccionado no esté disponible, no sea confiable o no se haya solicitado explícitamente. Estos scripts inician o reutilizan una instancia real de Chrome a través de CDP y mantienen el navegador abierto para su revisión.
No uses el Modo de script CDP cuando el usuario requiera explícitamente el complemento de Chrome de Codex o el Uso de Computadora con Chrome, a menos que el usuario apruebe el respaldo después de que expliques el bloqueo.
Selección del tipo de publicación
A menos que el usuario especifique explícitamente el tipo de publicación:
- Texto sin formato + dentro de los 10,000 caracteres → Publicación regular (los miembros Premium admiten hasta 10,000 caracteres, no Premium: 280)
- Archivo Markdown (.md) → Artículo de X
Publicaciones regulares
${BUN_X} {baseDir}/scripts/x-browser.ts "Hello!" --image ./photo.png
Parámetros:
| Parámetro | Descripción |
|---|---|
<text> | Contenido de la publicación (posicional) |
--image <ruta> | Archivo de imagen (repetible, máx. 4) |
--profile <directorio> | Perfil de Chrome personalizado |
Nota: El script abre el navegador con el contenido rellenado. El usuario revisa y publica manualmente.
Nota del modo Codex: Si el usuario solicitó explícitamente el complemento de Chrome de Codex, usa el Modo de complemento de Chrome de Codex. De lo contrario, si el Uso de Computadora con Chrome está habilitado, usa el Modo de Uso de Computadora con Chrome en lugar de ejecutar x-browser.ts.
Publicaciones de video
Texto + archivo de video.
${BUN_X} {baseDir}/scripts/x-video.ts "Check this out!" --video ./clip.mp4
Parámetros:
| Parámetro | Descripción |
|---|---|
<text> | Contenido de la publicación (posicional) |
--video <ruta> | Archivo de video (MP4, MOV, WebM) |
--profile <directorio> | Perfil de Chrome personalizado |
Nota: El script abre el navegador con el contenido rellenado. El usuario revisa y publica manualmente.
Nota del modo Codex: Si el usuario solicitó explícitamente el complemento de Chrome de Codex, usa el Modo de complemento de Chrome de Codex. De lo contrario, si el Uso de Computadora con Chrome está habilitado, usa el Modo de Uso de Computadora con Chrome en lugar de ejecutar x-video.ts.
Límites: Regular máx. 140s, Premium 60min. Procesamiento: 30-60s.
Citar tweets
Cita un tweet existente con un comentario.
${BUN_X} {baseDir}/scripts/x-quote.ts https://x.com/user/status/123 "Great insight!"
Parámetros:
| Parámetro | Descripción |
|---|---|
<tweet-url> | URL a citar (posicional) |
<comment> | Texto del comentario (posicional, opcional) |
--profile <directorio> | Perfil de Chrome personalizado |
Nota: El script abre el navegador con el contenido rellenado. El usuario revisa y publica manualmente.
Nota del modo Codex: Si el usuario solicitó explícitamente el complemento de Chrome de Codex, usa el Modo de complemento de Chrome de Codex. De lo contrario, si el Uso de Computadora con Chrome está habilitado, usa el Modo de Uso de Computadora con Chrome en lugar de ejecutar x-quote.ts.
Artículos de X
Artículos de Markdown de formato largo (requiere X Premium).
${BUN_X} {baseDir}/scripts/x-article.ts article.md
${BUN_X} {baseDir}/scripts/x-article.ts article.md --cover ./cover.jpg
Parámetros:
| Parámetro | Descripción |
|---|---|
<markdown> | Archivo Markdown (posicional) |
--cover <ruta> | Imagen de portada |
--title <texto> | Anular título |
Frontmatter: title, cover_image admitidos en el front matter YAML.
Nota del modo Codex: Si el usuario solicitó explícitamente el complemento de Chrome de Codex, sigue el Modo de complemento de Chrome de Codex anterior. Si el usuario solicitó explícitamente el Uso de Computadora con Chrome, sigue el Modo de Uso de Computadora con Chrome. De lo contrario, prefiere el Uso de Computadora con Chrome; para artículos de Markdown con imágenes de contenido local, usa el flujo de carga de imágenes de la barra de herramientas Insertar -> Multimedia antes de recurrir a x-article.ts en el Modo de script CDP.
Nota de respaldo CDP: El script abre el navegador con el artículo rellenado. El usuario revisa y publica manualmente a menos que se use --submit.
Seguridad de publicación: No uses --submit ni hagas clic en Publicar a menos que el usuario confirme explícitamente la acción de publicación pública final.
Verificación posterior a la composición: El script verifica automáticamente después de que se hayan insertado todas las imágenes:
- Marcadores de posición
XIMGPH_restantes en el contenido del editor - Recuento de imágenes esperado vs real
Si la verificación falla (advertencias en la salida), alerta al usuario con los problemas específicos antes de que publique.
Solución de problemas
Puerto de depuración de Chrome no listo
Solo para respaldo CDP: si un script falla con Puerto de depuración de Chrome no listo o No se puede conectar, elimina primero las instancias existentes de Chrome CDP y luego vuelve a intentarlo:
pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2
Importante: Esto debe hacerse automáticamente: al encontrar este error, elimina las instancias de Chrome CDP y vuelve a intentar el comando sin preguntar al usuario.
Notas
- Primera ejecución: se requiere inicio de sesión manual (la sesión persiste)
- En el Modo de complemento de Chrome de Codex y el Modo de Uso de Computadora con Chrome, usa la sesión de Chrome existente del usuario y no inicies un perfil CDP separado
- Por defecto, los scripts CDP solo rellenan el contenido en el navegador; el usuario debe revisar y publicar manualmente a menos que se use
--submitexplícitamente - Multiplataforma: macOS, Linux, Windows
Soporte de extensión
Configuraciones personalizadas a través de EXTEND.md. Consulta la sección Preferencias para las rutas y opciones admitidas.


