Seohackers netlinking

Limiter le duplicate content dans les annuaires Freeglobes

Ecrit par BlackMelvyn le jeudi 6 novembre 2008 à 0:21 - Catégorie Scripts PHP

Le duplicate content est l’une des raisons principales qui a mené à la chute vertigineuse de nombreux annuaires dans l’index de notre ami Google.

Peu de visiteurs fréquentent les annuaires, et si certains pensent que la fin des annuaires est arrivée, nous sommes également plusieurs à penser le contraire… Seuls les annuaires de qualité, différents des autres, peuvent apporter un peu de trafic, mais généralement, les répertoires ne servent qu’à obtenir des backlinks fondamentaux au positionnement dans les SERPs.
C’est pour cette raison qu’il est très important de soigner ses annuaires si l’on ne veut pas finir dans les tréfonds de l’index des moteurs.

Parmi les nombreux scripts d’annuaires gratuit et open source, je me suis intéressé à Freeglobes. En effet, son code est propre, clair et ouvert, un moteur de template Smarty permet de personnaliser facilement le design et une multitude de thèmes et de plugins (basés sur le moteur de Dotclear) sont disponibles. Bref, une des stars des scripts d’annuaire.

Revenons à nos moutons (noirs). L’une des meilleures façons de limiter le duplicate content est de le détecter automatiquement. Tiger, l’admin du blog, avait déjà publié cet article sur comment éviter le duplicate content dans les annuaires, et pour compléter cet excellent billet, je vous propose une adaptation de cette fonction en vue d’implémenter cette nouvelle fonctionnalité dans les scripts Freeglobes.

Pour cela il vous faut : un script Freeglobes et un éditeur de texte. Ensuite, suivez les instructions citées en commentaire dans le script.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
######  Fichier de langue
# Ajout de la ligne d'avertissement dans /language/french/main.php
#  Après la ligne 35, à adapter en fonction de "langue choisie"
/*  Added by BlackMelvyn  */
$lang['warn_dupe'] = 'La description de votre site est déjà utilisée un trop grand nombre de fois. Merci de la modifier';
 
######  Fichier des fonctions
# Ajout de la fonction dans /include/functions/basic.php
#  A la fin du fichier
/*
*  Checks if there are other descriptions like the one provided
*  @author Tiger (http://www.seoblackout.com)
*  @author adapted by BlackMelvyn (http://www.theblackmelvyn.com)
*  @param  string $description description provided by the visitor
*  @return bool TRUE if description exists FALSE if description is clean
*/
function checkDupe($description){
    $description = str_replace('"','',$description);
    $desc_cut=wordwrap(stripslashes($desc),100,"<br />",1);
    $cut = explode('<br />', $desc_cut);
    $cut = $cut[0] ;
 
    $url = 'http://www.google.fr/search?hl=fr&q="'. urlencode($cut).'"&filter=0';
    if (function_exists('curl_init')) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL,$url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
            $data=curl_exec ($ch);
            curl_close ($ch);
    } 
    else {
        $data= file_get_contents($url);
    }
    $page = $data ;
    $result = explode('environ ', $page);
    $result1 = $result[1] ;
    $result2 = explode('pour', $result1);
    $result3 = $result2[0] ;
    $result3 = trim(strip_tags(str_replace('&nbsp;', '', $result3)));
 
//  If more than 5 results found, stop the process
  if ($result3 > 5){
    return true;
  }
  else {
    return false;
  }
}
 
######  Implémentation de la fonction dans le process
#  Utilisation de la fonction dans /include/functions/basic.php
# Après la ligne 79, entre if et else
/*  Added by BlackMelvyn  */
elseif(checkDupe($description)){
  $message = $lang['warn_dupe'];
  $link_url = 'javascript:history.go(-1)';
  $link_name = $lang['return'];
}
?>

Vous voici maintenant équipé(e)s pour empêcher le duplicate dans vos annuaires Freeglobes !

Cette mod est actuellement active sur cet annuaire de sites sur la mode, fraîchement lancé, et visiblement, elle fonctionne très bien… 🙂

Le but premier de cette mod est de lancer une alerte en cas de duplicate content. A vous ensuite de choisir comment l’exploiter…
En effet, vous pouvez modifier ce script en fournissant une version « markovée » des descriptions qui ne passent pas le test par exemple. De là, vos webmasters sont contents car ils n’ont pas besoin de soumettre une nouvelle fois le formulaire, Google est content car il a des descriptions uniques et vous êtes content(e)s car vous gardez vos fidèles webmasters et restez à une place chaude et confortable de l’index Google. Tout le monde est gagnant !

