¿Por qué Discourse no soporta IndexNow?

Después de revisar la funcionalidad de IndexNow, estoy de acuerdo en que debería ser una de las características/plugins principales. También entiendo que los recursos de desarrollo son limitados.

Aquí están mis pensamientos sobre el plugin requerido para ayudar al equipo principal. No dude en agregar comentarios adicionales.

Supuestos:

  1. El plugin IndexNow utilizará notificaciones masivas en un modelo de tiempo programado - Ver Consideración de Diseño #1
  2. Las notificaciones masivas se establecerán en un intervalo de tiempo.
  3. Las notificaciones solo usarán temas públicos.
  4. Las notificaciones serán solo para temas nuevos/modificados/eliminados cuando el plugin esté habilitado.
  5. El plugin no notificará retroactivamente cambios/eventos históricos.

Instrucciones para los usuarios:

  1. Regístrese en el motor de búsqueda de IndexNow de su elección.
    • Obtenga su clave API
    • Obtenga la URL del punto final del motor de búsqueda
  2. Instalar Plugin
  3. Configurar administrador

Caso de uso - Configuración del administrador

  1. Permitir al usuario activar/desactivar las capacidades de envío automático.
  2. Permitir al usuario ingresar el punto final del motor de búsqueda IndexNow. Ver Consideración de Diseño #3.
    • El campo de entrada es un parámetro de texto.
    • El campo de entrada debe ser una URL válida.
    • Por defecto, la URL de Bing en https://www.bing.com/indexnow
  3. Permitir al usuario ingresar y almacenar la clave API.
    • Campo de cadena de entrada para almacenar la clave API.
    • El campo de entrada es alfanumérico.
    • El valor predeterminado será “”.
  4. Permitir al usuario definir parámetros de tiempo programado para notificaciones masivas.
    • El parámetro de tiempo se establecerá por intervalo de horas.
    • Cadena de entrada para almacenar el valor de la hora.
    • Las entradas válidas serán enteros.
    • Las entradas válidas pueden variar de 1 a 24.
    • El valor predeterminado será 12.

Caso de uso - Archivo de clave de texto

  1. El sistema generará un archivo llamado indexnowkey.txt.
  2. El archivo de clave debe almacenarse en el nivel raíz.
  3. El sistema poblará el archivo con la clave API.
  4. El archivo será accesible para cualquier usuario/sistema remoto a través de http/https.

Caso de uso - Programación del proceso de notificación masiva

  1. El sistema programará los trabajos para que se procesen a intervalos según la configuración definida en la configuración del administrador.
  2. El valor del intervalo define el retraso entre trabajos en horas. Por ejemplo, un valor de entrada de 2 indicaría que el trabajo debe ejecutarse cada 2 horas. Un valor de 4 indica que el trabajo debe ejecutarse cada 4 horas. Un valor de 24 indicaría que el trabajo debe ejecutarse una vez al día.

Caso de uso - Proceso de notificación masiva

  1. El sistema determinará si el proceso de notificación está activado a través de la configuración del sitio definida en la configuración del administrador.
  2. El sistema determinará si una clave API es válida en la configuración del sitio - no “”.
  3. El sistema creará una lista de temas basada en la configuración del intervalo de tiempo definido. Ver Consideración de Diseño #2 sobre los marcos de tiempo de consulta. Los parámetros del tema para la inclusión son:
    • Los temas deben ser solo de vista pública.
    • Temas nuevos
    • Temas con nuevas publicaciones
    • Temas con publicaciones editadas
    • Temas eliminados
    • La lista de temas debe ser distinta, sin duplicados.
  4. El sistema creará el paquete JSON utilizando el siguiente formato.
{
  "host": "sitio_actual",
  "key": "clave_api",
  "keyLocation": "https://sitio_actual/indexnowkey.txt",
  "urlList": [
      "https://www.example.com/url1",
      "https://www.example.com/folder/url2",
      "https://www.example.com/url3"
      ]
}
  1. El paquete JSON se enviará a lo siguiente:
    • URL: sitesettings.search_engine_indexnow_endpoint
  2. El paquete JSON se enviará con las siguientes cabeceras:
    • Content-Type: application/json; charset=utf-8
    • Http/1.1
    • Host: bing
  3. Validar la recepción de la solicitud HTTP.
    • http 200 - envío exitoso - fin del proceso
    • Http 429 - Demasiados intentos de envío - Enviar notificación al administrador para aumentar el tiempo de intervalo.

Consideraciones de diseño:

  1. Notificaciones masivas vs. Notificaciones individuales: Una notificación individual sería aceptable para dominios pequeños, pero para foros más grandes, agregar una notificación por cada publicación nueva/actualizada podría crear muchos procesos de eventos. Desde la perspectiva del rendimiento de indexación del motor de búsqueda, las notificaciones masivas cada hora serían aceptables para el 80% de los foros.
  2. Tiempo de consulta de notificaciones masivas: SideKiq controla los tiempos de intervalo. Si SideKiq está en un estado de proceso intenso, el proceso de notificación masiva podría retrasarse. El proceso de notificación masiva podría perder temas nuevos/actualizados si el marco de tiempo de consulta es igual al intervalo de programación. ¿Debería un parámetro de tiempo extender la consulta para cubrir procesos retrasados? ¿O es posible que el programador pase marcas de tiempo iniciadas para controlar los intervalos de tiempo de consulta? ¿O necesitamos crear una tabla/valor de base de datos para los temas enviados con una marca de tiempo?
  3. ¿Deberíamos crear una tabla interna con cada motor de búsqueda y el punto final de URL IndexNow definido? El usuario puede seleccionar las opciones de un menú desplegable en lugar de ingresar una URL. Esto elimina posibles errores humanos.

¿Qué falta? ¿Qué añadirías?