Come fare una SEO SEO crawlable?

Ho lavorato su come creare una SPA sottoponibile a scansione da google in base alle istruzioni di Google. Anche se ci sono alcune spiegazioni generali, non sono riuscito a trovare un tutorial passo-passo più completo con esempi reali. Dopo averlo terminato, vorrei condividere la mia soluzione in modo che anche altri possano farne uso e possibilmente migliorarla ulteriormente.
Sto utilizzando MVC con i controller Webapi e Phantomjs sul lato server e Durandal sul lato client con push-state triggersto; Uso Breezejs anche per l’interazione dei dati client-server, che consiglio vivamente, ma cercherò di fornire una spiegazione abbastanza generica che aiuterà anche le persone che utilizzano altre piattaforms.