Il funzionamento dell’algoritmo di digg

Con questo post intendo rispondere a quanti si chiedono come funziona il sistema che sta alla base della classifica delle storie inviate a digg, analizzandone gli algoritmi di ordinamento e spam detection, in relazione al ciclo vitale di una “submission“. In un prossimo post cercherò di fornire consigli pratici a chiunque intenda sfruttare ai fini di marketing questo sito per la promozione dei propri contenuti.

Prima di tutto, una breve introduzione: digg è un sistema di news voting (ok, forse è meglio dire item voting), dove la community può proporre storie, video e podcast e votare il materiale inviato da altri. Gli URL delle storie più popolari vengono inseriti in home page, e vi restano per qualche tempo ricevendo gran parte dell’attenzione dell’enorme base di utenti e visitatori del sito – spider compresi.

Avremo modo in seguito di sviscerare la community e tutto l’aspetto sociale del sito, adesso è ora di concentrarsi sugli algoritmi di digg.

Dopo la submission

Quando qualcuno invia una storia, questa va a finire nella pagina “upcoming” della sezione scelta: essa contiene tutte le ultime storie inviate, ordinate per data. La sezione “upcoming” della categoria superiore in più contiene una speciale mini-classifica delle storie “hot” (ovvero quelle a metà strada tra le storie “upcoming” e quelle “popular“) di tutte le sotto-sezioni.

Le prime ore di vita di una storia sono anche quelle che ne decidono la sorte: se non riceverà sufficiente attenzione fintanto che resta nella prima pagina delle “upcoming“, non avrà altre occasioni di diventare popolare.

Viceversa, con il raggiungimento di un numero minimo di digg, la storia si guadagna un posto nella sezione “hot“, che è l’anticamera della home page.

Non tutti i voti sono uguali

Ma attenzione: i “diggs” ricevuti non hanno tutti lo stesso valore. Così come in altri social sites, i voti dei membri appena iscritti hanno un valore inferiore; mentre c’è un massimo di peso trasmissibile dal proprio voto che neanche gli utenti più attivi possono superare.

Un utente arriva ad assegnare voti a peso pieno dopo un breve lasso di tempo dall’iscrizione, e comunque non prima di aver manifestato una certa attività sul sito.

A parità di anzianità di due utenti, viene assegnato un peso maggiore al voto di quello che ha inviato il maggior numero di storie promosse in front page (anche in rapporto al numero totale di storie inviate: queste informazioni sono visibili in ogni profilo), e a quelli che maggiormente hanno contribuito a promuovere in front page le storie degli altri. Ricevere voti nella fase iniziale da parte di alcuni utenti particolarmente influenti aiuta molto.

Non so ancora se questo calcolo tenga conto anche delle sezioni in cui l’utente votante ha promosso il maggior numero di storie, in relazione alla sezione di appartenenza della storia che sta votando (ergo, non è chiaro se ci siano “power account” con pesi differenti in base alle categorie o se la loro influenza sia calcolata a livello globale, ma personalmente propendo per la prima ipotesi).

Non conta solo il numero

Ma torniamo a parlare del funzionamento dell’algoritmo che decide se una nuova storia sarà promossa oppure no. Come detto, due fattori importanti sono la rapidità di acquisizione dei primi voti e l’importanza degli utenti da cui questi arrivano.

Un altro fattore influente consiste nel numero di commenti che una storia riceve: più essa stimola la partecipazione attiva della community, più facilmente verrà promossa. Anche i voti ricevuti dai commenti stessi hanno la loro importanza (benchè minima): una storia che presenta troppi commenti con un bilancio negativo di voti, sarà penalizzata. Ovviamente, l’influenza del commento di un utente che solitamente riceve parecchi “down diggs” sui suoi interventi di commento, è molto, molto limitata.

I voti negativi

Il menu del Burial presente in ogni storia

Altrimenti detti “buries“, consistono in dei flag che gli utenti possono assegnare ad una storia per segnalare il fatto che non l’hanno gradita: chi assegna un flag del genere è chiamato a specificarne anche il motivo: sezione sbagliata, storia duplicata, inaccurata, spam. Tutto lascia credere che ogni etichetta abbia un differente peso, mentre non sembrano esserci differenze di considerazione tra il “bury” espresso dall’ultimo arrivato e quello affibbiato da un utente anziano.

Lo stato corrente di una storia, il fatto che sia “upcoming“, “hot” oppure “popular” è anch’esso un parametro che determina il numero di “buries” necessari a rendere “buried” una storia: ad una nuova submission bastano molti meno “buries” per essere “buried” rispetto a quanti ne può sopportare una storia già “popular“.

Una volta “buried“, la storia scompare dalle categorie in cui era stata inserita ed è visualizzabile solo tramite permalink e come risultato delle ricerche non filtrate, oltre che nella sezione “dugg” del proprio profilo, qualora si sia tra gli autori dei “bury“.

La soglia del “popular” e la zona “hot

