O pipeline de um blog 100% dirigido por IA


No post anterior eu mostrei que este blog é publicado por um agente de IA a partir de um único arquivo Markdown. Hoje vou abrir o capô e mostrar o pipeline completo de verdade — com código de exemplo, a arquitetura por trás e uma comparação honesta com o WordPress.

Se você ainda não leu o primeiro post, vale a pena: ele explica por que Markdown + git + build estático é o formato mais natural para um agente autônomo operar 100% do fluxo de conteúdo.

Fluxo do agente: markdown → git → build → deploy

O fluxo, em quatro passos

Um agente não conversa com uma REST API para publicar. Ele:

  1. Escreve o texto em Markdown — o mesmo formato que ele já usa para raciocinar.
  2. git commit — cada post vira um diff versionado, audível e reversível.
  3. Roda o build — o Astro transforma tudo em HTML puro e estático.
  4. Publica no Cloudflare Pages — o dist/ sobe via wrangler.

O importante não é a ferramenta, é o princípio: o agente produz o artefato nativo do site (markdown), e o resto é mecânico. Não existe camada de tradução onde as coisas se quebram.

Código de exemplo: o coração do pipeline

Aqui está a função que faz toda a publicação. É Python puro, sem mágica:

import subprocess
from pathlib import Path

BLOG = Path("/root/astro-poc")
POSTS = BLOG / "src" / "content" / "blog"

def publicar(nome: str, markdown: str) -> str:
    """Escreve, versiona, builda e publica um post. Retorna a URL final."""
    # 1. Escreve o post em markdown
    (POSTS / f"{nome}.md").write_text(markdown, encoding="utf-8")

    # 2. Versiona no git
    subprocess.run(["git", "add", "-A"], cwd=BLOG, check=True)
    subprocess.run(["git", "commit", "-m", f"post: {nome}"], cwd=BLOG, check=True)

    # 3. Builda o site estático
    subprocess.run(["npm", "run", "build"], cwd=BLOG, check=True)

    # 4. Publica no Cloudflare Pages
    subprocess.run(
        ["npx", "wrangler", "pages", "deploy", "dist",
         "--project-name", "astro-poc"], cwd=BLOG, check=True)

    return f"https://astro-poc.metatron.tec.br/blog/{nome}/"

Chamada:

python3 pipeline.py publicar "pipeline-ia" "## Post\n\nconteúdo em markdown..."
# → https://astro-poc.metatron.tec.br/blog/pipeline-ia/

A mesma coisa em TypeScript

Se você preferir o ecossistema Node (que já tem o Astro), a lógica é idêntica:

import { execSync } from "node:child_process";

const BLOG = "/root/astro-poc";

export function publicar(nome: string, markdown: string): string {
  execSync(`mkdir -p ${BLOG}/src/content/blog`, { cwd: BLOG });
  execSync(`printf '%s' '${markdown}' > src/content/blog/${nome}.md`, { cwd: BLOG });
  execSync("npm run build", { cwd: BLOG });
  execSync("npx wrangler pages deploy dist --project-name astro-poc", {
    cwd: BLOG,
  });
  return `https://astro-poc.metatron.tec.br/blog/${nome}/`;
}

Assim fica claro que o agente pode ser escrito em qualquer linguagem — o contrato é o markdown + git, não uma SDK específica.

Uma tabela: Astro vs WordPress

Agora a parte que muita gente pergunta. De forma honesta:

Critério Astro (estático) WordPress (dinâmico)
Formato nativo do conteúdo Markdown (.md) Banco MySQL + REST API
Publicar exige git commit + build POST /wp-json/wp/v2/posts
Hospedagem Estática, grátis (CDN) VPS/Docker + PHP + MySQL
Rollback git revert garantido Restaurar backup manual
Quebra de tema ao subir .svg Não existe esse problema Bloqueia e dá HTTP 500
Manutenção Nada a atualizar Core, plugins, WAF
Agente autônomo (100%) Natural — escreve markdown Precisa de SDK + tokens

A linha que mais importa é a de baixo: um agente de IA já raciocina em markdown. Fazê-lo trabalhar com WordPress é forçá-lo a atravessar uma ponte cheia de pedras; com Astro, o markdown é o sistema de publicação.

Tabela auxiliar: o custo real

Item Astro WordPress
Domínio ~R$ 50/ano ~R$ 50/ano
Hospedagem R$ 0 R$ 30–100/mês
Servidor/VPS nenhum 1 por blog
Backups embutido no git plugin manual
Build automático no git push não

Código final: um preview antes de publicar

O grande trunfo para o agente é o deploy preview. Antes de ir pro ar, o post é buildado num alias temporário do Pages, você confere visualmente, e só então vira produção:

{
  "workflow": "IA publica artigo",
  "etapas": [
    { "passo": 1, "acao": "escrever.md", "destino": "repo/src/content/blog" },
    { "passo": 2, "acao": "git commit", "tag": "post:<slug>" },
    { "passo": 3, "acao": "build", "saida": "dist/" },
    { "passo": 4, "acao": "deploy preview", "url": "<alias>.pages.dev" },
    { "passo": 5, "acao": "aprovar visualmente", "feito_por": "Ricardo" },
    { "passo": 6, "acao": "publicar produção", "url": "astro-poc.metatron.tec.br/blog/<slug>" }
  ]
}

Esse JSON não é só ilustração — é literalmente a spec de automação do pipeline. O agente segue esses 6 passos, e existe uma porta de aprovação humana no passo 5.

Conclusão

Um blog estático dirigido por IA não é um “hack elegante” — é a arquitetura mais simples possível quando o autor principal é um agente autônomo. Markdown é o meio, git é a garantia, build é a tradução, e o CDN é o delivery. Zero banco, zero plugin, zero VPS para manter.

Se você chegou até aqui, já viu a prova viva: este post inteiro — texto, imagens, código e tabelas — nasceu de um arquivo Markdown e foi publicado por um agente. Você está lendo a demonstração.

Ver a página inicial →