Como escrever artigos no vault, usar IA como assistente, e publicar no blog Hugo com deploy automático.
Ideia / pesquisa no vault
↓
06-blog/drafts/slug-do-artigo.md (status: draft)
↓ ← IA auxilia: outline, expansão, fact-check
06-blog/review/slug-do-artigo.md (status: review)
↓ ← Revisão pessoal + IA corrige gramática/fluxo
06-blog/published/slug-do-artigo.md (status: published, publish: true)
↓ ← Git hook detecta publish: true
obsidian-to-hugo converte wikilinks
↓
hugo-site/content/posts/slug-do-artigo/index.md
↓
Hugo build + deploy (Cloudflare Pages / Netlify)
↓
Blog publicado na web
No Obsidian, criar nota em 06-blog/drafts/ usando o template:
---
title: "Título do artigo"
date: 2026-03-30
draft: true
publish: false
slug: "titulo-do-artigo"
categories:
- categoria
tags:
- tag1
- tag2
summary: "Uma frase descrevendo o artigo"
domain: "FIN"
status: "draft"
hugo_section: "posts"
related:
- "[[nota-de-referencia-1]]"
- "[[nota-de-referencia-2]]"
---
# Título do artigo
## Introdução
<!-- Escreva aqui -->
## Desenvolvimento
<!-- Use [[wikilinks]] para referenciar notas do vault -->
## Conclusão
<!-- ... -->
## Referências
<!-- Links para fontes originais -->
Pesquisa prévia (Claude Code via MCP):
"Compile tudo que tenho no vault sobre [tema]. Liste as notas, resumos e conexões."
Gerar outline (Smart Chat):
"Dado estas notas do vault sobre [tema], sugira uma estrutura de artigo com seções e pontos-chave."
Expandir seções (ChatGPT MD / Nova — in-place):
Fact-check (Claude Code via MCP):
"Verifique as afirmações deste artigo cruzando com as notas do vault. Liste quais têm fonte e quais não têm."
Revisão gramatical (in-place):
Quando o rascunho estiver maduro:
drafts/ para review/status: "review" no frontmatterQuando satisfeito:
review/ para published/draft: false
publish: true
status: "published"
hugo-site/
├── config.toml
├── content/
│ └── posts/ ← Artigos vêm para cá
├── static/
│ └── images/ ← Imagens dos artigos
├── themes/
│ └── <tema-escolhido>/
└── .github/
└── workflows/
└── deploy.yml ← CI/CD (opcional)
baseURL = "https://seublog.com/"
languageCode = "pt-br"
title = "Seu Blog"
theme = "tema-escolhido"
[params]
description = "Blog pessoal sobre finanças, tecnologia e internacionalização"
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true # Permite HTML inline (para <mark>, etc.)
[taxonomies]
tag = "tags"
category = "categories"
# Ignorar arquivos do Templater
ignoreFiles = ["_templates\\.md$"]
| Tema | Estilo | Link |
|---|---|---|
| PaperMod | Minimalista, rápido | https://github.com/adityatelange/hugo-PaperMod |
| Stack | Blog + documentação | https://github.com/CaiJimmy/hugo-theme-stack |
| Blowfish | Moderno, Tailwind | https://github.com/nunocoracao/blowfish |
| Congo | Clean, multi-idioma | https://github.com/jpanther/congo |
pip install obsidian-to-hugo
python -m obsidian_to_hugo \
--obsidian-vault-dir=vault/06-blog/published \
--hugo-content-dir=hugo-site/content/posts
O que ele faz:
[[wikilinks]] → [text]()==highlight== → <mark>highlight</mark>Arquivo: scripts/obsidian-to-hugo.sh
#!/bin/bash
set -e
VAULT_DIR="$(dirname "$0")/../vault"
HUGO_DIR="$(dirname "$0")/../hugo-site"
# Verificar se há notas para publicar
PUBLISH_COUNT=$(grep -rl "publish: true" "$VAULT_DIR/06-blog/published/" --include="*.md" 2>/dev/null | wc -l)
if [ "$PUBLISH_COUNT" -eq 0 ]; then
echo "Nenhuma nota para publicar."
exit 0
fi
echo "Publicando $PUBLISH_COUNT artigo(s)..."
# Converter e copiar
python -m obsidian_to_hugo \
--obsidian-vault-dir="$VAULT_DIR/06-blog/published" \
--hugo-content-dir="$HUGO_DIR/content/posts"
# Copiar imagens
find "$VAULT_DIR/06-blog/published" -name "*.png" -o -name "*.jpg" | while read img; do
cp "$img" "$HUGO_DIR/static/images/"
done
# Build local para verificar
cd "$HUGO_DIR"
hugo --minify
echo "Build OK. Commitando..."
git add -A
git commit -m "publish: $(date +%Y-%m-%d) update"
git push
echo "Deploy triggered."
Registrar como git hook:
# Em .git/hooks/post-commit (do vault repo)
#!/bin/bash
bash scripts/obsidian-to-hugo.sh
cd hugo-site && hugo --minifyhugo-site/publicmaincd hugo-site && hugo --minifyhugo-site/publiccd hugo-site
hugo server -D # -D inclui drafts
# Abrir http://localhost:1313
O Obsidian usa [[wikilinks]] mas o Hugo espera links markdown padrão ou shortcodes.
| Obsidian | Hugo (após conversão) |
|---|---|
[[outra-nota]] |
[outra-nota]() |
[[nota\|texto]] |
[texto]() |
![[imagem.png]] |
 |
==destaque== |
<mark>destaque</mark> |
Se preferir não converter wikilinks (manter como referência interna), configure no filtro do obsidian-to-hugo para remover em vez de converter.
06-blog/published/publish: true e draft: falsehugo server está OK