Perché Discourse non supporta IndexNow?

Dopo aver esaminato la funzionalità IndexNow, concordo sul fatto che dovrebbe essere una delle funzionalità/plugin principali. Comprendo anche che le risorse per gli sviluppatori sono limitate.

Ecco i miei pensieri sul plugin richiesto per assistere il team principale. Sentiti libero di aggiungere ulteriori commenti.

Presupposti:

  1. Il plugin IndexNow utilizzerà notifiche di massa secondo un modello di tempo programmato - Vedi Considerazione di progettazione n. 1
  2. Le notifiche di massa saranno impostate su un intervallo di tempo
  3. Le notifiche utilizzeranno solo argomenti pubblici
  4. Le notifiche saranno solo per argomenti nuovi/modificati/eliminati quando il plugin è abilitato.
  5. Il plugin non notificherà retroattivamente modifiche/eventi storici.

Istruzioni per gli utenti:

  1. Registrati con il motore di ricerca IndexNow di tua scelta.
    • Ottieni la tua API Key
    • Ottieni l’URL dell’endpoint del motore di ricerca
  2. Installa il plugin
  3. Configura l’amministratore

Caso d’uso - Impostazioni amministratore

  1. Consentire all’utente di attivare/disattivare le funzionalità di invio automatico
  2. Consentire all’utente di inserire l’endpoint del motore di ricerca IndexNow. Vedi Considerazione di progettazione n. 3.
    • Il campo di input è un parametro di testo
    • Il campo di input deve essere un URL valido
    • Imposta come predefinito l’URL di Bing su https://www.bing.com/indexnow
  3. Consentire all’utente di inserire e memorizzare la API key
    • Campo stringa di input per memorizzare la API key
    • Il campo di input è alfanumerico
    • Il valore predefinito sarà “”
  4. Consentire all’utente di definire i parametri di tempo programmato per le notifiche di massa
    • Il parametro di tempo sarà impostato per intervalli di ore
    • Stringa di input per memorizzare il valore delle ore
    • Gli input validi saranno numeri interi
    • Gli input validi possono variare da 1 a 24
    • Il valore predefinito sarà 12

Caso d’uso - File chiave di testo

  1. Il sistema genererà un file chiamato indexnowkey.txt
  2. Il file chiave deve essere memorizzato a livello di root.
  3. Il sistema popolerà il file con la API key
  4. Il file sarà accessibile da qualsiasi utente/sistema remoto tramite http/https

Caso d’uso - Pianificazione del processo di notifica di massa

  1. Il sistema pianificherà l’esecuzione dei processi a intervalli in base all’impostazione definita nelle impostazioni dell’amministratore.
  2. Il valore dell’intervallo definisce il ritardo tra i processi in ore. Ad esempio, un valore di input di 2 indicherebbe che il processo deve essere eseguito ogni 2 ore. Un valore di 4 indica che il processo deve essere eseguito ogni 4 ore. Un valore di 24 indica che il processo deve essere eseguito una volta al giorno.

Caso d’uso - Processo di notifica di massa

  1. Il sistema determinerà se il processo di notifica è attivato tramite l’impostazione del sito definita nelle impostazioni dell’amministratore.
  2. Il sistema determinerà se una API key è valida nelle impostazioni del sito - non “”.
  3. Il sistema creerà un elenco di argomenti in base all’impostazione dell’intervallo di tempo definito. Vedi Considerazione di progettazione n. 2 sui tempi di query. I parametri dell’argomento per l’inclusione sono:
    • Gli argomenti devono essere solo per la visualizzazione pubblica
    • Nuovi argomenti
    • Argomenti con nuovi post
    • Argomenti con post modificati
    • Argomenti eliminati
    • L’elenco degli argomenti deve essere distinto - senza duplicati
  4. Il sistema creerà il pacchetto JSON utilizzando il seguente 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. Il pacchetto JSON verrà inviato a:
    • URL: sitesettings.search_engine_indexnow_endpoint
  2. Il pacchetto JSON verrà inviato con le seguenti intestazioni:
    • Content-Type: application/json; charset=utf-8
    • Http/1.1
    • Host: bing
  3. Validare la ricezione della richiesta HTTP
    • http 200 - invio riuscito - fine processo
    • Http 429 - Troppi tentativi di invio - Inviare una notifica all’amministratore per aumentare il tempo di intervallo

Considerazioni di progettazione:

  1. Notifiche di massa vs. Notifiche singole — Una singola notifica sarebbe accettabile per piccoli domini, ma per forum più grandi, l’aggiunta di una notifica per ogni post nuovo/aggiornato potrebbe creare molti processi di eventi. Dal punto di vista delle prestazioni di indicizzazione dei motori di ricerca, notifiche di massa su base oraria sarebbero accettabili per l’80% dei forum.
  2. Tempi di query per le notifiche di massa - SideKiq controlla i tempi di intervallo. Se SideKiq è in uno stato di processo pesante, il processo di notifica di massa potrebbe essere ritardato. Il processo di notifica di massa potrebbe perdere argomenti nuovi/aggiornati se l’intervallo di tempo della query è uguale all’intervallo di pianificazione. Un parametro di tempo dovrebbe estendere la query per coprire i processi ritardati? O è possibile che lo Scheduler passi timestamp avviati per controllare gli intervalli di tempo della query? O dobbiamo creare una tabella/valore del database per gli argomenti inviati con un timestamp?
  3. Dovremmo creare una tabella interna con ciascun motore di ricerca e l’endpoint URL IndexNow definito? L’utente potrebbe scegliere tra un menu a discesa invece di inserire un URL. Ciò rimuove potenziali errori umani.

Cosa manca? Cosa aggiungeresti?