# Marketing Blogs — Master Implementation Guide (LLM-Ready) > Blogs que uma pessoa escreve e publica — no endereço da linha ou em `/blog` > do próprio site — e para os quais um agente escreve rascunhos que só uma > pessoa leva ao ar. Rascunho, revisão, agenda, versões, SEO, comentários com > moderação, autores, categorias e tags. Cada post mostra até onde foi lido, > seção por seção, sem cookie e sem IP. > > Este arquivo é a documentação para agentes. **Leia a seção 10 antes de > prometer qualquer coisa**: ela diz o que o produto não faz. Blogs: https://blogs.mymarketing.click// e os domínios próprios das contas Worker (API, MCP, entrada de eventos): https://blogs.worker.mymarketing.click Painel: https://blogs.dashboard.mymarketing.click Servidor MCP: https://blogs.worker.mymarketing.click/mcp — ver a seção 7. O mapa da linha (todos os produtos, login): https://mymarketing.click/llms.txt ## 0. Estado e credenciais — leia antes de tudo - **No ar desde 09/10/2026; na linha Marketing desde o início.** `GET https://blogs.worker.mymarketing.click/status` responde `{"service":"marketing-blogs",…}` com o banco, os agendados, a cópia na borda, a leitura, a caixa de saída, os domínios e o assistente. - **Login:** o Auth da linha (`https://auth.worker.mymarketing.click`, aplicação Marketing), com código por e-mail. Mesmo login, autorização por produto. Passo humano obrigatório: a pessoa lê um código no e-mail e o informa. Não tente contornar. - **Chave da conta:** `bk_…`, várias por conta (até 20), cada uma com um nome, mostrada uma vez e guardada só como HMAC. Vale para a API (`Authorization: Bearer bk_…`). A chave não publica, não tira do ar, não exclui, não mexe em domínio nem em chave (403). **É recusada no `/mcp`.** - **MCP:** OAuth, com o mesmo login (seção 7). Não usa a `bk_`. - **Preço:** não há preço público e nada é cobrado. Não cite valor, plano, franquia em minutos nem "grátis". Se perguntarem: "Ainda não há planos, e nada é cobrado." Sem credencial de verdade, **pare e peça**. Não gere código com `bk_xxx` de placeholder e diga que terminou. ## 1. Modelo mental - **Blog** — vários por conta, cada um com endereço, autores, categorias, tags e domínio. O primeiro nasce como "Meu blog" no primeiro acesso. - **Post** — estados: Rascunho → Em revisão → Agendado → Publicado. Mudar um post publicado é um passo à parte (o rascunho dele vai ao ar com `/update`). Despublicar deixa 410; trocar o endereço deixa 301. - **Versão** — uma a cada pausa de 10 min, a cada publicação e a cada restauração, até 50 por post. Restaurar não apaga nada. - **Ideia** — a pauta: colunas Ideia, Rascunho, Revisão, Agendado e Publicado; o calendário marca os dias de publicar que ficaram sem post. - **Autor** — uma assinatura, com papel ("Autora convidada"). Não é uma conta. ## 2. Endereços e domínio próprio - Padrão: `https://blogs.mymarketing.click//`. O `` começa como o id e pode virar um nome; o nome antigo responde 301 por 90 dias. - Páginas do leitor: `/category`, `/tag`, `/author`, `/about`, `/search`, `/feed.xml`, `/sitemap.xml`, `/llms.txt`. O HTML sai só do render do produto. - **Domínio próprio, dois modos** (só humano, `POST /api/domains`): - subdomínio: CNAME para `cname.blogs.mymarketing.click`; - caminho: `/blog` (ou outro prefixo) dentro do site da pessoa; o DNS do site aponta para o Blogs e tudo fora do prefixo segue para a origem dela. - Quatro conferências antes de ligar: DNS, origem, rota e certificado. - SEO: `sitemap.xml`, RSS (`feed.xml`, resumo ou texto inteiro), Open Graph, JSON-LD, URL canônica, modelo de título, verificação do Google e do Bing, IndexNow ao publicar. Os robôs de IA de busca e de treino passam por padrão; `search.aiTraining: false` tira os de treino. ## 3. O texto Um post é JSON `blogs.doc/1` (o do editor Tiptap), validado no servidor: parágrafo, título (2 e 3), listas, citação, código, divisória, destaque, imagem dos arquivos do blog (texto alternativo obrigatório), vídeo, formulário e incorporação por código de origens aprovadas. A API aceita também `contentMarkdown`. Imagens até 10 MB (JPEG, PNG, WebP, GIF, AVIF, SVG, PDF). ## 4. Medir a leitura - Um script só nas páginas de post, **sem cookie e sem identificador**. - Conta: abriu (2 s com o post visível), a seção mais funda vista, chegou ao fim. Robôs e prévias de app ficam de fora. - A borda nunca guarda o IP nem o navegador. A soma é por post, dia e versão, nunca por leitor, e fica 13 meses. - Web Vitals de campo: LCP, INP e CLS no p75, por celular e computador. - `GET /api/posts/:postId/reading?month=AAAA-MM` devolve aberturas, quantos chegaram ao fim e a leitura por seção. - **Não mede visitas nem origem.** Isso é da ferramenta de medição da pessoa, que só roda em domínio próprio. ## 5. Rotas da API (resumo) Base `https://blogs.worker.mymarketing.click`, `Authorization: Bearer bk_…` ou o token da sessão. Coleção como `{ items, page }`, erro como `{ error: { code, message } }`, sem versão no caminho. - `GET|POST /api/blogs` · `GET|PATCH /api/blogs/:blogId` - `GET|POST /api/posts` · `GET|PATCH /api/posts/:postId` (`If-Match: `) - `POST /api/posts/:postId/review` — rascunho → Em revisão (o agente para aqui) - `POST /api/posts/:postId/schedule` `{ at }` — pede quem assina (pessoa) - `POST /api/posts/:postId/publish` · `/update` · `/unpublish` — só humano - `GET /api/posts/:postId/versions` · `POST …/versions/:versionId/restore` - `GET /api/posts/:postId/export.md` · `GET /api/export?blogId` (`.zip`) - `GET|POST /api/ideas` · `POST /api/ideas/:id/start` `{ askAgent? }` - `GET /api/comments` · `POST /api/comments/:id/approve|reply|to-idea` - `GET|POST /api/webhooks` · `GET /api/deliveries` · `POST /api/deliveries/:id/retry` - `GET|POST /api/sources` (entrada de eventos) · `GET|POST /api/keys` - `GET /api/pending-actions` · `POST /api/pending-actions/:id/approve|reject` ## 6. Eventos **Para fora** (Standard Webhooks, cabeçalhos `x-ccm-id`, `x-ccm-timestamp`, `x-ccm-signature`; envelope `{ type, timestamp, data: { person, channel, properties } }`), até 20 destinos: `post.scheduled`, `post.published`, `post.updated`, `post.unpublished`, `comment.created` (leva `person: { email, name }`), `idea.requested`, `draft.requested`, `action.pending`. Toda entrega passa pela caixa de saída: novas tentativas em 1 min, 5 min, 30 min, 2 h e 12 h; 401 e 403 ficam retidos; 410 é definitivo. Reenviar leva o mesmo id. **Para dentro:** `POST https://blogs.worker.mymarketing.click/events/:sourceId`, assinado com o segredo da fonte, só os tipos marcados nela: `idea.proposed`, `delivery.reported`, `permission.granted`, `permission.revoked`. A permissão abre os posts de "Quem vê" para o e-mail que ela traz. ## 7. Servidor MCP `https://blogs.worker.mymarketing.click/mcp` — OAuth 2.1 com o login da linha; o token só vale para este servidor (audiência conferida). A conta vem do token, nunca de um argumento. A política de cada ferramenta é do servidor: - **Livre** (executa): `blogs_list_posts`, `blogs_get_post`, `blogs_search`, `blogs_create_draft`, `blogs_propose_idea`, `blogs_suggest`, `blogs_report_delivery`, `blogs_request_review`. - **Confirma** (vira um pedido que uma pessoa aprova no painel; nada muda antes): `blogs_schedule_post`, `blogs_update_published_post`, `blogs_reply_comment`. - **Só humano** (não são registradas): `blogs_publish_post`, `blogs_delete_post`. O teto do agente é "Em revisão". O agente nunca publica e nunca assina um post publicado. ## 8. Assistente, busca e "Pergunte ao blog" - "Pedir ao agente" escreve um primeiro rascunho (abertura e 4 a 6 seções) lendo só o próprio blog; marca entre colchetes o que só a pessoa sabe. Se a conta tem uma integração que assina `draft.requested`, o pedido vai para ela. 30 rascunhos e 30 pautas por conta por dia. - `/search?q=` entende plural, raiz, sinônimos do blog e perguntas; guarda só o termo e se achou algo, por dia. - `/ask?q=` ("Pergunte ao blog") responde em 3 ou 4 frases tiradas só de trechos do blog, cada uma citando o post. **Desligado até o blog ligar.** ## 9. Retenção Versões: até 50 por post. Leitura: 13 meses. Hash do IP dos comentários: apagado em 48 h. A exportação leva os posts em Markdown e os comentários. ## 10. Escopo — o que este produto NÃO faz - **Enviar newsletter.** Não guarda lista de assinantes nem manda e-mail sobre os posts. A carta é da Newsletter (https://mymarketing.click/products/newsletter/llms.txt). - **Medir visitas ou origem.** Mede a leitura e os Web Vitals. - **Equipe com papéis.** Autores são assinaturas. - **Temas e cores por blog.** - **Séries, link curto, captcha nos comentários.** - **Importar de outra plataforma.** - **Agente publicando** ou assinando post publicado. - **Cobrança.** Não há plano publicado, e nada é cobrado. ## 11. Checklist para agentes de IA 1. **Para o MCP, o login por código no e-mail**; para a API, peça a `bk_`. 2. **Leia antes de escrever:** `blogs_list_posts` e `blogs_get_post` dão o tom. 3. **Não invente fatos, números nem citações;** marque entre colchetes. 4. **Pare em "Em revisão"** com `blogs_request_review`. Publicar é da pessoa. 5. **Agendar, mudar um publicado e responder a um leitor esperam aprovação.** 6. **Não prometa newsletter, painel de visitas nem tema próprio.** 7. **Não invente rota nem tool.** A seção 5 lista as rotas; a 7, as tools.