Tworzenie farm i unikanie duplicate content

Co to są farmy? W skrócie strony ze sporą ilością podstron, które służą głównie do zdobywania punktów w systemach wymiany linków oraz do linkowania swoich innych witryn. Farmami może być strona z tekstami piosenek, katalog stron, samoaktualizujący się wordpress opisany 2 posty niżej 😉 i wszystko co można łatwo i szybko postawić.

Żeby zacząć z farmami potrzebna jest przynajmniej podstawowa znajomość jednego z języków programowania, najlepiej php z mysql. Skąd brać kontent? Kupić na allegro, stworzyć samemu (wystarczy prosty parser innych stron), kupić u tego gościa: http://baza-danych.pl (ma sporo fajnych baz), skorzystać z rss, albo po prostu postawić katalogi i dodać je do spisu ;).

Największym problemem ostatnich miesięcy jest fakt, że farmy ze zduplikowaną treścią (czyli wszystkie ;)) trafiają do tzw. wyników uzupełniających i ogólnie gorzej się indexują. Jest na to parę fajnych sposobów – ja przedstawię 3 różne, ale najlepszy efekt uzyskasz stosując je wszystkie na raz 🙂

1. Mieszanie baz – można zrobić stronę z tekstami piosenek i między zwrotkami wrzucić losowy dowcip, albo przepis kulinarny 🙂

2. RSS’y – przy minimalnej znajomości php można sobie parsować dowolny kanał rss tak, aby wyświetlał bieżące newsy – dzięki temu tekst na każdej podstronie zmienia się co jakiś czas i google reindexuje je z nadzieją na nowy kontent :). Jak parsować rss? Osoby mające php5 mogą skorzystać z dobrodziejstw SimpleXML, a wszyscy inni są zdani na moje minimalne umiejętności programistyczne korzystając z poniższego kodu (od razu zaznaczam, że nie jestem programistą i moje skrypty nie są ani optymalne ani bezpieczne i w ogóle cud, że działają 😀 ):

Function Parsuj($url) {

$dane=file_get_contents($url);

preg_match_all(„/(.*?)</item>/is”, $dane, $wpisy);

FOR($i=0; $i

preg_match_all(„/</title>/is”, $wpisy[1][$i], $tytul);
preg_match_all(„/ (.*?)</link>/is”, $wpisy[1][$i], $link);
preg_match_all(„/(.*?)</description>/is”, $wpisy[1][$i], $opis);
$opis=str_replace(„ $opis=str_replace(„]]>”, „”, $opis);
$tytul=str_replace(„ $tytul=str_replace(„]]>”, „”, $tytul);
$link=$link[1][0];
echo ’’.$tytul.’
’.$opis.’
’.$link;
}

}

Potem wystarczy w kodzie użyć np. Parsuj(„http://www.ithink.pl/kategoria-22.rss”); i mamy pięknie pokazane newsy w sam raz na stronę z przepisami kulinarnymi ;).

3. Wstawianie losowego kontentu – na swój katalog stron możesz wstawić np. 5 losowych dowcipów, innych za każdym odświeżeniem strony. Plik z dowcipami jest TU, a kod do użycia poniżej :):

$dane=file_get_contents(„dowcipy.txt”);
$dane=explode(„+++++”, $dane);
$ile=5;

FOR($i=0; $i<$ile; $i++) {

echo $dane[rand(0,count($dane))];

}

Wyświetli on 5 losowych dowcipów pobranych z pliku tekstowego.
Tak jak wspomniałem wyżej – najlepiej stosować wszystkie 3 metody razem i efekty będą naprawdę bardzo fajne (przynajmniej dla mnie to działa :)).

Wszystko fajnie, ale jak te farmy zaindeksować? 🙂
Od razu mówię, że patent nie jest mój (jak większość prezentowanych na tym blogu rzeczy ;)), przeczytałem o tym na jednym z zachodnich blogów. Cała idea polega na tym, żeby nie skupiać się na linkowaniu farmy, tylko kilku mniejszych stron, które ją zaindeksują. Już tłumaczę jak to dokładnie działa – pozostańmy przy przykładzie strony z tekstami piosenek.

1. Tworzymy tabelę w bazie mysql i wrzucamy do jednej z kolumny adresy wszystkich podstron, które chcemy zaindeksować (jeśli potrafisz napisać skrypt do obsługi bazy tekstów, to potrafisz też zrobić listę url’i :). W drugiej kolumnie tej samej tabeli, którą nazwiemy np. „gotowe” ustawiamy domyślnie wszystkim adresom „0”.

2. Piszemy prostego spidera, który będzie w kółko sprawdzał kolejne adresy czy są już w indeksie – jeśli są to zmienia im status na „1”. Powinien on działać niezależnie od reszty skryptu. Może na dniach udostępnie prosty kod, który będzie to robił, ale myślę, że nie powinno Ci sprawić problemu napisanie tego :).

3. Tworzymy 5-10 małych stron – każda z nich składa się z menu na ok 50-150 pozycji (najlepiej losowo) i jakiegoś tekstu. Mogą to być dane z innych farm, rssy itp. Nie jest to aż tak istotne. Cały myk w budowie tych stron jest taki, że ich zawartość ciągle się zmienia tzn. pobierają one losową ilość adresów do zaindexowania z bazy i dla każdego z nich „tworzą” u siebie podstronę z jakimś tekstem i linkiem do adresu pobranego z mysql. Musi to być stała zawartość do czasu aż podstrony linkowanej farmy nie wylądują w indeksie, więc można ustawić aby pobierał np. 100 niezaindexowanych podstron posortowanych wg. id. Kiedy dana podstrona naszej głównej farmy się zaindexuje i chodzący niezależnie spider odnotuje to w bazie to nasze małe strony powinny wyrzucić podstronę z linkiem do niej z menu i wybrać do niego kolejną, a na wyrzuconej podstronie dać przekierowanie 301 do linkowanego z niej adresu :). Troche to zamieszane, ale mam nadzieję, że zrozumiesz :).

4. Linkujemy jak tylko się da zrobione przez nas małe strony, a olewamy bezpośrednie linkowanie farmy. Dzięki temu mamy pewność, że zaindexuje nam się każdy jeden dokument, który tylko sobie ustawimy i powinno to się stać w dość szybkim tempie 🙂

Dlaczego powinno się tak robić? Przede wszystkim dlatego, że google szybciej zaindeksuje mniejsze strony i dzięki temu pójdzie po linkach od razu głęboko do naszej farmy :).

9 komentarzy do “Tworzenie farm i unikanie duplicate content”

  1. Skrypt do parsowania niedziała.Z petlą cos jest nietak i preg_matchami.
    Pozwoliłem sobie napisać jednak w celach sprawdzenia samego siebie skryptu do parsowania RSSów.

    „,$dane);
    $ilenewsow=count($item)-1;
    for($i=1;$i(.+?)/’, $item[$i], $title);
    $title=$title[1];
    preg_match(’/(.+?)/’, $item[$i], $description);
    $description=$description[1];
    $content=$content.’ ’.$title.’ ’.$description;

    };
    $content=preg_replace(„[(.+?)]is”,”\1″, $content);
    echo $content;
    };

    Parsuj(’http://www.rmf.fm/rss/rss.xml’);
    ?>
    Może komuś się przyda
    Dodatkowo skrypt usuwa linki w celu wzmocnienia naszych.

    Odpowiedz
  2. Oj.U was automatycznie kasuje znaczniki w tym odpowiedzialne za pobieranie tego.
    URL to pliku tesowego zawierającego skrypt
    zen.e6.com.pl/parserrss.txt

    Odpowiedz
  3. Ciekawym rozwiązaniem byłoby zrobić to parsowanie losowo. Tzn dodać np 5 kanałów RSS i niech będzie losowane ktory ma zostac wyświetlony. Da sie zrobić coś takiego?

    Odpowiedz
  4. Spiderek by się przydał.
    Generatory kontentu z rss’ów są w sieci dostępne ale nie widziałem nigdzie nic coby tak genialnie generowało „zaplecze” (te 5-10 małych stron) dla farm 😀

    Najlepiej by było gdybyś udostępnił skrypcik generatora linków do zaindeksowania + spider 😉

    Odpowiedz
  5. Witam świetny artykuł jeszcze lepszy pomysł 😉 Polak potrafi 😉 Zen Vantalye czy możesz podzieliś się skryptem który będzie losowo generował RSS – czyli jak dostosować ten kod zen.e6.com.pl/parserrss.txt ? Dzieki i pozdrawiam

    Odpowiedz

Dodaj komentarz