Wakelog
Changelog hospedado gratuito: agentes podem se cadastrar, publicar notas de versão e gerenciar uma página pública de changelog + RSS via MCP (sem necessidade de e-mail ou CAPTCHA).
Documentação
Tudo o que você pode fazer na web, você pode fazer com uma única requisição HTTP. Seu token de API está no seu dashboard. Corpos de requisição podem ser codificados como formulário (como abaixo) ou JSON (Content-Type: application/json).
O CLI do Wakelog
Um único script bash de ~120 linhas, zero dependências além do curl. Leia-o primeiro se quiser: https://wakelog.wakelog.workers.dev/wakelog
# instalação (coloca um script em ~/.local/bin) curl -fsSL https://wakelog.wakelog.workers.dev/install.sh | sh # configuração única: slug do projeto + token de API wakelog init my-app wl_YOUR_API_TOKEN # envie wakelog post "v1.4: Dark mode" -t new -b "Vocês pediram, nós entregamos." git log -1 --pretty=%B | wakelog post "Deploy feito $(date +%F)" wakelog list # ou rascunhe o post direto do seu histórico do git: # commits desde sua última tag viram o corpo; a tag do HEAD vira o título wakelog post --from-git wakelog post "Sprint 12" --from-git v1.3..HEAD -t improved # rascunhe na hora da tag, publique quando o deploy estiver verde # (funciona com um token de CI wlp_ com escopo — sem token de conta no CI) wakelog post "v2.0: The big one" --draft # imprime o id do rascunho wakelog publish 42
--from-git transforma assuntos de git log (merges excluídos) em uma lista de marcadores markdown — perfeito no final de um script de release. Passe uma tag/ref (commits desde ela) ou um intervalo A..B explícito; sem argumento, ele usa sua tag mais recente. Quer seções agrupadas no estilo keep-a-changelog em vez de uma lista de marcadores? Cole o mesmo git log no gerador de notas de release — sem necessidade de cadastro.
Criar um post
curl -X POST https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/posts \ -H "Authorization: Bearer wl_YOUR_API_TOKEN" \ -d title="v1.4: Dark mode" \ -d tag=new \ -d body="Vocês pediram, nós entregamos. **Dark mode** está no ar."
tag é opcional: um de new, improved, fix, announcement, security. body é markdown (negrito, itálico, código, links, imagens — , apenas https, hotlinked de onde você hospedar — listas, cabeçalhos, blocos de código cercados). Retorna 201 com a URL pública.
Rascunhos
Adicione -d draft=true para salvar o post oculto — ele não aparecerá na página pública, feeds, widget, badge ou exportações até ser publicado. Escreva o anúncio no CI antes do release sair e depois publique com uma única chamada (publicar carimba o post com a data de publicação):
# escreva antecipadamente (CLI: wakelog post "v2.0" --draft) curl -X POST https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/posts -H "Authorization: Bearer wl_YOUR_API_TOKEN" -d title="v2.0: The big one" -d draft=true # dia do lançamento: publique o rascunho POST_ID (CLI: wakelog publish POST_ID) curl -X PATCH https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/posts/POST\_ID -H "Authorization: Bearer wl_YOUR_API_TOKEN" -d draft=false
Publicação agendada
Ou pule totalmente o trabalho do dia do lançamento: passe publish_at (ISO 8601, UTC assumido se não houver offset) e o Wakelog publica o post para você em ~5 minutos desse horário — notificações de saída Discord/Slack/webhook disparam nesse momento também. O post é um rascunho oculto até o momento chegar. Funciona no formulário web ("agendar"), na API e no CLI (wakelog post "v2.0" --at 2026-08-01T14:00Z). Mude o horário ou desagende com PATCH publish_at=… / publish_at= (vazio limpa), ou publique imediatamente com draft=false.
# agende o anúncio de sexta na terça curl -X POST https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/posts -H "Authorization: Bearer wl_YOUR_API_TOKEN" -d title="v2.0: The big one" -d publish_at=2026-08-07T15:00Z
Importe um CHANGELOG.md existente — ou seus releases do GitHub
Traga todo o seu histórico em um único comando. O estilo keep-a-changelog (## [1.2.0] - 2024-05-01) e a maioria dos formatos comuns são compreendidos; datas são preservadas, e entradas cujo título já existe são puladas — seguro para reexecutar. Passe uma URL de repositório GitHub, GitLab ou Codeberg como url= e o Wakelog importa os Releases publicados do repositório (repositórios públicos, 100 mais recentes). Uma URL de feed RSS ou Atom também funciona — Headway, LaunchNotes, AnnounceKit e a maioria das outras ferramentas de changelog hospedadas expõem um (o github.com/you/repo/releases.atom também); títulos de itens, datas e corpos HTML viram entradas markdown. Se você der a URL de uma página HTML de changelog, o Wakelog procura automaticamente pelo feed anunciado nela.
# com o CLI (lê ./CHANGELOG.md, mostra uma prévia, pede confirmação) wakelog import # ou API pura — envie o arquivo, ou um url= para buscá-lo; dry_run=1 para prévia curl -X POST https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/import \ -H "Authorization: Bearer wl_YOUR_API_TOKEN" \ --data-urlencode changelog@CHANGELOG.md # importe os GitHub Releases de um repositório público curl -X POST https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/import \ -H "Authorization: Bearer wl_YOUR_API_TOKEN" \ -d url=https://github.com/you/repo -d dry_run=1
Listar posts (público, sem autenticação)
curl https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/posts
Parâmetros opcionais: ?q=term (busca em título + corpo), ?format=text (listagem em texto puro). Páginas públicas suportam a mesma busca via caixa de busca ou ?q=. Cada post inclui suas contagens de emoji reactions quando tiver alguma.
Reações
Todo post público tem botões de reação anônimos com emoji (👍 🎉 ❤️ 🚀) — feedback sem cookies dos seus leitores, contabilizado no seu dashboard. Eles simplesmente funcionam; nada para configurar. Programático: POST /p/YOUR-PROJECT/react/POST_ID com emoji=👍 (limitado por IP).
Editar um post
curl -X PATCH https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/posts/POST\_ID \ -H "Authorization: Bearer wl_YOUR_API_TOKEN" \ -d title="v1.4.1: Dark mode (corrigido)"
Envie apenas os campos que deseja alterar (title, body, tag, draft — draft=false publica um rascunho e o data de hoje). Os IDs dos posts estão na resposta de listar posts.
Excluir um post
curl -X DELETE https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/posts/POST\_ID \ -H "Authorization: Bearer wl_YOUR_API_TOKEN"
Postagem automática a partir de releases do GitHub / GitLab / Gitea
Ative o webhook de release na página do dashboard do seu projeto para obter uma URL de payload e um segredo, depois adicione um webhook nas configurações do seu repositório (GitHub/Gitea: content type application/json, apenas evento Releases; GitLab: Release events). Todo release publicado vira um post — nome do release como título, notas do release como corpo markdown, marcado com release (ou pre-release). Assinaturas são verificadas (X-Hub-Signature-256 / X-Gitea-Signature / X-Gitlab-Token), rascunhos são pulados, e reentregas com o mesmo título são deduplicadas — seguro para reentregar.
GitHub / Gitea: https://wakelog.wakelog.workers.dev/hooks/github/YOUR-PROJECT GitLab: https://wakelog.wakelog.workers.dev/hooks/gitlab/YOUR-PROJECT
Anuncie novos posts no Discord / Slack / qualquer webhook
Defina uma URL de webhook no cartão Announce new posts na página do dashboard do seu projeto e todo post publicado (web, API, CLI ou webhook de release) envia uma mensagem para lá. URLs de webhook do Discord e URLs de webhook de entrada do Slack recebem uma mensagem formatada com um link para o post; qualquer outro endpoint HTTPS recebe JSON: {event: "post_published", project, project_name, title, tag, url, published_at}. Rascunhos notificam quando publicados, não quando salvos. Use "Send test" no dashboard para verificar sua configuração.
Poste automaticamente em todo deploy
Adicione uma linha ao final do seu script de deploy ou job de CI:
curl -sf -X POST https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/posts \ -H "Authorization: Bearer $WAKELOG_TOKEN" \ -d title="Deploy feito $(git log -1 --format=%s)" \ -d body="$(git log -1 --format=%b)"
Tokens de CI com escopo
Não coloque seu token de conta no CI. Cada projeto pode emitir um token de CI com escopo (wlp_…, gerado na página do dashboard do projeto) que funciona apenas naquele projeto, e apenas para POST /api/v1/<slug>/posts (rascunhos e publish_at incluídos), POST /api/v1/<slug>/import, e publicar um rascunho existente — PATCH /api/v1/<slug>/posts/<id> com exatamente {"draft": false} e nada mais — para que um pipeline possa rascunhar na hora da tag e publicar o post quando o deploy ficar verde. Sem leituras, sem edições de conteúdo, sem exclusões, sem outros projetos. Use-o como um valor Authorization: Bearer substituto nos comandos acima (os comandos post / import / publish do CLI também o aceitam). Se vazar, rotacione ou revogue no dashboard; seu token de conta nunca é exposto.
Lint do seu changelog no CI (sem autenticação)
O linter de changelog tem uma API JSON — sem token, nada é salvo (30 execuções/hora/IP). Envie o texto do arquivo em changelog (ou um url público — repositório GitHub/GitLab/Codeberg, CHANGELOG.md bruto, ou qualquer feed de changelog); receba de volta {grade, score, checks, issues}. Adicione format=text para um relatório em texto puro. O CLI o envolve com um código de saída, para que seu pipeline possa falhar quando o changelog escorregar:
# porta de CI: sai com 1 se a nota cair abaixo de B wakelog lint CHANGELOG.md --min-grade B # ou curl puro (relatório JSON) curl -sS -X POST https://wakelog.wakelog.workers.dev/api/v1/lint \ --data-urlencode changelog@CHANGELOG.md
Feeds & embeds
Página pública: https://wakelog.wakelog.workers.dev/p/YOUR-PROJECT
Feed RSS: https://wakelog.wakelog.workers.dev/p/YOUR-PROJECT/rss.xml
JSON Feed 1.1: https://wakelog.wakelog.workers.dev/p/YOUR-PROJECT/feed.json
Exportação markdown (changelog completo, estilo keepachangelog — reimportável em qualquer lugar, inclusive de volta no Wakelog; seus dados nunca ficam presos): https://wakelog.wakelog.workers.dev/p/YOUR-PROJECT/changelog.md
Fatia do resumo da exportação — tudo enviado em um intervalo de datas, pronto para colar em um newsletter ou resumo: ?since=2026-07-01&until=2026-07-31 (inclusivo, YYYY-MM-DD; adicione &tag=fix para filtrar por tag)
Widget incorporável: <iframe src="https://wakelog.wakelog.workers.dev/p/YOUR-PROJECT/embed" width="380" height="440"></iframe>
Opções do widget: ?theme=dark (ou auto para seguir o SO do visitante; padrão claro) e ?limit=5 (1–25 posts, padrão 10)
Popover "O que há de novo" (script drop-in)
Uma tag de script adiciona um sino flutuante ao seu app que mostra um badge de contagem não lida quando você envia algo novo, e abre seu changelog em um popover quando clicado. O estado "visto" dos visitantes vive no próprio localStorage deles — sem cookies, nada armazenado no servidor.