Tutti i fattori finora elencati concorrono ad avvicinare (o ad allontanare irrimediabilmente) una storia dal momento in cui essa diventa “popular“. Per oltrepassare questa soglia serve un numero minimo di voti, non determinabile a priori, che neppure la presenza nella sezione “hot” può garantire, sebbene tale passaggio sia obbligato per le storie da front page.

Ogni macro-sezione ha una sua zona “hot“, dove finiscono le storie ancora in “upcoming“, che ricevono un minimo di voti validi in un lasso di tempo prestabilito: se una storia riesce ad ottenere il primo posto tra le “hot” e a ricevere ancora un sufficiente numero di “diggs” entro un dato limite temporale, ecco che la storia viene resa “popular“, arrivando alla front page della sezione di appartenenza, e della macrosezione a cui la sezione fa riferimento.

Ogni sezione ha il suo proprio algoritmo (nonchè una sua specifica competitività interna tra le submission, ma questa è un’altra storia) che determina il livello di soglia da oltrepassare per rendere “popular” una determinata storia. La sezione più esigente in assoluto è Technology, con le relative sotto-categorie, dato che le storie inserite qui vanno a finire direttamente nella home page di digg.

Una volta in front page

Una volta arrivati sulla front page di una sezione di digg -normalmente passa qualche ora dalla submission- si è inseriti subito in prima posizione, per poi scendere via via: si resta nella prima pagina delle “newly popular” per un tempo circa pari al tempo trascorso dalla promozione a “popular” dell’ultima storia in classifica. In questo intervallo, se si ricevono ancora sufficienti digg si può aspirare ad arrivare nella “Top 10 della categoria contenitore, dove si resta per circa 48 ore, prima di finire definitivamente in archivio.

Le storie inserite in Technology e categorie figlie hanno la visibilità massima, dato che raggiungono direttamente la home page di digg; mentre le storie inserite nelle altre sezioni, invece, possono aspirare al massimo alle front pages e alla Top 10 della categoria di primo livello (Science, Entertainment, Videos, e tutte le altre), oppure possono limitarsi a diventare “popular” nella sotto-categoria di appartenenza, ma senza per questo raggiungere la Top 10 della categoria contenitore, che, lo ricordo, è una classifica globale di tutto il contenitore.

I submitter sono tutti uguali, così come l’ora della submission

Ognuno ha esattamente le stesse possibilità (algoritmiche) di inviare una storia che diventerà popular: le maggiori possibilità che ha un “power user” non derivano direttamente dal suo profilo, ma dal numero e dal tipo di amici che ha (ma questo è un argomento che approfondirò in un altro post 😉 ). Inoltre, l’algoritmo ha una funzione di normalizzazione per far sì che i voti nei periodi “morti” del giorno, della settimana e dell’anno contino più degli altri, in modo da non favorire le storie inviate in orari scelti ad hoc per raggiungere il punto più visibile nei momenti dei picchi di traffico, e viceversa per non penalizzare le altre.

Perciò, tutti hanno le stesse potenzialità in fase di submission, ma c’è un’eccezione a questa regola, che consiste negli utenti che hanno un numero molto elevato di “befriends“: dal momento che questa caratteristica può aumentare molto il numero di “diggs” ricevuti, alle storie inviate da questa categoria di utenti è richiesto un numero di “diggs” maggiore per oltrepassare la soglia del “popular“.

Finora, abbiamo preso in analisi il mondo ideale di digg, dove il peggio che possa succedere è che qualcuno invii una storia inappropriata. Ma, data la popolarità di cui gode digg, è pieno là fuori di gente che cerca di fregare il sistema aprendo tanti account con cui votare le proprie submission. Ecco allora che si è reso necessario per gli sviluppatori mettere a punto…

Gli algoritmi di riconoscimento dei pattern di spam

Innanzitutto è necessaria una definizione: lo spam su digg non consiste nell’invio di materiale ascrivibile allo spam di per sè, ma piuttosto è quella pratica per cui alcuni utenti tentano di promuovere artificialmente le proprie storie attraverso account multipli. Ha quindi poco a che fare con i “bury“.

Questo modello di spam presenta alcune caratteristiche tipiche (le descrivo tutte in un ipotetico profilo 100% spam, ma se ne possono riscontrare anche solo alcune di esse):

  • Un utente ha un account principale dal quale fa submission delle storie del suo sito,
  • tutte, o quasi tutte, le storie inviate da questo utente appartengono allo stesso dominio o allo stesso set di siti,
  • l’utente non “digga” altro che le sue storie,
  • le storie inviate da questo utente vengono poi votate da una serie di utenti che hanno in comune con lui e tra di loro le date di registrazione, molto vicine l’una all’altra, e il fatto che votino pressochè tutti assieme le stesse storie (e magari solo quelle),
  • le storie di questo utente ricevono una innaturale attenzione e un numero di diggs sopra la media subito dopo la submission,
  • generalmente non riescono a mantenere tale livello costante, per cui il numero di voti per intervallo di tempo si abbassa invece di incrementare come succede alle storie che, partendo con le stesse caratteristiche, arrivano naturalmente in front page.

