• User Attivo

    Caso Studio 1 - Studente Tiago - Tutor Petro

    Inizio io! 🙂
    Questo è il mio blog per il globalwarming awareness2007 contest. Non ho usato cms, l'ho creato io con due righe di php e un db, riscrivendo gli url dinamici. Inizialmente, ho deciso di farlo così, semplice, con articoli solo testuali e senza colonne laterali piene di links. Ma se mi dite che è meglio linkare tutte le pagine tra di loro, lo faccio subito. Come contenuti è ancora un pò scarso.. cerco di aggiungere una paginetta ogni due-tre giorni, giusto per far vedere a GG che lo aggiorno. Gli argomenti sono relativi al contest, al posizionamento e qualche script o mini-tutorial. Ho già creato una sitemap (per quanto possa essere utile) e la reinvio ogni volta che aggiungo una pagina.
    In questi giorni altaleno intorno alla 240ª posizione in Google, ma su Msn e Yahoo è il buio totale. Adesso ho solo 4 pagine indicizzate in Google, ma in tutto sono 9. Ho notato che quando salgo di qualche posizione in Google, puntualmente ho una o due pagine indicizzate in più rispetto a prima.
    Attendo istruzioni. 😉


  • User Attivo

    @Tiago said:

    Inizio io! 🙂
    Questo è il mio blog per il globalwarming awareness2007 contest. Non ho usato cms, l'ho creato io con due righe di php e un db, riscrivendo gli url dinamici. Inizialmente, ho deciso di farlo così, semplice, con articoli solo testuali e senza colonne laterali piene di links. Ma se mi dite che è meglio linkare tutte le pagine tra di loro, lo faccio subito. Come contenuti è ancora un pò scarso.. cerco di aggiungere una paginetta ogni due-tre giorni, giusto per far vedere a GG che lo aggiorno. Gli argomenti sono relativi al contest, al posizionamento e qualche script o mini-tutorial. Ho già creato una sitemap (per quanto possa essere utile) e la reinvio ogni volta che aggiungo una pagina.
    In questi giorni altaleno intorno alla 240ª posizione in Google, ma su Msn e Yahoo è il buio totale. Adesso ho solo 4 pagine indicizzate in Google, ma in tutto sono 9. Ho notato che quando salgo di qualche posizione in Google, puntualmente ho una o due pagine indicizzate in più rispetto a prima.
    Attendo istruzioni. 😉

    Se nessuno si fa avanti prima, io comincerei con i suggerimenti 🙂

    La prima cosa che salta all'occhio sulla home page è la riga appena sotto l'intestazione h1:

    <h1>globalwarming awareness2007</h1>
    by Tiago, member of SEO Italia Team and GT Team
    

    Tieni conto che quelle sono le primissime frasi che lo spider legge nella pagina. Sono perciò importantissime: cercherei pertanto di tematizzarle meglio, come fosse una descrizione ottimizzata della pagina, usando parole e concetti legati alla keyphrase.
    La parola SEO è sicuramente una key correlata al contest; anche se non vuoi rinunciare al senso attuale della frase, secondo me potresti riscriverla in modo da renderla più attinente al "concetto" di globalwarming awareness2007 (concetto nel senso di argomento della pagina così com'è percepito dall'algo del motore).

    Per fare un esempio, una miglior formulazione potrebbe essere:

    <h1>globalwarming awareness2007</h1>
    For the SEO World Championship Search Engines Contest, this web site is made by Tiago, member of SEO Italia Team and GT Team
    

    E' soltanto un esempio, tu potresti ricostruirla in modo diverso, ma nota come ho messo all'inizio concetti legati al SEO e al SEO World Championship, e solo in seguito termini che sono meno rilevanti per l'argomento. Ed è anche più lunga (meglio non farla troppo corta, dato che non siamo legati ai limiti che avrebbe una tagline che deve riassumere essenza e slogan di un'azienda)

    Preparerei poi una frase simile, non necessariamente identica (anzi, meglio variare un poco) per il meta Description.

    ====================

    Proseguendo con l'analisi del codice, si nota:

    <div id="globalwarming-awareness2007" class="globalwarming-awareness2007">
    

    Ti dico subito che ricordo dei test, che concludevano con la prova che assegnare un ID = keyword ad un tag html è totalmente ininfluente ai fini del ranking.

    Questo dettaglio fa parte di una caratteristica comune a tutto il sito, che è la forte ottimizzazione della pagina per una singola keyphrase. Ripeto, SINGOLA keyphrase. L'hai utilizzata anche per il nome del css, di alcune classi, di testi alternativi alle immagini.

    Potrei sbagliarmi, ma mi sembra troppo. Attenzione, perchè potresti beccare un flag per over-optimization, dato che ti avvicini pericolosamente al keyword stuffing.
    Li ho visti anche io gli altri siti in top ten, fanno anche di peggio, ma la partita è aperta per altri due mesi e mezzo... un lasso di tempo in cui tutto può succedere!

    Per cui, comincerei a togliere la keyword dagli id e dalle classi dei tag html, e soprattutto cercherei di ottimizzare leggermente la pagina anche per altri concetti correlati, con un paio di <strong> anche su altre parole - non a caso, ovviamente. Anche attraverso qualche backlink con anchor text differenziato.

    ====================

    Parliamo di link esterni: ce ne sono due nella parte alta della tua pagina (oltre al bollino intendo). Vanno più che bene, però che ne dici di tematizzarli ancora di più con una-due righe di descrizione, nello stesso paragrafo che contiene il link?
    Dal link report vedo anche quello di phpmyvisites in fondo, che è pure invisibile dato che l'"anchor" è uno script: è il caso di togliere il link?

    ====================

    Va bene, adesso che abbiamo visto la home page, allontaniamoci un attimo e guardiamo il sito nel suo complesso.

    Dunque, la struttura assomiglia quella del blog. Hai un tot di post, e tutto il contenuto dei post in home page.

    Il problema più grande, è che i post sono corti. Se escludiamo intestazioni, link e codice, il contenuto testuale (ovvero le frasi di senso compiuto e quelle più lunghe di 4-5 parole) supera a stento i 3000 caratteri. Decisamente pochi; ma soprattutto sono spezzettati (duplicati) in pagine che in realtà contengono poche centinaia di caratteri.

    La situazione ideale, invece, è quella dove OGNI POST ha una lunghezza tra i 1000 e i 4000 caratteri (all'incirca, eh, non prenderli come limiti inderogabili: puoi arrivare anche al doppio se vuoi).
    Ogni post poi dovresti dividerlo in due parti: una prima parte, composta da non più di due-cinque paragrafetti, che introduca e riassuma il post, e che contenga (ma non sempre) la keyphrase di interesse; e una seconda che costituisca il corpo vero e proprio del post.

    Nella home page terresti solo le introduzioni, con il classico link per leggere il post intero. Questo ti porta due vantaggi:

    1. ogni pagina di post presenta contenuto UNICO e lungo, e dalla home page puoi personalizzare l'anchor text del link "continua a leggere" descrivendo già lì i contenuti del post, tematizzandolo quindi attraverso il backlink;

    2. in home page avresti parecchi contenuti, ma sarebbero tutti costituiti dalle prime frasi di ogni post, che sarebbero tematizzate e (abbastanza) rilevanti in relazione alla keyphrase (anche espansa).

    Questa soluzione esprime il massimo potenziale quando la home page non è l'unica a ricevere inbound link dall'esterno, e quando non mandi i post più vecchi "in seconda pagina". Nel caso ti trovassi ad avere 30+ post, potresti mostrare l'introduzione dei primi 10-15, e limitarti al link per quelli più vecchi.

    ====================

    Qualche osservazione sugli schemi di linking interno:

    Perchè hai invertito l'ordine dei link alle varie pagine in alto nella home? E' un ordine opposto a quello con il quale si susseguono i post: quali sono i motivi di questa scelta?

    Quando serve, non disdegnare un link da una pagina interna ad un'altra pagina interna, se il tema è affine e se il post contiene già qualche frase che si presta a fare da anchor text (non necessariamente la keyphrase).

    Quando avrai più post, inoltre, a meno che tu non voglia essere monotematico (cosa che comunque male non farebbe) e parlare solo del "globalwarming", potresti trovare utile suddividere i link alle tue pagine raggruppandoli per tema.
    Potresti quindi usare i link al singolo tema (categoria) come link di navigazione del sito, a mò di menu.

    Altre considerazioni si potranno fare quando il sito avrà più pagine e/o una struttura più complessa. Buona intanto l'intuizione di non esagerare con la keyphrase anche nei link alle pagine.

    ====================

    L'ultimo appunto te lo faccio su un fattore off-site: i backlink.
    Ti consiglio di evitare per il momento di acquisire ulteriori backlink da pagine di siti in lingua italiana. Dovresti cominciare a racimolarne sul web anglofono.

    Puoi partire dalle solite directory, oppure ancora meglio scrivere qualcosa (tipo sul riscaldamento globale) per cinque-sei siti di article marketing, di quelli forti e autorevoli. Anche lì, non stare a cercare PER FORZA l'anchor text = keyphrase. Ovvio che se puoi è meglio, ma per non far insospettire gli editori, potresti ad esempio scrivere:

    "il riscaldamento globale è un problema talmente tanto sentito che è diventato pure l'argomento di un seo contest, dove si concorre con la frase glob.aw2007 - visita [url=#]questo sito per approfondire

    Ovviamente è solo un'idea, ma è per dire che è meglio un link in inglese con anchor text non ottimizzato affogato in un testo anche vagamente a tema, che un link dall'italia su un sito off-topic con anchor ottimizzato ma senza testo attorno.

    ====================

    Post scriptum e appunti sparsi:

    • Quando copi sorgenti sulle pagine html, racchiudili nel tag <code>.

    • Stai attento alle virgolette: a volte quando le usi come valore di un attributo ce ne sono di doppie, dovresti farne l'escape

    • non fa certo la differenza, ma sai che tutti usano mettere il tag Title con la prima lettera maiuscola? Molti in USA capitalizzano anche tutte le altre parole. Perchè allontanarsi dallo standard? 😉

    • [url=http://www.awareness2007.netsons.org/foo.php]Questo dovresti controllarlo e inviare un header HTTP 404 in questi casi, non 200

    ====================

    Conclusioni: Tiago, finora ti ho detto solo le cose che non vanno... in realtà le pagine di per sè sono buone: leggere, pulite, con tutte le cose al loro posto e ben navigabili/spiderizzabili. Il codice è anche quasi valido, non fosse per un paio di dimenticanze e per la storia delle virgolette senza escape.

    Il consiglio generale è quello di lavorare sui contenuti, sui pattern di link interni (quando ce ne sarà bisogno) e molto sui backlink. Ottimizzazione on-page, più di così non ha senso farne.

    ====================

    L'ultimissimo appunto, invece, è personale: purtroppo tutta l'analisi e i consigli che ti ho dato si basano sulla mia esperienza, che come per molti altri SEO è, per ovvie ragioni, basata soprattutto su Google. Probabilmente ho omesso dettagli importanti relativi all'ottimizzazione specifica per Yahoo e MSN, che comunque "ragionano" in termini a volte differenti
    (per esempio recentissimamente molti [url=http://www.webmasterworld.com/msn_microsoft_search/3249579.htm]hanno notato come su MSN ai primi posti per parole competitive ci siano pagine con una quantità di contenuto decisamente povera).

    La situazione ideale per questo contest che tiene conto dei 3 motori, è proprio tener conto di tutti e tre i motori: sarebbe opportuno approntare tre versioni diverse dello stesso sito, ognuna ottimizzata per un motore, ed ognuna non indicizzabile (robots.txt) dai motori per i quali non è ottimizzata. Questa è una vera marcia in più nel contest, per chi sa realizzare ottimizzazioni mirate in funzione dello specifico motore di ricerca.

    ====================

    Bene, ora che ho finito di scrivere tutte queste cose in italiano sul forum, mi sovviene che invece dovrei scriverle in inglese sul blog :arrabbiato:

    Ma adesso è tardi, se ne parla nei prossimi giorni.... Tiago, se decidi di modificare le tue pagine, dovresti perfavore tenere una copia online del sito così com'è adesso, con un Disallow per gli spider, e indicarmene l'url, dato che fungerà da riferimento per quello che sarà il post sul blog.

    ====================

    Ho finito (pant!) Se qualcuno vuole aggiungere o correggere qualcosa, o esprimere dubbi, si faccia pure avanti senza tema 🙂


  • User Attivo

    "quasi" dimenticavo: aggiungi un feed RSS 🙂


  • User Attivo

    @petro said:

    "quasi" dimenticavo: aggiungi un feed RSS 🙂
    Mi spieghi come si fà? :fumato:
    RSS e Flash, sono le mie due più grandi lacune.. 😞


  • User Attivo

    @Tiago said:

    Mi spieghi come si fà? :fumato:
    RSS e Flash, sono le mie due più grandi lacune.. 😞

    In quanto a Flash sto a zero anch'io :fumato:

    Sugli RSS invece scrissi una [url=http://forum.html.it/forum/showthread.php?threadid=914026]pillola sul forum di html.it, lì dovresti trovare tutto quello che ti serve.
    Quando hai creato l'RSS, non dimenticarti il [url=http://www.google.it/search?hl=it&q=rss+autodiscovery]link di autodiscovery!

    Riguardo al resto invece, il come ed il perché sono sufficientemente chiari (e condivisibili)?


  • User Attivo

    Allora..
    -Modificato l'header, mettendo più keyword legate al contest all'inizio.
    -Tolte le keyword dai div e dalle class e cambiato il nome del file css.
    -Messo qualche <strong> anche su altre keyword.
    -Tolto l'intero script di phpmyvisites, link compreso.
    -Creato un feed RSS seguendo la tua guida (complimenti, fantastica :2:
    Non ho ancora messo un link al feed perchè c'è un problema con la data.. non riesco a capire perchè.. ho messo il campo della tabella come TIMESTAMP, ma non funge.. ecco il file:
    [php]
    <?
    header("Content-type: application/xml");
    //Con questa riga mandiamo al browser un header compatibile col formato XML

    //Il blocco seguente fa la connessione al database...
    $dbhost = "";
    $dbname = "
    ";
    $dbuser = "";
    $dbpass = "
    ";
    $query=mysql_connect($dbhost, $dbuser, $dbpass);
    if ($query==FALSE)
    die("Errore durante la connessione a MYSQL ".mysql_error());
    mysql_select_db($dbname ,$query);
    //E quest'altro seleziona le ultime 7 notizie
    $query2 = "SELECT * FROM a_articoli ORDER BY id DESC LIMIT 7";
    $risultato=mysql_query($query2,$query);

    //Ora iniziamo a occuparci del feed vero e proprio
    require_once("feedcreator.class.php");
    //includiamo la classe col nome che le abbiamo assegnato

    //e inizializziamo l'oggetto con parametri personalizzati (descrizione, titolo e link)
    $rss = new UniversalFeedCreator();
    $rss->useCached();
    $rss->title = "Globalwarming Awareness2007";
    $rss->description = "Feed about globalwarming awareness2007";
    $rss->link = "http://www.awareness2007.netsons.org"; //Questo non viene reso nel feed, sarà un bug
    $rss->feedURL = "http://www.awareness2007.netsons.org/feed/feed.php";

    //Questa funzione rimpiazza alcuni caratteri speciali con le relative entità XML
    //serve per evitare errori nell'output
    function xmlentities ( $string ) {
    $ar1 = array ( '&' , '"', ''');
    $ar2 = array ( '&', '"', "’") ;
    return str_replace ( $ar1 , $ar2, $string );
    }

    //Questo ciclo estrae le notizie dal DB e le inserisce come nuovo ITEM nel feed
    //I campi da cui estraggo le notizie si chiamano 'subject', 'content', 'cat', e 'pubdate'
    //ma nel vostro caso i nomi potrebbero essere differenti, e alcuni campi assenti
    //(come Author nel mio caso)
    while ($data=mysql_fetch_array($risultato)) {
    //Eseguo xhtmlentities() sui primi due campi, che potrebbero contenere entità non valide
    $data['titolo'] = xmlentities($data['titolo']);
    $data['testo'] = xmlentities($data['testo']);
    $data['testo'] = nl2br($data['testo']);

    //E ora comincio a inserire le informazioni di ogni item.
    $item = new FeedItem();
    //notate come a volte prendo i dati così come sono dal db, altre li costruisco al volo
    $item->title = $data['titolo'];
    $item->link = "http://www.awareness2007.netsons.org".$data['url'] ;
    $item->description = $data['testo'];
    $item->category = $data['cat'];
    //La mia PUBDATE è in formato UNIX TIMESTAMP, ma la classe la converte in formato leggibile
    $item->date = $data['date'];
    //Questa riga per me è invariabile
    $item->author = "Tiago";
    
    //Definiamo le opzioni dell'item: questo contiene tag HTML...
    $item->descriptionHtmlSyndicated = true;
    //avremmo impostato FALSE per togliere i tag HTML
    
    //...e contiene anche l'elemento <category>
    $item->categoryHtmlSyndicated = true;
    
    //decommentando la riga seguente, troncheremmo Description (anche con tag) dopo 500 caratteri
    //item->descriptionTruncSize = 500;
    
    $rss->addItem($item); //Questo lasciatelo, inserisce il nuovo item coi dati appena processati
    

    }

    //E infine l'output a video.
    echo $rss->createFeed("RSS2.0", "");
    //Ovviamente abbiamo anche la possibilità di salvare il file su disco, o di scegliere altri formati
    //Vi rimando ai commenti presenti nella classe per gli esempi del caso.
    ?>
    [/php]
    Ovviamente il campo nella tabella si chiama "date".. non riesco a capire perchè non funge..
    Grazie Petro! 🙂


  • User Attivo

    Ho messo anche i tag <code> per i codici, ho eliminato il problema delle virgolette e ho messo le iniziali del title maiuscole..
    Mi speghi anche come si fà ad inviare un header 404?? :fumato:
    Grazie!!;)


  • User Attivo

    Puoi fare così:

    header("HTTP/1.1 404 Not Found");
    exit();


  • User Attivo

    @Fra_T said:

    Puoi fare così:

    header("HTTP/1.1 404 Not Found");
    exit();
    Si.. ma in che pagina devo metterlo??


  • User Attivo

    Non so di preciso come è fatto il sito, in teoria verifichi se la pagina esiste (con una query al DB??), se non esiste usi quel codice. Teoricamente prima che sia inviato un output.


  • User Attivo

    @Fra_T said:

    Non so di preciso come è fatto il sito, in teoria verifichi se la pagina esiste (con una query al DB??), se non esiste usi quel codice. Teoricamente prima che sia inviato un output.
    Funziona, ma esce una pagina bianca.. per reindirizzare ad un altra è corretto fare un redirect prima dell'exit()??
    Grazie Fra_T 😉


  • User Attivo

    Sì, o anche fornire una pagina personalizzata e non usare l'exit... Tipo questa: http://globalwarming-awareness2007.bloster.altervista.org/index.php/fubvtrvevrebj


  • User Attivo

    Risolto così: http://www.awareness2007.netsons.org/aasjdfsad.php 😉

    Altra cosa.. per il w3c: http://validator.w3.org/check?uri=http%3A%2F%2Fwww.awareness2007.netsons.org%2F
    cosa devo fare per fare sparire questo avviso: "No Character Encoding Found! Falling back to UTF-8."
    Thanks 🙂


  • User Attivo

    @Tiago said:

    Altra cosa.. per il w3c: http://validator.w3.org/check?uri=http%3A%2F%2Fwww.awareness2007.netsons.org%2F
    cosa devo fare per fare sparire questo avviso: "No Character Encoding Found! Falling back to UTF-8."
    Thanks 🙂
    Risolto.. mancava un meta tag.. 🙂
    Ma ho ancora il problema della data nei feed..


  • User Attivo

    @Tiago said:

    Allora..

    -Creato un feed RSS seguendo la tua guida (complimenti, fantastica :2:
    Non ho ancora messo un link al feed perchè c'è un problema con la data.. non riesco a capire perchè.. ho messo il campo della tabella come TIMESTAMP, ma non funge.. ecco il file:

    Ovviamente il campo nella tabella si chiama "date".. non riesco a capire perchè non funge..
    Grazie Petro! 🙂

    Ti rispondo per ora solo a questa cosa dell'RSS, il sito lo riguarderò nei prossimi giorni 🙂

    Assumendo che tu salvi la data in formato Timestamp (non il tipo di campo del db, proprio il formato della data), prova a settare il campo "date" come INT(11), poi fai
    [php]
    $item->date = $data['date'] + 3600;
    [/php]

    Nello script, aggiungi 3600 secondi, quindi un'ora.
    A me aveva funzionato così.... a te cosa succede, ti reimposta tutte le date al 1/1/1970 (anno zero Unix Epoc)?


  • User Attivo

    Grazie Petro 🙂 Adesso è ok! 😉


  • User Attivo

    Ho un problema.. google mi ha messo metà delle pagine indicizzate tra i risultati omessi.. credo sia colpa del fatto che il contenuto di ogni pagina è anche in home page.. è per quello??

    EDIT: ho cambiato.. adesso lascio solo i link agli altri articoli in home page..