Publicar no X (Twitter)
Publica texto, imagens, vídeos e artigos de formato longo no X através de um navegador Chrome real.
No Codex, não confunda estes caminhos de navegador:
- Plugin Chrome do Codex /
@chrome/ Extensão Chrome: use a habilidadechrome:Chromeempacotada e seu cliente de navegador Node REPL. Isto é necessário sempre que o usuário mencionar "Plugin Chrome do Codex", "Codex 自带的 Chrome 插件",@chrome, ou similar. - Uso do Computador com Chrome: use
mcp__computer_use__.*contra a interface visível do Google Chrome apenas quando o usuário solicitar o Uso do Computador ou quando nenhuma preferência pelo plugin Chrome for declarada e o Uso do Computador estiver disponível. - Modo de script CDP: use apenas como alternativa quando o modo selecionado estiver indisponível ou o usuário solicitar explicitamente o modo CDP/script.
Diretório de Scripts
Importante: Todos os scripts estão localizados no subdiretório scripts/ desta habilidade.
Instruções de Execução para o Agente:
- Determine o caminho do diretório deste arquivo SKILL.md como
{baseDir} - Caminho do script =
{baseDir}/scripts/<nome-do-script>.ts - Substitua todos os
{baseDir}neste documento pelo caminho real - Resolva o ambiente de execução
${BUN_X}: sebuninstalado →bun; senpxdisponível →npx -y bun; caso contrário, sugira instalar o bun
Referência de Scripts:
| Script | Finalidade |
|---|---|
scripts/x-browser.ts | Postagens regulares (texto + imagens), alternativa CDP |
scripts/x-video.ts | Postagens de vídeo (texto + vídeo), alternativa CDP |
scripts/x-quote.ts | Tweet com citação e comentário, alternativa CDP |
scripts/x-article.ts | Publicação de artigos de formato longo (Markdown), alternativa CDP |
scripts/md-to-html.ts | Conversão de Markdown → HTML |
scripts/copy-to-clipboard.ts | Copiar conteúdo para a área de transferência |
scripts/paste-from-clipboard.ts | Enviar pressionamento de tecla de colagem real |
scripts/check-paste-permissions.ts | Verificar ambiente e permissões |
Seleção do Modo de Execução (Obrigatório)
Escolha exatamente um modo antes de interagir com o X:
- Se o usuário solicitar explicitamente o plugin Chrome do Codex,
@chrome, a extensão Chrome, ou "Codex 自带的 Chrome 插件", use o Modo Plugin Chrome do Codex. Não chame o Uso do Computador primeiro. - Se o usuário solicitar explicitamente o Uso do Computador com Chrome, use o Modo de Uso do Computador com Chrome. Não recorra ao CDP, Playwright, ao Navegador integrado no aplicativo, ou ao plugin Chrome sem informar o usuário e obter aprovação.
- Se o usuário solicitar explicitamente o modo CDP/script, use o Modo de Script CDP.
- Caso contrário, prefira o Modo de Uso do Computador com Chrome. Para Artigos no X com imagens de conteúdo local em Markdown, use o fluxo testado do editor do X: insira cada imagem do corpo a partir da barra de ferramentas (
Inserir->Mídia-> botão de ícone do diálogoAdicionar fotos ou vídeo) no espaço reservado correspondente, depois exclua o texto do espaço reservado. Use o Modo de Script CDP apenas quando o modo de controle do navegador selecionado estiver indisponível ou o fluxo de upload/seleção da interface estiver não confiável.
Nunca use o Navegador integrado no aplicativo para fluxos de publicação no X.
Modo Plugin Chrome do Codex
Use este modo sempre que o usuário solicitar o plugin Chrome do Codex, @chrome, ou o caminho da Extensão Chrome. Isto usa o perfil real do Chrome e o login no X do usuário através do plugin Chrome empacotado, não o Uso do Computador e não o CDP.
Configuração
- Carregue a habilidade
chrome:Chromeantes de trabalhar com o navegador. - Use
tool_searchparanode_repl jsse a ferramentajsdo Node REPL ainda não estiver visível. - Inicialize o cliente do navegador Chrome exatamente como especificado na habilidade Chrome, então execute uma chamada leve como
browser.user.openTabs()para verificar a conexão da extensão. - Se a primeira chamada leve falhar, aguarde 2 segundos e tente novamente uma vez. Se ainda falhar, siga as verificações e etapas de recuperação da extensão da habilidade Chrome. Se as verificações passarem mas a comunicação ainda falhar, pergunte ao usuário antes de abrir uma nova janela do Chrome. Não mude para o Uso do Computador ou CDP silenciosamente.
Regras gerais
- Use as APIs
browser.tabs.*,tab.playwright.*,tab.cua.*e o seletor de arquivos do plugin Chrome para ações na interface do X. - Comandos de shell são permitidos para pré-processamento de Markdown e preparação do clipboard com HTML rico. Para imagens no corpo do Artigos do X, não confie na colagem de imagem do clipboard; use o fluxo de upload
Inserir->Mídiado editor. - Se o upload de um arquivo falhar com
Não permitido, informe o usuário:Para habilitar o upload de arquivos, vá para chrome://extensions no Chrome, clique em Detalhes sob a extensão Codex e habilite "Permitir acesso a URLs de arquivo." Veja https://developers.openai.com/codex/app/chrome-extension#upload-files para detalhes. - Se o plugin Chrome relatar
native pipe is closed, tente a chamada leve do navegador uma vez após 2 segundos e então execute as verificações de integridade da habilidade Chrome. Se o Chrome estiver em execução, a extensão estiver habilitada, e o manifesto do host nativo estiver correto, peça permissão para abrir uma nova janela do Chrome e tente novamente. Não continue enviando ações do navegador através do pipe quebrado. - Nunca clique em
Publicar,Postarou qualquer ação de envio externamente visível sem uma confirmação final explícita do usuário na conversa atual.
Artigos no X
- Converta Markdown e mantenha o mapa de imagens:
${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json - Leia a saída JSON para
title,coverImageecontentImages(placeholder→localPath). - Abra ou crie o rascunho do artigo em
https://x.com/compose/articles. - Faça upload da capa com o fluxo do seletor de arquivos do plugin Chrome. Se o upload for bloqueado por permissões da extensão, pare e relate a correção exata de permissão acima.
- Preencha o título e então copie o HTML rico:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html - Cole no corpo do artigo com um pressionamento de tecla de colagem real através do plugin Chrome. No macOS use
Meta+V. - Verifique se o texto do editor contém o corpo do artigo e os espaços reservados
XIMGPH_. Não confie emtab.clipboard.readText()como prova do clipboard do sistema após escritas do shell; no macOS verifique compbpastese necessário. - Para cada item em
contentImagesna ordem dos espaços reservados:- Localize o texto visível do espaço reservado (
XIMGPH_N) e clique nele para posicionar o cursor lá. - Abra o menu da barra de ferramentas
Inserir->Mídia. - No modal, clique no botão de ícone com
aria-label="Adicionar fotos ou vídeo"; não clique no texto/área de arrastar ou no campo de entrada de arquivo oculto. - Use o seletor de arquivos para fazer upload do
localPathdaquela imagem. - Após a imagem aparecer, se
XIMGPH_Npermanecer acima dela, selecione exatamente aquele espaço reservado e pressioneDeleteprimeiro. UseBackspaceapenas seDeletefalhar e o texto selecionado for confirmado como sendo exatamente o espaço reservado. - Verifique se a contagem do espaço reservado para aquele
XIMGPH_Né0.
- Localize o texto visível do espaço reservado (
- Abra a Pré-visualização e verifique título, capa, corpo, links e imagens.
- Peça confirmação explícita antes de clicar em
Publicar.
Preferências (EXTEND.md)
Verifique EXTEND.md na ordem de prioridade — o primeiro encontrado prevalece:
| Prioridade | Caminho | Escopo |
|---|---|---|
| 1 | .baoyu-skills/baoyu-post-to-x/EXTEND.md | Projeto |
| 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 do usuário |
Se nenhum for encontrado, use os padrões.
EXTEND.md suporta: Perfil padrão do Chrome
Pré-requisitos
- Google Chrome ou Chromium
- Ambiente de execução
bun - Primeira execução: faça login manualmente no X (sessão salva)
Verificação Prévia (Opcional)
Antes do primeiro uso, sugira executar a verificação do ambiente. O usuário pode pular se preferir.
${BUN_X} {baseDir}/scripts/check-paste-permissions.ts
Verificações: Chrome, isolamento de perfil, Bun, Acessibilidade, área de transferência, pressionamento de tecla de colagem, conflitos do Chrome.
Se alguma verificação falhar, forneça orientações de correção por item:
| Verificação | Correção |
|---|---|
| Chrome | Instale o Chrome ou defina a variável de ambiente X_BROWSER_CHROME_PATH |
| Diretório de perfil | Perfil compartilhado em baoyu-skills/chrome-profile (veja a seção Perfil do Chrome em CLAUDE.md) |
| Ambiente de execução Bun | brew install oven-sh/bun/bun (macOS) ou npm install -g bun |
| Acessibilidade (macOS) | Preferências do Sistema → Privacidade e Segurança → Acessibilidade → habilite o aplicativo de terminal |
| Cópia para a área de transferência | Garanta que Swift/AppKit esteja disponível (ferramentas de linha de comando do Xcode no macOS: xcode-select --install) |
| Pressionamento de tecla de colagem (macOS) | Igual à correção de Acessibilidade acima |
| Pressionamento de tecla de colagem (Linux) | Instale xdotool (X11) ou ydotool (Wayland) |
Referências
- Postagens Regulares: Veja
references/regular-posts.mdpara fluxo de trabalho manual, solução de problemas e detalhes técnicos - Artigos no X: Veja
references/articles.mdpara guia de publicação de artigos de formato longo
Modo de Uso do Computador com Chrome
Use este modo quando o usuário solicitar explicitamente o Uso do Computador com Chrome, ou quando nenhuma preferência pelo plugin Chrome for declarada e o Codex puder controlar o Google Chrome com o Uso do Computador. Isto usa a janela existente do Chrome do usuário, cookies, login, extensões e sessão do X.
Regras gerais:
- Inicie cada turno do assistente que controla o Chrome chamando
get_app_stateparaGoogle Chrome. - Prefira ações de índice de elemento quando disponíveis; use coordenadas apenas para seleção de texto do editor ou arrastar seleção.
- Não use o Navegador integrado no aplicativo, o plugin Chrome, Playwright ou CDP para ações na interface do X neste modo a menos que o usuário aprove uma mudança de modo.
- Nunca clique em
Publicar,Postarou qualquer ação de envio externamente visível sem uma confirmação final explícita do usuário na conversa atual.
Postagens regulares:
- Abra ou navegue no Chrome para
https://x.com/compose/post. - Digite o texto da postagem no compositor usando o Uso do Computador.
- Para cada imagem, execute:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts image /caminho/absoluto/para/imagem.png - Cole com o Uso do Computador (
super+vno macOS,control+vno Windows/Linux), então aguarde até que o X termine de fazer upload da mídia. - Peça confirmação antes de clicar em
Postar.
Postagens de vídeo:
- Abra ou navegue no Chrome para
https://x.com/compose/post. - Digite o texto da postagem no compositor.
- Use a interface visível de upload de mídia/seletor de arquivos para anexar o vídeo.
- Aguarde o upload e o processamento terminarem.
- Peça confirmação antes de clicar em
Postar.
Citações de tweet:
- Abra a URL do tweet no Chrome.
- Use a interface visível de citação/repostagem para escolher Citar.
- Digite o comentário.
- Peça confirmação antes de clicar em
Postar.
Artigos no X:
- Converta Markdown e mantenha o mapa de imagens:
${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json - Leia a saída JSON para
title,coverImageecontentImages(placeholder→localPath). - No Chrome, abra
https://x.com/compose/articles, crie ou abra o rascunho, faça upload da capa se presente e preencha o título. - Copie HTML rico para a área de transferência:
${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html - Cole no corpo do artigo com o Uso do Computador.
- Para cada entrada em
contentImagesna ordem dos espaços reservados:- Localize o texto exato do espaço reservado visível como
XIMGPH_3e clique nele para definir o ponto de inserção. - Abra o menu suspenso
Inserirda barra de ferramentas, escolhaMídia, então clique no botão de ícone do modal rotuladoAdicionar fotos ou vídeo. - Use o seletor de arquivos nativo para escolher o
localPathda imagem. - Aguarde até que o bloco da imagem apareça e qualquer atividade de upload termine.
- Se o espaço reservado permanecer acima da imagem inserida, selecione novamente exatamente aquele texto do espaço reservado e pressione
Deleteprimeiro. UseBackspaceapenas seDeletefalhar e o texto selecionado for confirmado como sendo exatamente o espaço reservado.
- Localize o texto exato do espaço reservado visível como
- Verifique se nenhum espaço reservado
XIMGPH_permanece e as imagens esperadas aparecem. - Abra a Pré-visualização e verifique título, capa, corpo, links e imagens.
- Peça confirmação explícita antes de clicar em
Publicar.
Se a seleção do Uso do Computador, o upload da barra de ferramentas ou o controle do seletor de arquivos se tornar não confiável, pare e relate o bloqueio em vez de mudar para o plugin Chrome ou CDP silenciosamente.
Modo de Script CDP (Alternativa)
Use as seções de script abaixo apenas quando o modo de controle do navegador selecionado estiver indisponível, não confiável ou explicitamente não solicitado. Esses scripts iniciam ou reutilizam uma instância real do Chrome via CDP e mantêm o navegador aberto para revisão.
Não use o Modo de Script CDP quando o usuário solicitar explicitamente o plugin Chrome do Codex ou o Uso do Computador com Chrome, a menos que o usuário aprove a alternativa após você explicar o bloqueio.
Seleção do Tipo de Postagem
A menos que o usuário especifique explicitamente o tipo de postagem:
- Texto simples + dentro de 10.000 caracteres → Postagem Regular (membros Premium suportam até 10.000 caracteres, não-Premium: 280)
- Arquivo Markdown (.md) → Artigo no X
Postagens Regulares
${BUN_X} {baseDir}/scripts/x-browser.ts "Olá!" --image ./foto.png
Parâmetros:
| Parâmetro | Descrição |
|---|---|
<texto> | Conteúdo da postagem (posicional) |
--image <caminho> | Arquivo de imagem (repetível, máx 4) |
--profile <dir> | Perfil personalizado do Chrome |
Nota: O script abre o navegador com o conteúdo preenchido. O usuário revisa e publica manualmente.
Nota do modo Codex: Se o usuário solicitou explicitamente o plugin Chrome do Codex, use o Modo Plugin Chrome do Codex. Caso contrário, se o Uso do Computador com Chrome estiver habilitado, use o Modo de Uso do Computador com Chrome em vez de executar x-browser.ts.
Postagens de Vídeo
Texto + arquivo de vídeo.
${BUN_X} {baseDir}/scripts/x-video.ts "Veja isso!" --video ./clip.mp4
Parâmetros:
| Parâmetro | Descrição |
|---|---|
<texto> | Conteúdo da postagem (posicional) |
--video <caminho> | Arquivo de vídeo (MP4, MOV, WebM) |
--profile <dir> | Perfil personalizado do Chrome |
Nota: O script abre o navegador com o conteúdo preenchido. O usuário revisa e publica manualmente.
Nota do modo Codex: Se o usuário solicitou explicitamente o plugin Chrome do Codex, use o Modo Plugin Chrome do Codex. Caso contrário, se o Uso do Computador com Chrome estiver habilitado, use o Modo de Uso do Computador com Chrome em vez de executar x-video.ts.
Limites: Regular máx 140s, Premium 60min. Processamento: 30-60s.
Citações de Tweet
Citar um tweet existente com comentário.
${BUN_X} {baseDir}/scripts/x-quote.ts https://x.com/user/status/123 "Ótima percepção!"
Parâmetros:
| Parâmetro | Descrição |
|---|---|
<url-do-tweet> | URL para citar (posicional) |
<comentário> | Texto do comentário (posicional, opcional) |
--profile <dir> | Perfil personalizado do Chrome |
Nota: O script abre o navegador com o conteúdo preenchido. O usuário revisa e publica manualmente.
Nota do modo Codex: Se o usuário solicitou explicitamente o plugin Chrome do Codex, use o Modo Plugin Chrome do Codex. Caso contrário, se o Uso do Computador com Chrome estiver habilitado, use o Modo de Uso do Computador com Chrome em vez de executar x-quote.ts.
Artigos no X
Artigos longos em Markdown (requer X Premium).
${BUN_X} {baseDir}/scripts/x-article.ts article.md
${BUN_X} {baseDir}/scripts/x-article.ts article.md --cover ./capa.jpg
Parâmetros:
| Parâmetro | Descrição |
|---|---|
<markdown> | Arquivo Markdown (posicional) |
--cover <caminho> | Imagem de capa |
--title <texto> | Substituir título |
Frontmatter: title, cover_image suportados no front matter YAML.
Nota do modo Codex: Se o usuário solicitou explicitamente o plugin Chrome do Codex, siga o Modo Plugin Chrome do Codex acima. Se o usuário solicitou explicitamente o Uso do Computador com Chrome, siga o Modo de Uso do Computador com Chrome. Caso contrário, prefira o Uso do Computador com Chrome; para artigos em Markdown com imagens de conteúdo local, use o fluxo de upload de imagem Inserir -> Mídia da barra de ferramentas antes de recorrer ao x-article.ts no Modo de Script CDP.
Nota de alternativa CDP: O script abre o navegador com o artigo preenchido. O usuário revisa e publica manualmente a menos que --submit seja usado.
Segurança na publicação: Não use --submit ou clique em Publicar a menos que o usuário confirme explicitamente a ação de publicação final.
Verificação Pós-Composição: O script verifica automaticamente após todas as imagens serem inseridas:
- Espaços reservados
XIMGPH_restantes no conteúdo do editor - Contagem esperada vs real de imagens
Se a verificação falhar (avisos na saída), alerte o usuário com os problemas específicos antes de publicar.
Solução de Problemas
Porta de depuração do Chrome não está pronta
Apenas para alternativa CDP: se um script falhar com Chrome debug port not ready ou Unable to connect, elimine as instâncias CDP existentes do Chrome primeiro e tente novamente:
pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2
Importante: Isto deve ser feito automaticamente — ao encontrar este erro, elimine as instâncias CDP do Chrome e tente novamente o comando sem perguntar ao usuário.
Notas
- Primeira execução: login manual necessário (sessão persiste)
- No Modo Plugin Chrome do Codex e no Modo de Uso do Computador com Chrome, use a sessão existente do Chrome do usuário e não inicie um perfil CDP separado
- Os scripts CDP apenas preenchem o conteúdo no navegador por padrão; o usuário deve revisar e publicar manualmente a menos que
--submitseja explicitamente usado - Multiplataforma: macOS, Linux, Windows
Suporte a Extensões
Configurações personalizadas via EXTEND.md. Veja a seção Preferências para caminhos e opções suportadas.


