Skip to content

Instantly share code, notes, and snippets.

@henrique-arthur
Last active July 26, 2026 18:20
Show Gist options
  • Select an option

  • Save henrique-arthur/6d19a4be8455ed1931751d2cfe35448c to your computer and use it in GitHub Desktop.

Select an option

Save henrique-arthur/6d19a4be8455ed1931751d2cfe35448c to your computer and use it in GitHub Desktop.
post biip club
name: Criar post do blog (blog-ia)
on:
schedule:
- cron: "0 8 * * 1,4"
workflow_dispatch: {}
permissions:
contents: write
pull-requests: write
jobs:
criar-post:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Gerar post com Claude
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}
prompt: |
Execute a skill `criar-post-blog` deste repositório para gerar UM novo
post do blog a partir do próximo tema pendente em ./blog-ia/temas/novos-temas.md,
seguindo todas as regras editoriais e o checklist da skill.
Se não houver tema pendente na tabela, apenas informe isso e encerre
sem criar ou alterar nenhum arquivo.
Depois de criar o post (e atualizar novos-temas.md e temas-ja-publicados.md),
salve três arquivos de metadados FORA do repositório, cada um com uma
única linha de texto puro:
- /tmp/pr-info/titulo.txt — o título do post
- /tmp/pr-info/tema.txt — o tema original da tabela de novos-temas.md
- /tmp/pr-info/descricao.txt — a descricao (meta description) do frontmatter
Não use git nem abra PR — os próximos steps do workflow cuidam disso.
claude_args: |
--model claude-sonnet-5
--allowedTools "Read,Write,Edit,Glob,Grep,Skill,Bash(ls:*),Bash(echo:*),Bash(wc:*)"
- name: Preparar dados do PR
id: pr
run: |
if [ -z "$(git status --porcelain)" ]; then
echo "Nenhuma alteração gerada — nada a publicar."
echo "changed=false" >> "$GITHUB_OUTPUT"
exit 0
fi
echo "changed=true" >> "$GITHUB_OUTPUT"
titulo="$(head -1 /tmp/pr-info/titulo.txt)"
tema="$(head -1 /tmp/pr-info/tema.txt)"
descricao="$(head -1 /tmp/pr-info/descricao.txt)"
slug="$(git status --porcelain -- src/content/blog | awk '{print $NF}' | head -1 | xargs basename | sed 's/\.md$//')"
echo "titulo=$titulo" >> "$GITHUB_OUTPUT"
echo "slug=$slug" >> "$GITHUB_OUTPUT"
{
echo 'body<<PR_BODY_EOF'
echo '## Novo post do blog'
echo
echo "**Título:** $titulo"
echo "**Tema:** $tema"
echo "**Descrição:** $descricao"
echo
echo '> PR aberto automaticamente pela action `criar-post-blog`.'
echo 'PR_BODY_EOF'
} >> "$GITHUB_OUTPUT"
- name: Abrir PR
if: steps.pr.outputs.changed == 'true'
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
base: main
branch: blog-ia/${{ steps.pr.outputs.slug }}
commit-message: "feat(blog): ${{ steps.pr.outputs.titulo }}"
title: "[blog-ia] ${{ steps.pr.outputs.titulo }}"
body: ${{ steps.pr.outputs.body }}
committer: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

Estrutura de Contexto para Criação de Blogposts com IA

Utilize as instruções abaixo para criar um blogpost completo e otimizado para SEO, com base no tema fornecido, gere o output de acordo com as instruções da tabela de contexto. O conteúdo deve ser informativo, envolvente e direcionado para a persona especificada, mantendo o tom de voz definido.

Tema Persona Tom de voz Palavra-chave foco CTA Final Observações Conteúdos de referência Foi publicado? Data de publicação
Aluguel de Ambulâncias para Empresas Gestores de RH e Segurança do Trabalho Corporativo e direto aluguel de ambulâncias Proteja seus colaboradores! Fale com um consultor sobre o aluguel mensal de ambulâncias. Focar na adequação às normas de segurança do trabalho (NRs). Normas Regulamentadoras (NR-7 e NR-9). Não -
titulo [Inserir Título do Post Aqui - Ex: Como Escolher o Melhor Serviço de Remoção]
subtitulo [Inserir Subtítulo Detalhado Aqui - Resumo de 1 a 2 linhas com os principais tópicos abordados]
descricao [Inserir Meta Description Aqui - Resumo focado em SEO de até 160 caracteres com palavra-chave]
categoria [Inserir Categoria do Blog - Ex: Saúde / Institucional / Eventos]
imagemHero ../../assets/blog/[nome-da-imagem].jpeg
imagemHeroAlt [Inserir descrição de acessibilidade da imagem principal aqui]
dataPublicacao
Inserir data de publicação no formato YYYY-MM-DD

[Inserir Parágrafo de Introdução Aqui - Apresente o problema ou a dúvida comum que o leitor possui. Use negrito para destacar frases de impacto e prender a atenção do usuário logo nos primeiros segundos].