J’ai plusieurs mods minimes pour les scripts Freeglobes, que je publierai dès que j’aurai un peu plus de temps. Restez à l’écoute 😉

Articles liés :

Commentaires (36)

Catégorie: Scripts PHP


36 Commentaires

Commentaire par pagetronic

jeudi, 6 novembre , 2008 à 6:24

excellent!

Commentaire par François

jeudi, 6 novembre , 2008 à 12:24

Tres sympa! qu’est ce que tu entends par Markové par contre ?

Commentaire par BlackMelvyn

jeudi, 6 novembre , 2008 à 14:09

@page: merci 😉
@françois: merci, markové veut dire, dans ce contexte, que le texte a subi une reformulation basée sur les chaines de Markov. Ca permet de rendre un texte unique (parfois illisible pour un oeil humain) et donc d’éviter le duplicate. C’est très utile dans le cas d’un annuaire 😉

Commentaire par Julien

jeudi, 6 novembre , 2008 à 16:28

Trop mortel, pinaise, tu es un puit de science !

Commentaire par François

jeudi, 6 novembre , 2008 à 16:34

Ok Merci pour la réponse. J’avais été voir l’article de Wikipédia mais j’avais pas fait le lien.

Commentaire par Aurélien

vendredi, 7 novembre , 2008 à 15:48

J’avais plusieurs fois pensé coder quelque chose de similaire pour mon annuaire. Tu viens de me faire gagner du temps.

A noter que cela est très facilement adaptable pour n’importe quel annuaire.

Merci.

Commentaire par Rudy

vendredi, 7 novembre , 2008 à 22:41

Trop fort le petit mouton noir 😀

Commentaire par BlackMelvyn

vendredi, 7 novembre , 2008 à 22:48

@Aurélien: content de t’avoir aidé 🙂
En effet, la manière dont il a été codé par Tiger le rend très facilement adaptable sur de nombreux scripts d’annuaires. Cet exemple avec Freeglobes fait gagner du temps aux utilisateurs.

@Rudy: merci, à noter que 80% du script vient de Tiger 😉

Commentaire par admin

dimanche, 9 novembre , 2008 à 17:23

Merci BlackMelvyn de l’avoir remis au goût du jour 😉

P.S : j’ai posté sur freeglobes pour annoncer le plugin.

Commentaire par BlackMelvyn

dimanche, 9 novembre , 2008 à 18:19

C’est un plaisir de poster sur ton blog 🙂

Commentaire par jean

mardi, 11 novembre , 2008 à 21:57

Bravo pour le script. J ai essaye de l integrer mais ca ne fonctionnement pas. Dans – Implémentation de la fonction dans le process – pouvez vous preciser ce que contient la ligne 79, car mon code semble etre decale. Afin de placer au bon endroit cette fonction. Merci d avance

Commentaire par BlackMelvyn

mercredi, 12 novembre , 2008 à 11:23

@jean: bonjour,
La mod a été faite dans la dernière release de l’annuaire.
Voici comment placer le code appelant la fonction

$count = $lm->getcount(new Criteria('url',$url."%",'LIKE'));
if ($count > 0)
{
  $message = $lang['warn_already'];
  $link_url =  'javascript:history.go(-1)';
  $link_name = $lang['return'];
}
###############################
##### Placer le code ici ######
###############################
else
{
  $description = str_replace('"','',$description);
  $state = 0;
  $secret = random_pass();
  $chemin = show_me_the_way($category);
  $name = stripslashes($name);
  $description = stripslashes($description);
etc....

Bien entendu, cela dépend également de votre version de Freeglobes (je ne sais pas quelles modifications ont été apportées par rapport aux versions précédentes)

Commentaire par Morgan

mercredi, 12 novembre , 2008 à 19:02

Good job mouton noir, tu es toujours aussi épatant!
Bientot un mod markov… 😉

Commentaire par BlackMelvyn

mercredi, 12 novembre , 2008 à 21:49

Merci Morgan, mais je n’ai fait que l’implémenter pour les Freeglobes, le script d’origine est de Tiger 😉
Le markov, on verra peut-être plus tard…

Commentaire par geek

jeudi, 13 novembre , 2008 à 15:04

Merci pour le script!

J’ai cependant une erreur ici à cause du delimiteur:

$cut = explode('', $desc_cut);

Je suis le seul?

Commentaire par admin

jeudi, 13 novembre , 2008 à 15:50

Ya pas un truc qui a sauté BlackMelvyn dans le script, parceque là on explode rien comme le fait remarquer geek ?

Commentaire par BlackMelvyn

jeudi, 13 novembre , 2008 à 16:34

Oui, y’a bien un truc qui manque… c’est à cause de la mise en forme du code que je foire à chaque fois 😆
il faut mettre <br /> entre les guillements de ces 2 lignes
$desc_cut = wordwrap(stripslashes($desc),100, »<br /> »,1);
$cut = explode(‘<br />’, $desc_cut);

Sorry 😉
Tiger, il faudra que tu m’expliques comment fonctionne la mise en forme du code, c’est dramatique pour moi 😆

Commentaire par admin

jeudi, 13 novembre , 2008 à 16:52

En fait faut saisir le code entre les balises <pre lang="php"><?php echo "ici le code php";
?></pre> et ne pas utiliser l’éditeur visuel.

Pour afficher le numéro de ligne, il faut faire <pre lang="php" line="1"><?php echo "ici le
code php"; ?></pre>

J’ai corrigé le code du script dans l’article 😉

Geek ou toi BM vous pouvez me dire si le code fonctionne maintenant ?

Commentaire par Jean

jeudi, 13 novembre , 2008 à 18:02

Merci BlackMelvyn pour ta reponse, Je vais tester dans la journee

Commentaire par BlackMelvyn

jeudi, 13 novembre , 2008 à 18:07

Ben moi il fonctionne car j’ai la bonne source 😆
Pour les autres, si vous voulez la source qui fonctionne, mon adresse paypal est [autocensure, on fait pas ça pour de l’argent] 🙂
@Tiger: merci, il me manquait donc le <?php echo ‘le code’ après le <pre lang= »php »> 😉

Commentaire par Nicolas TAFFOREAU

jeudi, 13 novembre , 2008 à 19:03

Merci pour ce billet instructif (que Dievochka m’a envoyé mais que j’avais vu depuis le forum FreeGlobes).

Je viens donc de mettre en place cette modification. J’ai tout de même une question. Comment s’assurer qu’il est correctement installé, qu’il fonctionne bien et qui ne perturbe pas le fonctionnement du reste de l’annuaire (je m’attends à une réponse du genre: propose deux fois le même site) ?

Merci,

Nicolas.

Commentaire par admin

jeudi, 13 novembre , 2008 à 20:51

Hello Nicolas,

Pour tester, il suffit de prendre http://www.seoblackout.com et de le soumettre dans ton annuaire avec la description suivante :

Seo BlackOut est un site web dédié aux techniques de référencement sur Google. Vous y découvrirez des articles, des outils, des scripts et des astuces pour optimiser le référencement et le positionnement de vos sites web sur les principaux moteurs de recherches.

Etant donné que cette description a été utilisée lors de l’inscription dans de nombreux annuaires, tu devrais avoir le message d’alerte suivant lors de la tentative d’inscription dans ton annuaire :

La description de votre site est déjà utilisée un trop grand nombre de fois. Merci de la modifier

Commentaire par Nicolas TAFFOREAU

jeudi, 13 novembre , 2008 à 21:27

Réponse rapide en plus ! Je vais faire dès ce soir (tu serviras pour la béta du site car il n’est pas encore lancé).

Encore merci.

Commentaire par Arf

mardi, 2 décembre , 2008 à 13:35

Bonjour,

Quel est l’utilité réel?
Il suffit de modifier un mot par exemple.
Après il reste à déterminer comment google définie le duplicate content…
Car avec 1 mot de différence, l’utilité ne serait pas nul par pur hasard ?

Commentaire par admin

vendredi, 5 décembre , 2008 à 1:24

Hello Arf,

Où est parti ton imagination 😆 Je vois que tu te poses la question depuis que j’ai écris le premier article (j’avais lu un topic sur ton forum à l’époque).

Bon pour commencer, on va dire que les webmasters ne connaissent pas l’astuce, donc sont succeptible de faire naturellement l’effort de modifier leur description (pas uniquement mettre un point ou virer une virgule), on peut aussi ajouter un message explicite incitant d’une façon ou d’une autre à la description unique pour renforcer le truc.
Ensuite, on peut imaginer améliorer ce script en ajoutant, par exemple, un check sur le texte soumis pour la seconde fois après le premier refus, on garde le premier texte en mémoire et on compare le nombre de mots différents entre les 2 textes, si sur 10 mots, tu en as 6 mots identiques par exemple, tu refuses la description et tu demandes une nouvelle description…

On peut aussi comme l’a suggéré BlackMelvyn, markover la description mais cela implique de cloaker d’une façon ou d’une autre donc difficilement intégrable dans le script d’annuaire que tu proposes en libre téléchargement par exemple.

Concernant ta seconde interrogation (lu sur ton forum) sur le fait de requêter google à chaque fois que quelqu’un soumet un site dans un annuaire, d’une part si tu reçois une dizaine de demandes / jours, ça ne pose aucun souci, et si tu en reçois beaucoup tu peux toujours checker sur un autre moteur comme yahoo et même utiliser yahoo boss (requêtes illimités).

J’espère avoir répondu à tes questions 🙂

Commentaire par Arf

samedi, 6 décembre , 2008 à 20:53

Hello Tiger,

Mon imagination, elle travaille bcp, suffit de voir mon script ^^, mais je voulais faire réagir sur le script qui en l’état est facilement contournable.

Effectivement, nous sommes d’accord 🙂
Si le webmaster ne connait pas le script alors, il peut avoir tendance à modifier plus d’un mot…

Bien entendu si tu sais coder tu peux améliorer tout ça très facilement et comparer la description 1 / description 2 et bien d’autres choses pour filtrer les malins.

Après je ne pense pas que Google ai réélement declassé des sites pour la seule raison du duplicat content mais également pour une raison qualitative d’indexation dans des annuaires plus ou moins connu, donc ce ne serait pas uniquement automatique mais il y aurait aussi une part manuelle fatalement.
Bah oui, même de gros annuaires acceptent tout même de la grosse m….

Oui, on va dire qu’il vaut mieux intégrer quelques choses d’autoriser par Google pour éviter tout problèmes ^^

Après c’est vrai pourquoi utiliser Google quand on peut utiliser yahoo de façon illimiter pour des scripts spécifiques qui peuvent aussi bien fonctionner sur d’autres moteurs de recherche 😉

Merci pour les réponses toujours interessantes 😉

Commentaire par alex

mercredi, 17 décembre , 2008 à 1:32

Le top comme Mod ou plug in serait un outils qui permettent pour chaque site et chaque catégorie du site:
– de personnaliser la balise titre et description
– de mettre plus de texte et un texte différent dans les pages perso des sites VS les catégories
– de personnaliser les URLs à la mano

🙂

Commentaire par Olivier

samedi, 10 janvier , 2009 à 16:57

A propos des descriptions aléatoires, un truc qui devrait t’intéresser :
http://www.lautre-monde.fr/webtech/submission-optimizer/

Commentaire par CANYON

dimanche, 15 février , 2009 à 11:09

L’utilité de ce script n’est évidente que dans le cas de soumissions de webmasters fainéants et c’est vrai y en a un paquet…

Faudrait peut être voir à améliorer le script sur une sélection aléatoire de 4 ou cinq groupes de mots et soumission dans yahoo pour essayer de retrouver les occurrences… et si % de similitudes= triquage.

Et étudier la possibilité d’utiliser la méthode markov mais à l’envers. Je salue quand m^me le geste et je voulais proposer à arf (justement par fainéantise de ma part et) parce que ce monsieur code quand m^me beaucoup mieux que moi une amélioration de son arfooo. Ce qui serai beaucoup plus « SEO » quand m^me.

Commentaire par zig

mercredi, 6 mai , 2009 à 11:59

Salut,

Tout d’abord merci pour ce script qui est très utile surtout avec les sites de soumissions automatiques qui fleurissent un peu partout.

J’ai testé et ajouté ce script sur plusieurs de mes annuaires, cependant j’y ai apporté quelques modifications.
Tout d’abord, je passe par l’api google pour éviter que, suite à trop de requête, google blackliste l’ip du serveur ou se trouve l’annuaire.
Ensuite quand tu testes si la chaine est présente sur google, tu coupes la description à x caractères sans prendre en compte les mots et vous pouvez la couper en plein milieu d’un mot et dans ce cas google ne trouve pas les contenus identiques dans les résultats de recherche.

Voici donc le code que j’utilise pour mes annuaires, si ça peut servir à quelques personnes :

function removeaccents($string) 
	  {  
 	   $string= strtr($string,  
 	 "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", 
 	 "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");  
 
 	   return $string;  
 	  } ; 
function checkDupe($description){
 
    $description = str_replace('"','',$description);
    $desc_cut = substr($description,0,strrpos(substr($description,0,50),' '));
    $url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&hl=fr&filter=0&ie=UTF-8&q=%22"  . urlencode(removeaccents($desc_cut))."%22";
    $ch = curl_init();   
    curl_setopt($ch, CURLOPT_URL, $url);   
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
//Modifiez l'url de votre site
    curl_setopt($ch, CURLOPT_REFERER, "http://www.urldevotresite.com");
    $body = curl_exec($ch);   
    curl_close($ch);
   //Je remplace le json_decode par un explode pour tester si google trouve des résultats car mon serveur ne gère pas le décodage json   
    //$data = json_decode($body);
    $data=$body;
    $test=explode("\"results\":[]",$data);
 if (empty($test[1])){
    return true;
  }
  else {
    return false;
  }
}

Commentaire par admin

vendredi, 10 juillet , 2009 à 18:28

Désolé de répondre tardivement, mais j’avais zappé ton message Zig, je tiens à te remercier pour le partage de ton code, bien vu l’utilisation de l’api 😉

Commentaire par Julien

vendredi, 10 juillet , 2009 à 20:20

Cela marche nickel !!!

Un grand merci à Black Melvyn et au correctif de zig pour les serveurs OVH !
MErci beaucoup les mecs 😉

Commentaire par Aurel

mardi, 4 août , 2009 à 20:55

Et si on en faisait un plugin freeGlobes pour faire une vérif sur des sites déjà inscrits ? (un peu comme vérifier les liens renvoyant 404…)

perso je sais pas faire…
je me disais que le script était tellement utile qu’un plugin de vérif serait le top ! 🙂

en tout cas merci pour le contenu de cet article !

Commentaire par Smith

mardi, 24 novembre , 2009 à 15:14

Très intéressant ce poste.

Toutefois moi j’ai plusieurs autres questions à poser à propos des annuaires.

Pour vous quel est l’avantage de posséder un annuaire? Comment vous en servez vous? Pour linker vos autres sites web?
Dans ce cas le temps passé à mettre en place l’annuaire, le modérer,… n’est pas enorme par rapport à la petite influance que le lien va avoir sur ses autres sites?

Vous en servez vous comme MFA? Pour y mettre de la pub? Dans ce cas est ce vraiment rentable? Le taux de clic n’est pas faible sur ce genre de site?

Merci à ceux qui auront le courage de me repondre 🙂

Commentaire par two mag

jeudi, 14 janvier , 2010 à 12:53

Merci beaucoup, c’est super !!!!

TM

Commentaire par Stef

jeudi, 6 mai , 2010 à 9:22

Pour répondre à Smith:
« Le taux de clic n’est pas faible sur ce genre de site? »
Un annuaire est le genre de site où le taux de clics est certainement le plus élevé. Le plus bas étant les forums (expérience perso). Les blogs peuvent aussi avoir des taux de clics élevés mais ça dépend vraiment des thématiques et de la façon dont sont tournés les articles pour attirer les moteurs de recherche. Par exemple, tu fais un article sur les meilleurs mandataires de voiture en les citant mais sans mettre de lien. Tu es sûr que les noms vont apparaitre dans les liens adsense… Avec une bonne intégration, le taux de clics peut être très sympathique.

Comme filtre anti-duplicate content, il y a aussi la solution après validation de soumission: certains caractères sont remplacés par leur équivalent ascii par exemple. Un plugin wordpress avait été développé, et les articles passaient bien copyscape. Mais est-ce que ça trompe vraiment les moteurs?

Les commentaires sont fermés pour cet article.



SEO BLACKOUT

Site web dédié aux techniques de référencement et de positionnement de sites web sur Google.

Certaines parties du site sont en accès restreint, ces espaces sont réservés à la SEO Black Hat Team.


Don't Be Evil !