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:
- O Plugin IndexNow usará notificações em massa em um modelo de tempo agendado - Veja Consideração de Design nº 1
- Notificações em massa serão definidas em um intervalo de tempo
- As notificações usarão apenas tópicos públicos
- As notificações serão apenas para tópicos novos/alterados/excluídos quando o plugin estiver ativado.
- O plugin não notificará retroativamente alterações/eventos históricos.
Instruções para Usuários:
- Cadastre-se no motor de busca IndexNow de sua escolha.
- Obtenha sua Chave de API
- Obtenha o URL do endpoint do motor de busca
- Instale o Plugin
- Configure o administrador
Caso de Uso - Configurações do Administrador
- Permitir que o usuário ative/desative as capacidades de envio automático
- 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
- 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á “”
- 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
- O sistema gerará um arquivo chamado indexnowkey.txt
- O arquivo de chave deve ser armazenado no nível raiz.
- O sistema preencherá o arquivo com a chave de API
- 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
- O sistema agendará os trabalhos para processar em intervalos com base na configuração definida nas configurações do administrador.
- 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
- O sistema determinará se o processo de notificação está ativado através da configuração do site definida nas configurações do administrador.
- O sistema determinará se uma chave de API é válida nas configurações do site - não “”.
- 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
- 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"
]
}
- O pacote JSON será enviado para o seguinte
- URL:
sitesettings.search_engine_indexnow_endpoint
- URL:
- O pacote JSON será enviado com os seguintes cabeçalhos
- Content-Type: application/json; charset=utf-8
- Http/1.1
- Host: bing
- 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:
- 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.
- 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?
- 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?