[Inserir Título da Primeira Seção Principal - Ex: Principais Conceitos ou Categorias]

[Inserir Subtópico A - Ex: Categoria Primária]

[Inserir descrição do Subtópico A. Explique o conceito de forma direta, destacando o público-alvo, indicações de uso ou características fundamentais. Utilize negrito para termos importantes].

Exemplos práticos: [Lista de cenários comuns onde o Subtópico A se aplica].

[Inserir Subtópico B - Ex: Categoria Secundária]

[Inserir descrição do Subtópico B. Faça o contraponto ou a diferenciação técnica/prática em relação ao tópico anterior, listando equipamentos necessários, profissionais envolvidos e complexidade].

[Inserir Título da Segunda Seção Principal - Ex: Guia de Tomada de Decisão ou Como Escolher]

[Inserir parágrafo de transição introduzindo uma lista de critérios ou perguntas fundamentais para ajudar o leitor a decidir].

  1. [Pergunta ou Critério 1]: [Explicação detalhada de como avaliar este critério específico no cenário real].
  2. [Pergunta ou Critério 2]: [Explicação sobre o impacto técnico, financeiro ou logístico deste segundo critério].

[Inserir conselho ou dica de alerta para que o leitor saiba como identificar prestadores de serviço confiáveis ou evitar ciladas comuns no mercado].

[Inserir Título da Terceira Seção - Ex: Erros Comuns e Impacto Financeiro]

[Explique um erro frequente cometido pelos clientes ao tomar essa decisão (seja por economia incorreta ou falta de informação), e quais são os riscos envolvidos para a operação, segurança ou orçamento].

[Conclua reforçando como a escolha correta equilibra custo-benefício e garante o sucesso do objetivo final].

[Inserir Título da Seção Institucional - Ex: Como a Empresa Pode Ajudar]

[Apresentar brevemente os diferenciais da empresa em relação a esse tema, regiões de atendimento, infraestrutura disponível e conformidade com as normas vigentes, quando aplicável].

[Inserir parágrafo final de CTA (Chamada para Ação) convidando o leitor a interagir, tirar dúvidas ou solicitar uma cotação personalizada]. Texto do link clicável — [Conclusão da chamada].

name criar-post-blog
description Cria uma publicação de blog para o site da Life Remocenter a partir dos temas planejados em ./blog-ia/temas/novos-temas.md. Use sempre que o usuário pedir para criar, gerar ou escrever um post, artigo ou publicação do blog, mencionar "blog-ia", os temas do blog, ou pedir para "publicar o próximo tema" — mesmo que não cite o arquivo explicitamente. O skill lê a tabela de contexto do tema (persona, tom de voz, palavra-chave, CTA), gera o texto seguindo as regras editoriais de conteúdo de saúde e salva o arquivo pronto em src/content/blog.

Criar post do blog a partir de um tema

Gera uma publicação do blog a partir do próximo tema pendente em ./blog-ia/temas/novos-temas.md, pronta para o build do Astro.

Fluxo

  1. Escolher o tema. Leia ./blog-ia/temas/novos-temas.md e pegue o primeiro tema pendente da tabela de contexto (se existir a coluna Foi publicado?, ignore linhas marcadas Sim). Gere somente um post por execução, mesmo que haja vários temas pendentes ou que o pedido pareça abranger mais — cada post merece atenção integral, e o usuário roda o skill de novo quando quiser o próximo. Se a tabela estiver vazia ou sem tema pendente, avise o usuário e pare — não invente um tema. Consulte também ./blog-ia/temas/temas-ja-publicados.md para não repetir um assunto já coberto.
  2. Ler o contexto do tema. A tabela do arquivo de temas define: Tema, Persona, Tom de voz, Palavra-chave foco, CTA Final, Observações e Conteúdos de referência. Cada coluna é uma instrução de escrita — a persona define para quem você escreve, o tom define como, a palavra-chave deve aparecer naturalmente no título, na introdução, na meta description e em pelo menos um H2, e as Observações têm prioridade sobre qualquer padrão deste skill.
  3. Ler os modelos. Leia ./blog-ia/post-de-exemplo.md (estrutura do arquivo) e 1–2 posts já publicados em ./src/content/blog/ (barra de qualidade real de texto e tom). O objetivo é que o novo post pareça escrito pela mesma pessoa que escreveu os anteriores.
  4. Escrever o post seguindo as regras editoriais e o frontmatter abaixo.
  5. Salvar em ./src/content/blog/{slug}.md, onde o slug é o título em kebab-case, sem acentos ou palavras vazias desnecessárias (ex.: "Como funciona o transporte inter-hospitalar?" → como-funciona-transporte-inter-hospitalar.md). O nome do arquivo vira a URL /blog/{slug} — ele precisa ser legível e conter a palavra-chave foco.
  6. Mover o tema para o arquivo de publicados: remova a linha do tema utilizado da tabela de ./blog-ia/temas/novos-temas.md e adicione uma linha na tabela de ./blog-ia/temas/temas-ja-publicados.md, que tem formato próprio: | Tema | Descrição do Tema | Data de publicação |. Preencha Tema com o texto original do tema, Descrição do Tema com um resumo de uma linha do que o post cobriu, e Data de publicação com a data de hoje (YYYY-MM-DD). Assim novos-temas.md fica sendo só a fila do que falta publicar, e temas-ja-publicados.md vira o histórico consultável para evitar repetições.
  7. Verificar (checklist no final deste arquivo) e reportar ao usuário o que foi criado, qual imagem foi reutilizada e que uma foto dedicada ao tema renderia mais que a reaproveitada.

