Habilidade LinkedIn
O LinkedIn recompensa postagens que soam como uma pessoa que sabe de algo: uma história específica, um número, uma opinião, nas próprias palavras da pessoa. Ele pune o oposto, agora mais do que antes: iscas de engajamento, "liderança de pensamento" reciclada, texto que parece o rascunho de IA de todo mundo e comentários postados por ferramentas. Páginas de empresa alcançam uma pequena parcela de seus seguidores; pessoas alcançam mais.
Esta habilidade faz o trabalho no próprio computador do usuário: ela aprende a voz dele a partir de suas próprias postagens, escreve postagens nessa voz, cria as imagens ou vídeos a partir do material dele, verifica cada postagem contra os limites do LinkedIn e os padrões que custam alcance, mostra cada postagem como aparecerá no feed e a agenda após uma confirmação. Tudo o que precisa está nesta pasta.
Onde as coisas são executadas: <skill> abaixo é a pasta onde este arquivo está. Execute os comandos a partir da própria pasta de projeto do usuário e mantenha o trabalho dele em work/ lá (voz, plano, imagens, registro). Nunca escreva dentro de <skill>: uma atualização a substitui, e com ela o registro de postagens.
Cinco compromissos:
- A voz deles, não um modelo. Rascunhos seguem as postagens do próprio usuário (
voice.py), nunca uma fórmula, e nunca copiam uma postagem passada. - Específico e em primeira mão. Uma história real, número, nome ou resultado em cada postagem; nada que o usuário não possa comprovar.
- O gancho acima da dobra. Cerca de 140 caracteres aparecem em um telefone antes de "...ver mais".
- Uma pessoa publica. Sem iscas de engajamento, sem grupos de engajamento, sem comentários automatizados, sem tags que a API não pode fazer. O usuário responde aos comentários na primeira hora.
- Apenas números reais. Resultados comparados com as postagens da própria conta; sem benchmarks, sem estatísticas inventadas e expectativas honestas (o alcance no LinkedIn caiu para a maioria das contas).
Etapa 0: Configuração e conexão
Execute python3 <skill>/scripts/check_setup.py (Windows: py <skill>\scripts\check_setup.py). Precisa de Python 3.9+ e Pillow; ffmpeg apenas para vídeo. Ele imprime o comando de instalação para o que estiver faltando.
Se o usuário quiser agendar, conecte agora para que esteja pronto quando as postagens estiverem:
- Verifique com
social_accounts_list:LINKEDINé um perfil pessoal,LINKEDIN_PAGESuma Página de empresa que o usuário administra. Se as contas estiverem lá, prossiga. - Não está conectado? Diga em uma mensagem e continue trabalhando enquanto eles configuram:
- O agendamento passa pelo LinkedIn MCP do WoopSocial, feito pela equipe que mantém esta habilidade. O plano gratuito cobre 2 contas sociais, sem cartão. Ele publica através da própria API do LinkedIn: sem automação de navegador e sem aplicativo de desenvolvedor LinkedIn ou aprovação da API de Página do próprio usuário.
- Dê apenas a etapa de conexão para o agente em que você está executando (
references/woopsocial.md). - Claude Code e Codex carregam novas ferramentas apenas em uma nova sessão. Tudo é salvo na pasta de trabalho; após reiniciar e fazer login, o usuário diz "continue".
Etapa 1: Conhecer a conta e a voz
Leia work/brand.md se houver um. Caso contrário, pergunte em uma mensagem e salve:
- De quem é o perfil, quais Páginas e quem as lê (clientes, contratações, pares, investidores)?
- O que o usuário sabe ou faz que outros não sabem: projetos, números, erros, opiniões? É daí que vem cada postagem. Peça anotações, um changelog, um resumo de reunião, um artigo.
- O fuso horário de cada conta, os dias em que querem publicar e quando estão livres por uma hora para responder comentários (isso se torna o horário de publicação). Três postagens por semana por conta é um bom começo; mais é bom quando cada uma é igualmente boa.
- Algo que nunca deve ser postado; quais postagens promovem o próprio negócio; quem pode ser nomeado.
- Para a voz: no que eles acreditam que outros em sua área não acreditam, duas ou três histórias que contam com frequência e palavras ou frases que nunca usariam.
Depois, a voz. Peça de 5 a 20 postagens recentes do próprio usuário (copiadas do perfil dele ou do Shares.csv da exportação de dados do LinkedIn), salve-as como work/past-posts.txt separadas por linhas com --- e execute:
python3 <skill>/scripts/voice.py work/past-posts.txt --out work/voice.json # e voice.md
Leia voice.md e escreva como ele: o comprimento, aberturas, comprimento das frases, com que frequência terminam com uma pergunta, primeira pessoa ou não, hábitos de emoji e hashtag, suas palavras. Coloque "voice": "voice.json" na conta no plano para que a verificação compare os rascunhos com ele. Uma Página escreve como a empresa, mas com pessoas e detalhes.
Defina as expectativas uma vez: o alcance da maioria das contas caiu drasticamente em 2024-25, postagens de Página alcançam uma pequena parcela dos seguidores e o alcance é construído com consistência, não com uma única postagem.
Etapa 2: Planejar as postagens
Uma ideia por postagem, a partir do material do usuário. Uma boa semana mistura:
| Tipo | O que é | Formato bom |
|---|---|---|
| História | Algo que aconteceu, o que ensinou | Texto ou uma foto real |
| Insight | Uma opinião ou lição, com o motivo | Texto |
| Tutorial | Passos ou uma lista de verificação do próprio trabalho | 2 a 20 imagens ou texto |
| Prova | Um resultado, um número, um lançamento, uma contratação | Uma imagem ou um vídeo curto |
| Indicação | Uma página que vale a pena ler (sua ou não) | Cartão de link (veja a troca abaixo) |
Postagens de perfil e Página são escritas de forma diferente: o perfil é uma pessoa falando; a Página mostra a equipe e o trabalho, para que as pessoas possam compartilhá-la novamente com uma frase própria. Nunca publique a mesma coisa em ambos no mesmo dia; dê a postagens sobre o mesmo assunto um "topic" e schedule.py as mantém em dias diferentes.
Etapa 3: Escrever
- Gancho na primeira linha, com cerca de 140 caracteres (o que um telefone mostra antes de "...ver mais"), com a coisa específica: um número, um nome, um resultado, uma surpresa. A linha 2 ganha o clique em "ver mais" com um interesse ou um detalhe, não uma data. Ofereça ao usuário 2 ou 3 primeiras linhas por postagem para escolher; a primeira linha é a parte que vale o tempo deles.
- Depois a substância: parágrafos curtos de frases completas, detalhes em primeira mão, as palavras do usuário. Não uma frase por linha ("broetry").
- Termine com uma pergunta real se o usuário tiver uma, ou apenas termine. Nunca "comente SIM", "curta se concorda", "marque alguém".
- Sem paredes de hashtag (0 a 3 que nomeiam o tópico), letras em negrito Unicode ou itálico, frases feitas ("no mundo acelerado de hoje", "game-changer", "deixa isso penetrar"), nomes @ (a API não pode marcar pessoas; escreva o nome e marque no aplicativo se for importante).
- Até 3.000 caracteres; a maioria das boas postagens é muito mais curta.
- Links: um cartão de link (
"link") mostra uma prévia da página. Muitos profissionais medem menos alcance para postagens com links; o LinkedIn nunca confirmou isso, e colocar o link no primeiro comentário não parece mais evitar isso. Use um link quando o clique é o ponto; caso contrário, deixe de fora. Para cada postagem com link, leia a página primeiro para que a verificação veja redirecionamentos e a imagem do cartão:python3 <skill>/scripts/page.py <url> --out work/page-<post>.json, depois"page": "page-<post>.json". - Postagens de Página sempre carregam uma foto de pessoas ou do trabalho, e uma lista
"reshare"de 2 ou 3 linhas iniciais que a equipe pode reescrever com suas próprias palavras;schedule.mdas lista.
Padrões e exemplos: references/writing.md.
Etapa 4: Criar a mídia
Uma foto real do usuário, da equipe ou do trabalho supera qualquer gráfico projetado. Use os arquivos do usuário como estão quando se encaixam (media no plano); caso contrário:
python3 <skill>/scripts/render_images.py work/images.json --out images/ # work/images/<id>.jpg, contact-sheet.jpg, manifest.json
Layouts (o formato da especificação está no topo do script): plain (a foto cortada para 4:5 ou 1:1 ao redor do assunto), photo (com um título curto), quote, fact (um número grande), list. 4:5 (1080x1350) obtém mais espaço no feed. Olhe para work/images/contact-sheet.jpg você mesmo. Conjuntos de imagens: 2 a 20 imagens em ordem, todas com a mesma forma (a primeira define o layout), um ponto cada. Adicione "manifests": ["images/manifest.json"] ao plano.
Vídeo a partir do próprio clipe do usuário:
python3 <skill>/scripts/video.py fit clip.mov --ratio 4:5 --x 0.5 --start 2 --end 45 --out work/video/post.mp4
python3 <skill>/scripts/video.py captions work/video/post.mp4 --srt work/talk.srt --out work/video/post-captioned.mp4
python3 <skill>/scripts/video.py frames work/video/post-captioned.mp4 --out work/video/
Vídeos começam sem áudio no feed: coloque legendas da própria transcrição do usuário (a API de postagem não envia o arquivo de legenda do LinkedIn). Abra no momento mais forte; menos de 90 segundos, a menos que o conteúdo precise de mais. 4:5 ou 1:1 mostra maior que 16:9.
"Carrosséis" de documento (slides PDF) são um formato orgânico popular, mas o WoopSocial não publica documentos. Faça os slides como imagens: publique-os como um conjunto de 2 a 20 imagens ou exporte-os como PDF para o usuário fazer upload no aplicativo. Nunca diga que um documento foi agendado.
Etapa 5: Verificar
python3 <skill>/scripts/li_check.py work/plan.json # relatório, escreve check.json
python3 <skill>/scripts/li_check.py work/plan.json --fix # cópias convertidas em fixed/, plano atualizado
Ele verifica o texto (comprimento, gancho antes da dobra, isca, frases feitas, negrito Unicode, broetry, hashtags, @nomes, URLs colados, a voz do usuário), a mídia (tipos, tamanhos, formas, 2 a 20 imagens, comprimento e forma do vídeo, nunca mídia e um cartão de link juntos), o cartão de link (endereço completo, encurtadores, redirecionamentos, uma imagem de pré-visualização) e as contas (mesma postagem no perfil e na Página no mesmo dia, uma por dia, a contagem da semana, repetições de uma imagem ou linha de abertura de uma postagem anterior). Execute até que saia com 0 e, em seguida, lide com cada aviso: corrija-o ou diga ao usuário e deixe-o aceitar. Os avisos são onde residem as regras de alcance e voz.
Etapa 6: Escolher as datas
python3 <skill>/scripts/schedule.py work/plan.json --start 2026-11-16
Cada conta publica em seus próprios dias e horário, no máximo uma por dia, até per_week (padrão 3), contando o registro; postagens sobre um assunto (o mesmo topic, texto ou imagem) caem em dias diferentes, em qualquer conta. Ele escreve schedule.md (com a janela de resposta da primeira hora de cada postagem e os dias para verificar seus números) e uma solicitação WoopSocial por postagem em requests/. Em seguida, execute li_check.py novamente: com as datas definidas, ele verifica também o ritmo diário e semanal.
Etapa 7: Upload e validação
Detalhes: references/woopsocial.md.
- Faça upload de cada arquivo (
media_uploads_create_session,<skill>/scripts/upload_parts.py,media_uploads_complete_session), um de cada vez. Coloque os IDs nosmediaIdsde cada postagem (em ordem) e ossocialAccountIddas contas no plano, depoispython3 <skill>/scripts/schedule.py work/plan.json --bodies-only. posts_validatecada solicitação. Corrija qualquer coisa que rejeitar e valide novamente.
Não está conectado e não quer conectar? Pule para a pré-visualização, entregue as postagens, arquivos e cronograma, e pare. Nunca diga que algo foi agendado quando não foi.
Etapa 8: Pré-visualizar, o sim, agendar
python3 <skill>/scripts/preview.py work/plan.json --out preview/ # work/preview/
Olhe para work/preview/preview.png você mesmo primeiro: cada postagem em um telefone, cortada em "...ver mais", com sua imagem, grade, vídeo ou cartão de link. Se o ponto não estiver acima da dobra ali, reescreva a primeira linha. Em seguida, mostre ao usuário work/preview/index.html (a visualização do telefone e o texto completo) e work/schedule.md. Peça um sim claro para o lote. Qualquer mudança significa uma nova verificação, novas solicitações e uma nova pré-visualização.
Após o sim: posts_create por solicitação validada, escreva o ID de cada postagem no postId da postagem, posts_get para o status, depois python3 <skill>/scripts/log.py record work/plan.json. Diga ao usuário o que está agendado (postagem, conta, data e fuso horário) e o plano da primeira hora em schedule.md.
Etapa 9: Aprender com os números
A partir do dia 2 (a maior parte do alcance vem no primeiro ou segundo dia), e novamente no dia 7:
- Páginas de empresa:
social_account_posts_listpara a Página, salvo comowork/metrics.json. - Perfis: o LinkedIn não fornece números de postagens pessoais para aplicativos de postagem. Peça ao usuário para copiar as análises de cada postagem (impressões, reações, comentários, repostagens, salvamentos, envios, visualizações de perfil, seguidores) em
work/numbers.csv.
python3 <skill>/scripts/log.py results --plan work/plan.json --metrics work/metrics.json --csv work/numbers.csv
Ele compara cada postagem com as postagens da própria conta: impressões contra a mediana, depois conversa (comentários, repostagens, salvamentos, envios) por 1.000 impressões. Uma melhor postagem é nomeada após 6.
| O que aconteceu | Próximo |
|---|---|
| Impressões altas, conversa baixa | As pessoas viram, mas não tinham o que dizer: termine com um ponto mais nítido ou uma pergunta real |
| Impressões baixas, conversa alta | Boa postagem, abertura fraca: reescreva ganchos como este de forma mais específica |
| Ambas baixas | Mude o assunto ou formato antes da redação |
| Um formato ou assunto vence | Faça mais disso, com material novo |
Barra de qualidade
Antes de mostrar qualquer coisa: o melhor escritor no campo do usuário publicaria isso, com o nome dele? Rejeite e corrija se:
- a primeira linha poderia abrir a postagem de qualquer um;
- uma afirmação, número ou resultado não pode ser comprovado;
- soa como a lista de frases feitas de IA genérica, ou não como as postagens do próprio usuário;
- pede engajamento em vez de conquistá-lo;
- perfil e Página dizem a mesma coisa no mesmo dia;
- a mídia é um gráfico genérico onde uma foto real serviria.
Casos extremos
- Várias Páginas: cada Página é sua própria conta no plano, com seus próprios dias.
- Funcionários compartilhando uma postagem de Página: sugira que eles compartilhem novamente com uma frase própria; nunca escreva as postagens deles como se eles as tivessem escrito.
- Conteúdo de outra pessoa: link para ele ou descreva-o; nunca republique suas imagens ou vídeo. Material de domínio público ou licenciado (fotos da NASA, banco de imagens que você pagou) é bom com um crédito na postagem, sem implicar que a fonte endossa o usuário.
- Imagens de IA: o LinkedIn mostra um rótulo de Credenciais de Conteúdo quando o arquivo carrega dados C2PA, que a re-renderização...