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

Documentação da API

Tudo o que você pode fazer na web, você pode fazer com uma única requisição HTTP. Seu token de API está no seu painel. Os corpos das postagens podem ser codificados como formulário (como abaixo) ou JSON (Content-Type: application/json).

O wakelog CLI

Um script bash de ~120 linhas, zero dependências além do curl. Leia-o primeiro se quiser: https://wakelog.wakelog.workers.dev/wakelog

# install (puts one script in ~/.local/bin)curl -fsSL https://wakelog.wakelog.workers.dev/install.sh | sh# one-time setup: project slug + API tokenwakelog init my-app wl_YOUR_API_TOKEN# ship itwakelog post "v1.4: Dark mode" -t new -b "You asked, we shipped." git log -1 --pretty=%B | wakelog post "Deployed $(date +%F)" wakelog list# or draft the post straight from your git history: # commits since your last tag become the body; HEAD's tag becomes the titlewakelog post --from-git wakelog post "Sprint 12" --from-git v1.3..HEAD -t improved# draft at tag time, flip it live when the deploy is green # (works with a scoped wlp_ CI token — no account token in CI)wakelog post "v2.0: The big one" --draft # prints the draft idwakelog publish 42

--from-git transformagit log assuntos (excluindo merges) em uma lista de marcadores markdown — perfeito no final de um script de release. Passe uma tag/ref (commits desde ela) ou um intervaloA..B explícito; sem argumento, ele usa sua última tag. Quer seções agrupadas no estilo keep-a-changelog em vez de uma lista de marcadores? Cole o mesmogit log no gerador de notas de release — sem necessidade de cadastro.

Criar uma postagem

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="You asked, we shipped. **Dark mode** is live."

tag é opcional: um denew, improved, fix,announcement, security. body é markdown (negrito, itálico, código, links, imagens — ![alt](https://…), somente https, hotlinked de onde você os hospeda — listas, títulos, blocos de código cercados). Retorna201 com a URL pública.

Rascunhos

Adicione -d draft=true para salvar a postagem oculta — ela não aparecerá na página pública, feeds, widget, selo ou exportações até ser publicada. Escreva o anúncio no CI antes do release sair e depois ative-o com uma chamada (a publicação carimba a postagem com a data de publicação):

# write it ahead of time (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# ship day: publish draft 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 todo o trabalho do dia do lançamento: passepublish_at (ISO 8601, UTC assumido se não houver offset) e o Wakelog publica a postagem para você em ~5 minutos desse horário — notificações de saída Discord/Slack/webhook também disparam nesse momento. A postagem é 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). Altere o horário ou desagende com PATCH publish_at=… /publish_at= (vazio limpa), ou publique imediatamente comdraft=false.

# queue Friday's announcement on Tuesdaycurl -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

Importar 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; as datas são preservadas e entradas cujo título já existe são ignoradas — 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 uma (assim como github.com/you/repo/releases.atom); títulos de itens, datas e corpos HTML tornam-se entradas markdown. Se você fornecer a URL de uma página HTML de changelog, o Wakelog procura automaticamente pelo feed anunciado.

# with the CLI (reads ./CHANGELOG.md, shows a preview, asks to confirm)wakelog import# or raw API — send the file, or a url= to fetch it from; dry_run=1 to previewcurl -X POST https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/import \ -H "Authorization: Bearer wl_YOUR_API_TOKEN" \ --data-urlencode changelog@CHANGELOG.md# import a public repo's GitHub Releasescurl -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 postagens (público, sem autenticação)

curl https://wakelog.wakelog.workers.dev/api/v1/YOUR-PROJECT/posts

Parâmetros opcionais: ?q=term (pesquisar título + corpo), ?format=text (listagem em texto simples). As páginas públicas suportam a mesma pesquisa via caixa de busca ou ?q=. Cada postagem inclui suas contagens de emoji reactions quando tiver alguma.

Reações

Toda postagem pública tem botões anônimos de reação por emoji (👍 🎉 ❤️ 🚀) — feedback sem cookies dos seus leitores, contabilizado no seu painel. Eles simplesmente funcionam; nada para configurar. Programático: POST /p/YOUR-PROJECT/react/POST_ID com emoji=👍 (limitado por IP).

Editar uma postagem

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 (fixed)"

Envie apenas os campos que deseja alterar (title, body, tag,draftdraft=false publica um rascunho e o data de hoje). Os IDs das postagens estão na resposta de listagem de postagens.

Excluir uma postagem

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 painel 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). Cada release publicado vira uma postagem — nome do release como título, notas de release como corpo markdown, marcado com release (ou pre-release). As assinaturas são verificadas (X-Hub-Signature-256 / X-Gitea-Signature /X-Gitlab-Token), rascunhos são ignorados 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

Anunciar novas postagens no Discord / Slack / qualquer webhook

Defina uma URL de webhook no cartão Anunciar novas postagens na página do painel do seu projeto e toda postagem publicada (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 a postagem; 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 "Enviar teste" no painel para verificar sua configuração.

Postar automaticamente a cada 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="Deployed $(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 umtoken de CI com escopo (wlp_…, gerado na página do painel do projeto) que funciona apenas naquele projeto, e apenas paraPOST /api/v1/<slug>/posts (rascunhos epublish_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 criar rascunhos no momento da tag e ativar a postagem quando o deploy ficar verde. Sem leituras, sem edições de conteúdo, sem exclusões, sem outros projetos. Use-o como um valorAuthorization: Bearer substituto nos comandos acima (os comandospost/import/publish do CLI também o aceitam). Se vazar, gire ou revogue-o no painel; seu token de conta nunca é exposto.

Verificar 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}. Adicioneformat=text para um relatório em texto simples. O CLI o envolve com um código de saída, para que seu pipeline possa falhar quando o changelog escorregar:

# CI gate: exits 1 if the grade drops below Bwakelog lint CHANGELOG.md --min-grade B# or raw curl (JSON report)curl -sS -X POST https://wakelog.wakelog.workers.dev/api/v1/lint \ --data-urlencode changelog@CHANGELOG.md

Feeds e 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 em 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 de resumo da exportação — tudo o que foi lançado em um intervalo de datas, pronto para colar em um boletim ou resumo: ?since=2026-07-01&until=2026-07-31 (inclusivo, AAAA-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 postagens, padrão 10)

Popover "O que há de novo" (script drop-in)

Uma tag de script adiciona um sino flutuante ao seu aplicativo que mostra um selo de contagem de não lidos quando você lança algo novo e abre seu changelog em um popover quando clicado. O estado "visto" dos visitantes vive no próprio localStorage — sem cookies, nada armazenado no servidor.

Opções (atributos na tag do script):
data-selector="#whatsnew" — anexar ao seu próprio link/botão de navegação em vez do sino flutuante
data-theme="light|dark|auto" — tema do painel (padrão automático)
data-position="bottom-right|bottom-left|top-right|top-left" — canto do sino (padrão inferior direito)
data-accent="#rrggbb" — cor do selo de não lidos
A contagem de não lidos vem de GET /p/YOUR-PROJECT/widget.json?since=<timestamp> (CORS aberto, cache de 5 min) se você preferir construir sua própria interface.

Filtrar a página pública por tag: https://wakelog.wakelog.workers.dev/p/YOUR-PROJECT?tag=new (os selos de tag também são clicáveis)
Selo README (SVG, mostra o tempo desde a última postagem): https://wakelog.wakelog.workers.dev/p/YOUR-PROJECT/badge.svg
Markdown do selo: [![changelog](https://wakelog.wakelog.workers.dev/p/YOUR-PROJECT/badge.svg)](https://wakelog.wakelog.workers.dev/p/YOUR-PROJECT)
Opções do selo: ?label=updates&color=3757ad (hex sem #) — ou ajuste ao vivo no playground do selo

Scripts e agentes de IA: sem necessidade de navegador

Todo o ciclo de vida funciona via HTTP simples — cadastro incluído, sem CAPTCHA, sem email. Um guia legível por máquina com o fluxo completo está emhttps://wakelog.wakelog.workers.dev/llms.txt, e uma especificação OpenAPI 3.1 (para geração de código, exploradores e ferramentas de agente) emhttps://wakelog.wakelog.workers.dev/openapi.json.

Servidor MCP: aponte qualquer cliente do Model Context Protocol (transporte HTTP Streamable) para https://wakelog.wakelog.workers.dev/mcp e o Wakelog se torna ferramentas nativas: signup, create_project,create_post, list_posts,lint_changelog. A autenticação é o mesmo token de API, enviado como um cabeçalhoAuthorization: Bearer na conexão — um agente sem conta pode chamar a ferramenta signup para obter um. Sem estado: JSON-RPC simples sobre POST, sem sessão SSE necessária.

# programmatic signup: returns your API token + one-time recovery keycurl -X POST https://wakelog.wakelog.workers.dev/api/v1/signup \ -H 'content-type: application/json' \ -d '{"username":"my-handle","password":"correct horse battery"}'# create a projectcurl -X POST https://wakelog.wakelog.workers.dev/api/v1/projects \ -H "Authorization: Bearer wl_YOUR_API_TOKEN" \ -d name="My App" -d slug=my-app

Changelogs públicos ativos são listados no Discover automaticamente — visibilidade gratuita. Prefere ficar de fora (e fora do sitemap e dos mecanismos de busca)? Passe unlisted=true na criação ou altere a qualquer momento nas configurações do projeto.