Tutte queste caratteristiche -esasperate ed isolate in questa lista- concorrono a creare un profilo spammoso, che è visibile “ad occhio” oltre che facilmente riconoscibile per via algoritmica.

Lo screenshot in basso mostra alcuni dettagli di due storie (indovinate quale delle due è quella votata da account fasulli?) evidenziando la distribuzione temporale dei “diggs” e gli utenti che le hanno votate (riconoscete il pattern?), ma indagando in modo più approfondito nei profili del submitter sospetto, dei relativi diggers al seguito e dei relativi storici delle storie votate dagli stessi, non ci si può sbagliare.

Paragone tra due storie su digg

Oltre ai pattern, non è da escludere che digg tenga in qualche modo traccia dell’indirizzo ip, delle caratteristiche del client e delle sessioni utente per determinare con ancora maggior sicurezza una serie di account che fanno capo ad un singolo spammer (anche se in realtà, basta e avanza un algoritmo per stanare il 98% degli spammer).

Se si vuole davvero arrivare in front page su digg spammando, insomma, non basta aprire account a iosa e utilizzarli tutti per votare: bisogna spendere del tempo per costruire dozzine e dozzine di profili utente robusti, ognuno attivo ed indipendente l’uno dall’altro (ovvero, abbastanza lontani gli uni dagli altri nel grafo degli utenti di digg).

Perciò, bisogna che questi profili non promuovano tutti ogni singola storia inviata dallo spammer: piuttosto, ogni storia dev’essere promossa da un subset di utenti, diverso ogni volta. Allo stesso modo, è necessario evitare che i profili si assomiglino tra di loro in modo sospetto, e a determinare la somiglianza concorre tutto: date di registrazione, submissions, diggs, commenti, amici, sezioni di interesse, comportamenti… tutto!

Il modello Pay Per Digg e la conclusione del post

Costruire un set sufficientemente ampio di account robusti e al di sopra dei sospetti è un lavoro talmente impegnativo che c’è chi ha deciso di offrirlo in vendita: oggi infatti, si possono comprare i “diggs (no, non linkerò società che forniscono questo servizio). La quotazione che oggi va per la maggiore è di un dollaro per ogni digg ricevuto – da un profilo, a detta di chi vende il servizio, insospettabile. Si può finire in front page con meno di cento euro, è vero…. cento euro per ogni storia. Ma l’unica cosa garantita è che si riceveranno i digg pagati, nulla di più e nulla di meno.

In realtà, ci sono modi più sicuri, più divertenti e (guarda caso!) persino più efficaci di ottenere il medesimo risultato…. ma questa è una storia che vedremo sulla front page di questo blog un’altra volta 😉

UPDATE: consulta il secondo articolo di questa serie: contiene un’analisi della community di digg con tanto di consigli per rendere più efficaci le submission

Fonti per approfondire

Digg Algorithm: unofficial FAQ – un’altra analisi dell’algoritmo di Digg da SeoPedia (un po’ datata ormai)

Digg Algorithm elements confirmed – sintesi di alcuni degli aspetti certi dell’algo, confermati dagli sviluppatori (occhio alla data!)

A day of Diggs and a thin blue line – rappresentazioni grafiche dei dati che il sistema di digg gestisce ogni giorno

DuggTrends, Digg Labs e Digg Spy – Tre strumenti per gettare uno sguardo più approfondito a ciò che succede “dietro le quinte” di digg. Se non vi bastano (e siete sviluppatori) potete accedere ai dati in tempo reale tramite le API di digg

09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63-56-88-c0 – questo numero ha segnato la storia di digg (e non solo la sua), se non lo sapete già, vi lascio il piacere di scoprirne il motivo. Vi dico solo che è un’ottimo case study per capire qualcosa in più degli attuali algoritmi di funzionamento di digg. Il link è alla relativa SERP di Google, ci sono tanti documenti che potete partire un po’ da dove vi pare!

12 risposte a “Il funzionamento dell’algoritmo di digg”

  1. Pingback: diggita.it
  2. Grazie Maurizio, molto interessante l’articolo!
    Non se può essere uno spunto ma mi piacerebbe leggere un’analisi del genere per Stumbleupon… un network che uso molto più di Digg e con cui ho subito ottenuto risultati importanti, riuscendo però ad estrapolare solo poche “certezze”.
    Sembra molto più furbo ed orizzontale di Digg ; )

  3. Hello Pal,
    You did some great work with the Rater guide. I came to this post but unfortunately, I can’t understand Italian (and there would be many me like me). I have a suggestion for you:
    You can consider finding a low-cost Italian-English Translator. Try here:
    http://www.getafreelancer.com/
    http://www.rentacoder.com/
    http://www.guru.com/
    OR any other bidding sites.
    You can at least consider getting the most popular articles translated and maybe submitted to Sphinn. Many new SEOs would love that, I think.

    Kind Regards
    a Newbie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *