Código e Automação

11 de fev. de 2026

Go back

RSS Generator v2.0: Integrando IndexNow, Cloudflare Workers e Framer para Indexação Quase em Tempo Real

Evolução do RSS Generator para Framer com integração ao IndexNow, Cloudflare Workers, automação via cron e arquitetura robusta para indexação quase em tempo real no Bing e AI Search.

A crazy but friendly cartoon scientist with messy hair, wearing a white lab coat, holding a giant glowing RSS EXTRACTOR

Fique por dentro do que há de mais relavante no Marketing Digital, assine a nossa newsletter:

Introdução

No post anterior 👉 https://adrock.com.br/blog/rss-generator-framer-python mostrei como construir um gerador de RSS em Python para contornar as limitações do Framer CMS.

Agora o projeto evoluiu para uma arquitetura mais madura:

RSS Generator v2.0, com:

  • Integração oficial com IndexNow

  • Validação de chave via Cloudflare Workers

  • Controle de duplicidade via SQLite

  • Automação por cron no servidor

  • Ajustes finos de infraestrutura para compatibilidade com Bing e AI Search

Este post é técnico e voltado para desenvolvedores que querem implementar indexação ativa em ambientes headless.

O Problema: Framer não permite upload de arquivos raiz

Para que o protocolo IndexNow funcione corretamente, é necessário publicar um arquivo de verificação no domínio principal:

https://seusite.com/sua-chave.txt
https://seusite.com/sua-chave.txt
https://seusite.com/sua-chave.txt

No nosso caso:

https://adrock.com.br/adrock-indexnow-2026.txt
https://adrock.com.br/adrock-indexnow-2026.txt
https://adrock.com.br/adrock-indexnow-2026.txt

O problema:

  • Framer não permite upload direto de arquivos estáticos na raiz

  • O plano utilizado não oferece acesso ao filesystem

  • O domínio está atrás do Cloudflare

Era necessário uma solução elegante e compatível com o protocolo.

Arquitetura da Solução

A solução adotada foi:

Framer CMS
   
RSS Generator (Python)
   
IndexNow Sender
   
api.indexnow.org
Framer CMS
   
RSS Generator (Python)
   
IndexNow Sender
   
api.indexnow.org
Framer CMS
   
RSS Generator (Python)
   
IndexNow Sender
   
api.indexnow.org

E para validação da chave:

Cloudflare Worker
   
Serve /adrock-indexnow-2026.txt
Cloudflare Worker
   
Serve /adrock-indexnow-2026.txt
Cloudflare Worker
   
Serve /adrock-indexnow-2026.txt

Implementação do Cloudflare Worker

Criamos um Worker simples:

export default {
  async fetch(request) {
    const url = new URL(request.url);

    if (url.pathname === "/adrock-indexnow-2026.txt") {
      return new Response("adrock-indexnow-2026", {
        headers: { "Content-Type": "text/plain" }
      });
    }

    return new Response("Not Found", { status: 404 });
  }
};
export default {
  async fetch(request) {
    const url = new URL(request.url);

    if (url.pathname === "/adrock-indexnow-2026.txt") {
      return new Response("adrock-indexnow-2026", {
        headers: { "Content-Type": "text/plain" }
      });
    }

    return new Response("Not Found", { status: 404 });
  }
};
export default {
  async fetch(request) {
    const url = new URL(request.url);

    if (url.pathname === "/adrock-indexnow-2026.txt") {
      return new Response("adrock-indexnow-2026", {
        headers: { "Content-Type": "text/plain" }
      });
    }

    return new Response("Not Found", { status: 404 });
  }
};

Depois configuramos a rota:

adrock.com.br/adrock-indexnow-2026.txt
adrock.com.br/adrock-indexnow-2026.txt
adrock.com.br/adrock-indexnow-2026.txt

E ativamos proxy (nuvem laranja) no Cloudflare.

Isso resolveu a limitação estrutural do Framer sem alterar a aplicação principal.

Cloudfare Worker

Ajustes no Protocolo IndexNow

Inicialmente utilizamos o parâmetro keyLocation.

Isso gerava erro:

422 InvalidRequestParameters
Keylocation is not allowed
422 InvalidRequestParameters
Keylocation is not allowed
422 InvalidRequestParameters
Keylocation is not allowed

O ajuste correto foi remover completamente o keyLocation do payload.

Payload final:

payload = {
    "host": "adrock.com.br",
    "key": "adrock-indexnow-2026",
    "urlList": urls_to_send
}
payload = {
    "host": "adrock.com.br",
    "key": "adrock-indexnow-2026",
    "urlList": urls_to_send
}
payload = {
    "host": "adrock.com.br",
    "key": "adrock-indexnow-2026",
    "urlList": urls_to_send
}

Com isso, o protocolo assume automaticamente:

https://adrock.com.br/adrock-indexnow-2026.txt
https://adrock.com.br/adrock-indexnow-2026.txt
https://adrock.com.br/adrock-indexnow-2026.txt

Resultado:

Status: 202
Status: 202
Status: 202

No IndexNow:

  • 200 → Processado imediatamente

  • 202 → Aceito para processamento assíncrono

Ambos são sucesso.

Controle de Duplicidade com SQLite

Para evitar reenvio desnecessário:

indexnow/logs.db
indexnow/logs.db
indexnow/logs.db

Cada URL enviada é registrada.

Antes de enviar, o sistema verifica:

  • Já foi enviada?

  • Teve sucesso?

  • Está pendente?

Isso evita:

  • Spam no endpoint

  • Reenvios redundantes

  • Penalização por excesso de chamadas

Automação via Cron

O projeto já possuía cron rodando o main.py diariamente.

Agora o fluxo ficou:

Framer publica

RSS é atualizado

Cron executa

IndexNow envia delta

Bing recebe notificação
Framer publica

RSS é atualizado

Cron executa

IndexNow envia delta

Bing recebe notificação
Framer publica

RSS é atualizado

Cron executa

IndexNow envia delta

Bing recebe notificação

Indexação quase em tempo real.

Impacto em SEO Técnico

Esse tipo de arquitetura melhora:

  • Tempo de descoberta de novos posts

  • Indexação no Bing

  • Possível consumo por sistemas AI Search

  • Pipeline de dados estruturados

Não substitui sitemap, mas complementa.

IndexNow funciona como push, enquanto sitemap é pull.

Considerações sobre Infraestrutura

Pontos críticos aprendidos:

  1. O arquivo de chave precisa estar no domínio raiz.

  2. Proxy do Cloudflare precisa estar ativado.

  3. O host no payload deve bater exatamente com o domínio das URLs.

  4. Não utilizar keyLocation ao enviar via endpoint público.

Erros comuns:

  • Servir chave em subdomínio diferente

  • Enviar host divergente

  • Enviar chave com caminho incorreto

  • Não ativar proxy no Cloudflare

RSS Generator v2.0 – O que mudou

Comparado à versão inicial:

Versão 1

Versão 2

Apenas RSS

RSS + IndexNow

Sem controle de envio

Controle via SQLite

Indexação passiva

Indexação ativa

Dependente de crawl

Notificação direta

Próximos Passos

Possíveis evoluções:

  • Envio apenas de delta real comparando hash do RSS

  • Monitoramento via Bing Webmaster API

  • Retry inteligente para status != 200/202

  • White label para clientes

  • Métrica de tempo médio até indexação

Conclusão

O RSS Generator evoluiu de um simples workaround para Framer para uma arquitetura robusta de SEO técnico.

Agora temos:

  • CMS headless

  • RSS customizado

  • Push ativo para motores

  • Validação automatizada

  • Infraestrutura escalável

Essa abordagem é especialmente útil para:

  • Blogs técnicos

  • Portais de conteúdo

  • Sites institucionais com baixa frequência de atualização

  • Projetos que dependem de indexação rápida

Se você trabalha com SEO técnico e arquitetura web, integrar IndexNow com CMS headless é um diferencial competitivo real.

Conteúdo original pesquisado e redigido pelo autor. Ferramentas de IA podem ter sido utilizadas para auxiliar na edição e no aprimoramento.

Conteúdo original pesquisado e redigido pelo autor. Ferramentas de IA podem ter sido utilizadas para auxiliar na edição e no aprimoramento.

Posts relacionados:

Posts relacionados:

Compartilhe!

Go back

Deixe a IA fazer o trabalho para Você Crescer Mais Rápido

Agende uma conversa hoje e comece a automatizar.

Deixe a IA fazer o trabalho para Você Crescer Mais Rápido

Agende uma conversa hoje e comece a automatizar.

© 2010 - 2026 Copyright

All Rights Reserved - Develop by Ad Rock Digital Mkt

Tecnologias utilizadas

© 2010 - 2026 Copyright

All Rights Reserved - Develop by
Ad Rock Digital Mkt

Tecnologias utilizadas