Por que o Discourse não suporta IndexNow?

Após revisar a funcionalidade do IndexNow, concordo que este deve ser um dos recursos/plugins principais. Também entendo que os recursos de desenvolvimento são limitados.

Aqui estão minhas ideias sobre o plugin necessário para auxiliar a equipe principal. Sinta-se à vontade para adicionar comentários adicionais.

Suposições:

  1. O Plugin IndexNow usará notificações em massa em um modelo de tempo agendado - Veja Consideração de Design nº 1
  2. Notificações em massa serão definidas em um intervalo de tempo
  3. As notificações usarão apenas tópicos públicos
  4. As notificações serão apenas para tópicos novos/alterados/excluídos quando o plugin estiver ativado.
  5. O plugin não notificará retroativamente alterações/eventos históricos.

Instruções para Usuários:

  1. Cadastre-se no motor de busca IndexNow de sua escolha.
    • Obtenha sua Chave de API
    • Obtenha o URL do endpoint do motor de busca
  2. Instale o Plugin
  3. Configure o administrador

Caso de Uso - Configurações do Administrador

  1. Permitir que o usuário ative/desative as capacidades de envio automático
  2. Permitir que o usuário insira o endpoint do motor de busca IndexNow. Veja Consideração de Design nº 3.
    • O campo de entrada é um parâmetro de texto
    • O campo de entrada deve ser um URL válido
    • O padrão será o URL do Bing em https://www.bing.com/indexnow
  3. Permitir que o usuário insira e armazene a chave de API
    • Campo de string de entrada para armazenar a chave de API
    • O campo de entrada é alfanumérico
    • O valor padrão será “”
  4. Permitir que o usuário defina parâmetros de tempo agendado para notificações em massa
    • O parâmetro de tempo será definido por horas de intervalo
    • String de entrada para armazenar o valor da hora
    • As entradas válidas serão inteiros
    • As entradas válidas podem variar de 1 a 24
    • O valor padrão será 12

Caso de Uso - Arquivo de Chave de Texto

  1. O sistema gerará um arquivo chamado indexnowkey.txt
  2. O arquivo de chave deve ser armazenado no nível raiz.
  3. O sistema preencherá o arquivo com a chave de API
  4. O arquivo será acessível por qualquer usuário/sistema remoto via http/https

Caso de Uso - Agendamento do processo de Notificação em Massa

  1. O sistema agendará os trabalhos para processar em intervalos com base na configuração definida nas configurações do administrador.
  2. O valor do intervalo define o atraso entre os trabalhos em horas. Por exemplo, um valor de entrada de 2 indicaria que o trabalho deve ser executado a cada 2 horas. Um valor de 4 indica que o trabalho deve ser executado a cada 4 horas. Um valor de 24 indicaria que o trabalho deve ser executado uma vez por dia.

Caso de Uso - Processo de Notificação em Massa

  1. O sistema determinará se o processo de notificação está ativado através da configuração do site definida nas configurações do administrador.
  2. O sistema determinará se uma chave de API é válida nas configurações do site - não “”.
  3. O sistema criará uma lista de tópicos com base na configuração de intervalo de tempo definida. Veja Consideração de Design nº 2 sobre os períodos de tempo de consulta. Os parâmetros de tópico para inclusão são:
    • Os tópicos devem ser apenas para visualização pública
    • Novos Tópicos
    • Tópicos com novas postagens
    • Tópicos com postagens editadas
    • Tópicos excluídos
    • A lista de tópicos deve ser distinta - sem duplicatas
  4. O sistema criará o pacote JSON usando o seguinte formato.
{
  "host": "current_site",
  "key": "api_key",
  "keyLocation": "https://current_site/indexnowkey.txt",
  "urlList": [
      "https://www.example.com/url1",
      "https://www.example.com/folder/url2",
      "https://www.example.com/url3"
      ]
}
  1. O pacote JSON será enviado para o seguinte
    • URL: sitesettings.search_engine_indexnow_endpoint
  2. O pacote JSON será enviado com os seguintes cabeçalhos
    • Content-Type: application/json; charset=utf-8
    • Http/1.1
    • Host: bing
  3. Validar o recebimento da submissão da requisição HTTP
    • http 200 - submissão bem-sucedida - fim do processo
    • Http 429 - Muitas tentativas de submissão - Enviar notificação ao administrador para aumentar o tempo de intervalo

Considerações de Design:

  1. Notificações em Massa vs. Notificações Individuais — Uma única notificação seria aceitável para domínios pequenos, mas para fóruns maiores, adicionar uma notificação para cada postagem nova/atualizada poderia criar muitos processos de eventos. Do ponto de vista do desempenho da indexação do motor de busca, notificações em massa em base horária seriam aceitáveis para 80% dos fóruns.
  2. Tempo de consulta de notificações em massa - SideKiq controla os tempos de intervalo. Se o SideKiq estiver em um status de processo pesado, o processo de notificação em massa pode ser atrasado. O processo de notificação em massa pode perder tópicos novos/atualizados se o período de tempo da consulta for igual ao intervalo de agendamento. Um parâmetro de tempo deveria estender a consulta para cobrir processos atrasados? Ou é possível que o Agendador passe timestamps iniciados para controlar os intervalos de tempo de consulta? Ou precisamos criar uma tabela/valor de banco de dados para tópicos submetidos com um timestamp?
  3. Devemos construir uma tabela interna com cada motor de busca e o URL do endpoint IndexNow definido? O usuário pode selecionar as opções em um menu suspenso em vez de inserir um URL. Isso remove potenciais erros humanos.

O que está faltando? O que você adicionaria?