Por que o Discourse não suporta IndexNow?

Na era atual de informações rápidas e obsoletas, a velocidade de indexação é um dos fatores mais importantes para o sucesso.

Mas por que o Discourse não suporta este protocolo de forma alguma? https://www.indexnow.org/

3 curtidas

Porque ninguém se importou o suficiente para criar um plugin ou um pull-request para dar suporte a isso. O que eu diria que é provavelmente causado pelo fato de que o Google não suporta o IndexNow, que é o mecanismo de busca que a maioria das pessoas se importa.

Mas se você quiser criar um plugin para adicionar essa funcionalidade, essa é uma contribuição bem-vinda!

14 curtidas

Gostaria de contribuir para a comunidade e programar esta extensão, mas não somos programadores.

A atitude do Google em relação ao IndexNow é que eles estão testando e veremos.

Alguma novidade sobre o Index Now? Agora que até a Open AI executa um motor de busca que utiliza o índice do Bing e que está ligado ao IndexNow, faz ainda mais sentido.

Então você poderia encomendar o plugin no Marketplace. Posso imaginar soluções na faixa de US$ 500 a US$ 2.000. Outros podem ter imaginação melhor do que eu.

3 curtidas

Concordo, agora parece um ótimo momento para o Discourse dar suporte ao IndexNow :))

1 curtida

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?

Existe uma maneira de aproveitar nosso suporte existente de webhook de saída para realizar parte ou tudo o que você deseja?

1 curtida

Isso parece um esboço bem razoável. Eu faria apenas envios em massa/lotes para evitar ter dois métodos para escrever, depurar, testar e manter.

Ou talvez um único trabalho em massa/lote possa evitar os problemas de limitação de taxa e, em seguida, ter apenas uma maneira de enviar coisas (apenas em lote, nunca em nível de postagem individual).

Uma versão que enviasse para um único endpoint custaria de US$ 2.000 por algo que parecesse funcionar e tivesse tratamento mínimo de erros a US$ 5.000 por algo com pelo menos algumas especificações para fazer testes; e talvez pudesse lidar com a notificação de múltiplos endpoints?

Você está fazendo uma ótima pergunta “Como”. Eu não sou a melhor pessoa para fazer perguntas “Como” sobre Discourse.

Eu sou bom em documentar o “O quê” é necessário. Obter uma definição boa e clara do “O quê” é necessário tornará a codificação mais rápida e, portanto, mais barata.

Para responder ao “O quê” para webhooks, acredito que ele se refere a notificações únicas versus em massa. Eu tenho um fórum de tamanho médio e prefiro notificações em massa.

  1. Não preciso que os motores de busca sejam notificados quando um tópico é criado ou atualizado.
  2. Não gosto de adicionar eventos de menor prioridade a processos críticos como criação de tópicos e posts. Adicionar eventos adicionais aumenta o tempo de espera para os usuários. Um método em massa requer apenas uma consulta SQL e um envio HTTP. Ele pode ser processado como um evento de back-end fora da interação do usuário.

O plugin só precisaria ser desenvolvido para um endpoint. O acordo IndexNow exige que os mecanismos de busca compartilhem envios entre si. Ou seja, você envia para o Bing, e então o Bing envia para os outros mecanismos de busca compatíveis com o IndexNow.

Precisamos de 30 membros para financiar coletivamente a $100 cada para que o plugin seja desenvolvido.

1 curtida