Frontmatter (schema validado no build)

O schema em src/content.config.ts falha o build se algum campo estiver fora das regras:

---
titulo: "Título do post — contém a palavra-chave foco"
subtitulo: "Texto editorial de abertura, 1–2 linhas, exibido na página."
descricao: "Meta description de 50 a 160 caracteres com a palavra-chave. Aparece no Google — não confundir com o subtítulo."
categoria: "Saúde" # recomendadas: Saúde, Eventos, Bastidores, Institucional
imagemHero: "../../assets/blog/nome-da-imagem.jpeg"
imagemHeroAlt: "Descrição de acessibilidade da imagem (mín. 10 caracteres, não repetir o título)"
dataPublicacao: 2026-01-15 # data de hoje, YYYY-MM-DD
---

Imagem hero: o build exige que o arquivo exista. Liste ./src/assets/blog/ e escolha a imagem mais adequada ao tema — nunca invente um nome de arquivo. Escreva o imagemHeroAlt descrevendo o que a foto realmente mostra (abra a imagem se necessário). Avise o usuário no final que uma foto dedicada ao tema seria melhor que a reaproveitada.

Regras editoriais — conteúdo de saúde

Este blog é de uma empresa de remoção e cobertura médica. O leitor costuma estar fragilizado (familiar de paciente internado) ou tomando uma decisão séria (gestor contratando cobertura). Escrever com responsabilidade não é burocracia — é o que diferencia o blog de conteúdo raso de internet e protege leitor e empresa.

O que NÃO fazer:

  1. Não dê diagnósticos, não recomende dosagens e não prescreva medicamentos ou tratamentos.
  2. Não use termos sensacionalistas, alarmistas ou promessas de "cura rápida/milagrosa".
  3. Não invente dados, estatísticas ou estudos. Se citar dados, use fontes genéricas e seguras ("segundo a OMS", "diretrizes do Ministério da Saúde", "Portaria 2048/2002") ou deixe um espaço indicado para inserção manual de link confiável.
  4. Não use jargão médico sem explicá-lo de forma simples na primeira ocorrência (ex.: "monitor multiparâmetro — o aparelho que acompanha batimentos, pressão e oxigenação em tempo real").

Estrutura do texto:

  • Introdução: prenda a atenção da persona demonstrando empatia pelo problema ou dúvida dela, apresente o tema com clareza e inclua a palavra-chave foco de forma natural. Use negrito para destacar a frase de impacto.
  • Desenvolvimento: divida em subtítulos H2 e H3 escaneáveis — o leitor deve entender o mapa do texto só pelos títulos. Explique conceitos, segurança, prevenção ou funcionamento do serviço. Use listas numeradas para critérios de decisão e negrito para termos importantes.
  • Seção institucional: apresente brevemente como a Life Remocenter atende esse tema (frota, equipe, região Leste de Minas), com link interno para a página de serviço relevante quando existir (ex.: /servicos/cobertura-de-eventos).
  • Conclusão + disclaimer obrigatório: reforce a importância do cuidado e feche com o CTA definido na tabela do tema, usando o WhatsApp oficial https://wa.me/########. Inclua um aviso claro de que o texto é meramente informativo e não substitui a consulta com um profissional de saúde.

Checklist antes de finalizar

  • descricao tem entre 50 e 160 caracteres (conte: echo -n "..." | wc -c)
  • imagemHero aponta para um arquivo que existe em src/assets/blog/
  • Palavra-chave foco aparece no título, na introdução, na descricao e em ao menos um H2
  • CTA final corresponde ao definido na tabela do tema e usa wa.me/########
  • Disclaimer de conteúdo informativo presente na conclusão
  • Tema removido de novos-temas.md e adicionado a temas-ja-publicados.md com descrição e data
  • Nenhuma estatística, estudo ou dado inventado no texto

Estrutura de Contexto para Criação de Blogposts com IA

Todos os temas já publicados estão listados abaixo, com a data de publicação e uma breve descrição do conteúdo abordado. Use esta tabela como referência para consultar posts anteriores ou para planejar novos conteúdos relacionados e evitar repetições.

Tema Descrição do Tema Data de publicação
Como funciona o transporte inter-hospitalar de pacientes em estado grave? Explica o que é o transporte inter-hospitalar, os equipamentos de uma UTI móvel, a qualificação da equipe e critérios para escolher um serviço seguro. 2026-07-09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment