L’annonce de la sortie de xSpin, développé par Sylvain Deauré, a été faite fin Mai à la communauté de Code-SEO. Son développement a débuté bien avant et quelques personnes se sont ralliées à Sylvain (comme moi) pour améliorer l’outil et déceler les petites coquilles. Il était donc jusque là privé. Depuis quelques jours, il est ouvert au public.

Pourquoi polymorphe ? Parce qu’il va permettre de varier au maximum la forme de vos tirages. L’ère des masterspins construits avec des successions de synonymes fait partie du passé. Je vous invite d’ailleurs à lire les articles suivant pour vous en convaincre :

 

Pour tester xSpin, Sylvain a mis en place une offre de pré-lancement accessible ici : pre-access

Le tarif est de 25 euros HT / mois. Dès le lancement public du service, le tarif augmente. Une formule ’24h’ permettra aux utilisateurs très occasionnels d’accéder à l’outil à tarif réduit.

 

 

Laurent Bourrelly a eu la primeur de révéler l’existence de l’outil au monde du SEO dans son Podcast 8 : Présentation de xSpin. Je vais passer en revu quelques points qui mérites d’être détaillé pour cerner toutes les possibilités qui s’offrent à vous. C’est parti !

 

xSpin, c’est quoi ?

Pour ceux qui ne le connaissent pas encore, c’est un outil qui va vous permettre d’améliorer considérablement vos masterspins, dans le fond et la forme. Il n’est à la base pas fait pour spinner automatiquement vos textes (bien qu’il le peut avec Spinner Chief) mais plutôt pour varier la structure générale de vos tirages (texte de sortie d’un masterspin).

Afin de générer votre masterspin, il faut agencer des modules et les lier entre eux avec des tuyaux (script à la Yahoo Pipes, basé sur le framework YUI3). Vous avez le choix parmi des modules standards, des modules publics (un module public est en général construit à partir de plusieurs modules standards), des modules ‘extra’ (modules qui ne seront pas publics par défaut. En gros, des modules « pros » que vous pouvez acheter en option, utiliser, mais pas éditer) et vos modules ‘perso’.

C’est un outil en ligne uniquement (pour l’instant), avec donc pas mal de JavaScript. Cela nécessite notamment de faire un CTRL+R / CTRL+F5 lors des mises à jours sous peine d’avoir des bugs.

 

Type de message que vous pouvez avoir lors des mises à jours :

 

 

Anatomie d’un module

Les modules standards ou publics fonctionnent de la même façon mais peu de modules standards ont un paramètre en entrée (1) qui peut provenir d’un autre module. C’est souvent le cas des modules perso ou publics par contre. Cela dépends si vous utilisez des modules ayant un contenu variable ou statique (cf module « sourceString »). Si le point n’est pas présent, c’est que les données du modules doivent être paramétrées directement dans celui-ci. Notez que ce point peut également être placé en haut du module, sur la barre bleue. C’est le cas des modules ‘intermédiaires’ comme la « Permutation », « RemplacerPar » ou « Optionnel ».

Les points en (2) permettent d’y lier un module standard jaune pour appliquer un effet défini par celui-ci au texte passant par le module. Dans la version 1.2.6 en ligne actuellement, il y a 4 modules jaunes : « autoSpin », « Affixe », « Formatte » et « Traduire ».

Finalement, la sortie du module (3) transmet le résultat des effets produits par le module au module suivant.

 

Anatomie de la zone de travail

 

Le petit gif ci-dessus illustre la façon dont vous allez utiliser xSpin. La partie verte est votre bibliothèque de modules dont nous avons parlé précédemment. La partie supérieure jaune contient les boutons pour créer, charger, supprimer et sauvegarder vos modules. Les 2 derniers boutons sur la droite permettent soit de générer un tirage pour avoir un visuel de ce que le masterspin peut donner, soit de générer le masterspin complet. Ce masterspin s’affichera dans la partie rouge (en bas). Cette zone permet également de régler les paramètres de votre ‘wiring’ (titre, description, catégorie).

 

Quelques modules

Je vais passer sur quelques modules qui nécessitent une mise au clair et qui sont parmi les moins faciles à utiliser. Après, si vous avez d’autres questions, il y a toujours le forum d’xSpin et la petite mais grandissante communauté de xSpinneurs qui est là pour vous aider.

 

SourceString

seo spinningCe module est probablement celui que vous utiliserez le plus souvent. Il permet de manipuler vos textes.
Le champ ‘label’ est simplement le nom que vous allez lui donner. Il en sera de même avec le module Sortie.
Vous avez également un champ ‘texte’ dans lequel vous pouvez y coller soit un texte (qu’il soit spinné ou non), soit une liste de mots.
Admettons que vous voulez travailler votre longue traine. Google Keyword Tool va donner un liste de mots clé dans un fichier Excel. Collez vos mots clés ici et modifiez l’option nl2spin à ‘Yes’. Cette option permet de définir chaque ligne comme faisant partie du spin (new line to spin). L’exemple donnera le spin : {test|essai}.
Vous avez également une option ‘constante’. Définie à ‘no’, cette option va vous obliger à définir le contenu du texte lorsque vous utiliserez ce module dans un ensemble plus complexe (module perso ou public).

 

DataSource

Ce module permet d’afficher un nombre défini d’informations venant de bases de données. Ces bases de données font partie d’xSpin. Vous ne pouvez pas interroger des bases externes. Il existe pour l’instant 2 bases fonctionnelles : fakenames et ville. Vous avez cependant la possibilité d’appeler des bases préalablement importées dans xSpin à ce niveau (je reviens sur ce point plus bas).

Un certain nombre de paramètres sont nécessaire pour faire fonctionner le module. Il faut au minimum définir la clause where à 1, la source ainsi que le ou les champs qui vous intéressent.

Attention, il y a des bases SQL (préfixées avec SQL) et des bases SQLite. La syntaxe des Order By peut varier par exemple : rand() pour du SQL et random() pour du SQLite.

 

Voici l’architecture des 2 tables fonctionnelles afin de vous aider à utiliser le module :

Fakenames

CREATE TABLE IF NOT EXISTS `fakenames` (
`number` int(11) NOT NULL AUTO_INCREMENT,
`gender` varchar(6) NOT NULL,
`givenname` varchar(20) NOT NULL,
`middleinitial` varchar(1) NOT NULL,
`surname` varchar(23) NOT NULL,
`streetaddress` varchar(100) NOT NULL,
`city` varchar(100) NOT NULL,
`state` varchar(22) NOT NULL,
`zipcode` varchar(15) NOT NULL,
`country` varchar(2) NOT NULL,
`emailaddress` varchar(100) NOT NULL,
`password` varchar(25) NOT NULL,
`telephonenumber` tinytext NOT NULL,
`maidenname` varchar(20) NOT NULL,
`birthday` varchar(10) NOT NULL,
`cctype` varchar(10) NOT NULL,
`ccnumber` varchar(16) NOT NULL,
`CVV2` varchar(3) NOT NULL,
`ccexpires` varchar(10) NOT NULL,
`nationalid` varchar(15) NOT NULL,
`upstracking` varchar(24) NOT NULL,
`occupation` varchar(70) NOT NULL,
`company` varchar(70) NOT NULL,
`domain` varchar(70) NOT NULL,
`bloodtype` varchar(3) NOT NULL,
`pounds` varchar(5) NOT NULL,
`kilograms` varchar(5) NOT NULL,
`feetinches` varchar(6) NOT NULL,
`centimeters` varchar(3) NOT NULL,
`guid` varchar(36) NOT NULL,
`latitude` float(10,6) NOT NULL,
`longitude` float(10,6) NOT NULL,
PRIMARY KEY (`number`)
)

 

Ville

CREATE TABLE IF NOT EXISTS `Ville` (
`nom` varchar(255) NOT NULL DEFAULT  »,
`cp` varchar(255) NOT NULL DEFAULT  »,
`latitude` float(7,6) NOT NULL DEFAULT ’0.000000′,
`longitude` float(7,6) NOT NULL DEFAULT ’0.000000′,
`eloignement` varchar(255) NOT NULL DEFAULT  »,
`url` varchar(255) NOT NULL DEFAULT  »,
`numdep` varchar(3) NOT NULL,
`nomdep` varchar(255) NOT NULL,
`coderegion` varchar(4) NOT NULL,
`nomregion` varchar(100) NOT NULL,
KEY `cp` (`cp`),
KEY `nom` (`nom`),
KEY `numdep` (`numdep`),
KEY `coderegion` (`coderegion`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

Affixe

Le module ‘Affixe’ permet d’ajouter une chaîne avant et après un autre module. Il se configure comme le schéma ci-dessous. C’est un module jaune : son point d’entrée est donc sur la droite des autres modules.

Notez que l’affixe s’applique à chaque élément d’un sourceString en mode nl2spin.
L’exemple vous donnera donc : {<p>test</p>|<p>essai</p>}

 

Publipostage

Le module prend un texte « à trous » en entrée. Il peut s’agir d’une SourceString simple comme de n’importe quelle sortie de module, aussi complexe soit-elle.

Les tags à insérer sont toujours de la forme %nom_du_champ% (fonction de la base utilisée).

On peut indiquer une base SQL publique ou une base SQLite privée et indiquer les champs à extraire dans le select.

Attention à la clause « order by » : rand() pour du mysql, random() pour sqlite. Indiquer le nombre de lignes de la base à extraire.

Variantes par item permet « d’aplatir » plus ou moins le masterspin d’entrée, pour ne pas exploser la taille de la sortie.

Le module est un peu complexe mais vous trouverez plus de détails sur cette page (il faut être client).

 

Les autres modules sont relativement facile à prendre en main et ne nécessite pas vraiment d’explications. Par ailleurs, il existe une zone spécifique dans le forum destinée à la présentation de tous les modules.

 

Les bases de données personnelles

Vous avez accès à une database sqlite grâce à un lien situé en haut à droite d’xSpin. Vous pouvez y créer des tables et y importer des données (import sql et csv). Ces données sont isolées des autres, elles ne sont pas publiques. Le module « DataSource » permet donc de sélectionner soit une des tables SQL publiques, soit une base sqlite perso. Si on ajoute une table perso, il faut recharger xSpin pour la voir apparaitre.

 

 

Coloration syntaxique

La version 1.2.5 voit naître la coloration syntaxique des textes des sourceString. Un double clic ou un CTRL+clic dans la zone de texte d’un sourceString vous permet d’avoir une vision plus large de vos spins afin de le retravailler :

 

Aller plus loin avec l’API

Une fois connecté au forum, vous pouvez récupérer votre clé d’API via un lien.

La clé vous permet d’appeler en POST ou en GET le module de votre choix pour en récupérer un tirage ou le masterspin complet.

Voici un exemple d’appel avec paramètres :

http://xspin.it/API/get.php?user=LIJE&key=KEY&project=50%20Villes%20Fr&action=gettext&format=html

 

Le code PHP :

<!DOCTYPE html>
<html dir="ltr" lang="fr-FR">
<head profile="http://gmpg.org/xfn/11">
<meta charset="UTF-8" />
</head>
<body>
<?php
    $ch = curl_init();
    $timeout = 5;
    $url = "http://xspin.it/API/get.php?user=LIJE&key=KEY&project=50%20Villes%20Fr&action=gettext&format=html";
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    echo $data;
?>
</body>
</html>

 

Notez que pour les modules qui comportent des espaces, il faut les remplacer par %20 comme dans mon exemple. Le module est en fait : 50 Villes Fr. Vous serez peut être aussi amené à utiliser les fonctions PHP : utf8_decode ou htmlentities sur vos serveurs.

Les paramètres :

  • user: votre nom d’utilisateur xSpin (pseudo du forum)
  • key : votre clé API, cf message ci-dessus
  • project : le nom du projet concerné
  • action : gettext (renvoie un tirage) ou getxspin (renvoie le masterspin)
  • format : le format de sortie (en interne, je préconise d’utiliser du html pour la construction du spin). Il est optionnel. Par défaut : html. Fonctionnels : wiki ou MediaWiki pour la syntaxe type wikipédia.

 

Avez-vous déjà utilisé xSpin ? Qu’en pensez-vous ?
J’ai hâte d’entendre ce que vous avez à dire ;)

A bientôt sur le forum.