madoctopus
Supreme Member
- Apr 4, 2010
- 1,388
- 3,709
Before you read this guide, go and read the following:
Guide - How to Build a Link Network of Support Sites
First off, let's see how we can build our network of sites and content that will provide links. These are the obvious ways:
Interlinking considerations
A basic interlinking script
The following is PHP code for basic interlinking taking only randomness into consideration. You may want to start from here and apply your own rules in order to get a more optimal interlinking scheme across your network. If you don't know PHP or a programming language, well... too bad.
Keep in mind this script should not be used in production environment as it is very basic and not optimal in how it interlinks pages. It should be used only to give you an idea and a starting point. A complete production ready script for interlinking should rely on a database where you have URLs associated to keywords and a bunch of other data that you can use as a foundation for your rules.
Also, there is one way to obtain decent PR flow and relevance without implementing a complex algorithm - you have all the sites in the script below about a specific topic. Then you run the script again with sites having a different topic (but still related / from same keyword hub). For example you run first for sites more related to "compact digital camera", then you run for sites more related to "DSLR".
The output has a format like:
The above output means that site_1 has 6 posts and 19 inbound links from other sites in the network. All links are picked randomly.
Link Network Diagram
The following is a script that generates an image with sites as nodes and links as edges. It is not a perfect implementation but should give you an idea on how the link graph in your network should look if you want to avoid patterns.
You ca change the number of sites by altering $numSites variable in the script source code.
Keep in mind that I built these scripts in a very "hackish" way. They may (and probably do) have bugs. As a matter of fact i can notice some bias in the image from the last script, so probably there is some logic bug in there. Even so, if you want to build something similar they should be a good starting point.
You may also look into GUESS: The Graph Exploration System which is a tool for graph visualization and has a Python-like scripting environment. For web-based visualization you can use Raphael + Dracula JavaScript libraries and code your own rendering engines for Dracula starting from their samples.
I hope this helps somebody.
Guide - How to Build a Link Network of Support Sites
First off, let's see how we can build our network of sites and content that will provide links. These are the obvious ways:
- Self hosted sites (satellites). Buy a bunch of domains from a cheap registrar that offers free WHOIS privacy (e.g. 1 & 1). Stay away from HostMonster and BlueHost as registrars, they have a "feature" (as they call it) that puts you in the open and makes all your domains visible by the public. Then, buy hosting on differen C-class IPs (e.g. http://www.seo-host.com). Search "SEO hosting" for more hosts like this.
- Free blog hosting (flogs = free blogs). Wordpress.com, blog.com, etc. Personally I never use blogger.com. Try to find as many as you can. You should end up with at least 50 flog platforms.
- WPMU blogs. You can do a search on google for patterns, or just find somebody who has Link Farm Evolution (LFE) and ask nicely for the list of blogs from LFE. I have a list of about 2500 WPMU blogs but haven't checked all yet. You should end up with at least several hundred that work.
- Article Directories (ArtDir). Make a list with all that allow you to place D0F0llow links in the article.
- Any other type of site that allows you to write content on it (e.g. sites that allow personal blogs for users).
- Satellites
- Pros: Total control over everything, from content to how it looks. You own it so you can't have it deleted. You can automate creation and maintenance.
- Cons: Costs money (domain+hosting)
- Recommended for link support sites that you may want to upgrade later into money sites. You should keep the content on these as high quality as possible.
- Flogs
- Pros: No money cost. You can post on them lower quality content as the chances of a human moderator checking them is quite small.
- Cons: Can get deleted/suspended (always keep backups of the content on them so if it gets deleted you can reuse the content). Time cost to register the accounts (unless you build an automated tool to do it).
- Recommended for link infrastructure and to link from them to the higher levels (satellites, money sites).
- WPMU
- Pros: No money cost. No time cost (because building a tool to automate registration and posting is very easy). Putting low quality content on them (computer generated), or even content not related to the parent site/host could get them suspended. Quite a few of them are moderated.
- Cons: Same as for satellites
- Recommended: same as for flogs
- ArtDir
- Pros: No money cost.
- Cons: Time cost (average automation difficulty). Quality has to be decent.
- Recommended to be used as indexing engines or for IP diversity.
Interlinking considerations
- Relevance - this together with PR flow has randomness on the other side of the coin. The more emphasis you put on relevance and how you direct PR flow through the network, the less random things are and the more complex the logic of the interlinker becomes. You do need to take relevance into consideration because you want to interlink related posts together not entirely random. So you will prefer to interlink 2 posts about Canon DSLRs instead about interlinking a post about a Canon DSLR with a post about iPhone.
- PR Flow - This is about how PR flows through the network. You basically want to direct the PR towards specific pages on your money sites. So if you have a "Canon DSLR" page on your digital camera money site, you want to suck PR from some of the the satellites and blogs, and those satellites and flogs you don't get direct links from, should link to those you do get a direct link from, to help indirectly.
- Randomness - this is where most people that build link wheels get it wrong. The easiest and most safe way to be sure you have a healthy amount of randomness with regards to the interlinking within the network is not do do the linking scheme in your head. Instead you should build a script that does it (the script, unlike you, is impartial and it doesn't unconsciously try to build patterns).
- IP Diversity - this is important. Not many people talk about IP diversity when it comes to SEO but I think it is a key factor in obtaining high domain trust.
A basic interlinking script
The following is PHP code for basic interlinking taking only randomness into consideration. You may want to start from here and apply your own rules in order to get a more optimal interlinking scheme across your network. If you don't know PHP or a programming language, well... too bad.
Keep in mind this script should not be used in production environment as it is very basic and not optimal in how it interlinks pages. It should be used only to give you an idea and a starting point. A complete production ready script for interlinking should rely on a database where you have URLs associated to keywords and a bunch of other data that you can use as a foundation for your rules.
Also, there is one way to obtain decent PR flow and relevance without implementing a complex algorithm - you have all the sites in the script below about a specific topic. Then you run the script again with sites having a different topic (but still related / from same keyword hub). For example you run first for sites more related to "compact digital camera", then you run for sites more related to "DSLR".
PHP:
<?php
<html>
<head>
<title>Flog Interlink Scheme Generator</title>
</head>
<body>
<form method="get">
Number of sites: <input type="text" name="num_sites" value="100" /><br />
Posts per site: <input type="text" name="num_post_min" value="5" /> - <input type="text" name="num_post_max" value="30" /><br />
Inbound links per site: <input type="text" name="num_links_min" value="1" /> - <input type="text" name="num_links_max" value="50" /><br />
<br />
<input type="submit" name="generate" value="Generate" />
</form>
<?php
if(isset($_GET['generate'])) {
$num_sites = $_GET['num_sites'];
$num_post_min = $_GET['num_post_min'];
$num_post_max = $_GET['num_post_max'];
$num_links_min = $_GET['num_links_min'];
$num_links_max = $_GET['num_links_max'];
$sites = array();
$all_posts = array();
$ap = 0;
for($s=0;$s<$num_sites;$s++) {
$sites[$s]['num_posts'] = mt_rand($num_post_min,$num_post_max);
$sites[$s]['num_links'] = mt_rand($num_links_min,$num_links_max);
for($p=0;$p<$sites[$s]['num_posts'];$p++) {
$sites[$s]['posts'][$p] = $p+1;
$all_posts[$ap]['site'] = $s;
$all_posts[$ap]['post'] = $p;
$ap++;
}
}
// choose incoming links
foreach($sites as $skey => $sval) {
$use_posts = $all_posts; // sites to get links from
// we choose random links
for($l=0;$l<$sval['num_links'];$l++) {
$randpost = mt_rand(0,count($use_posts)-1); // where link comes from
$sites[$skey]['links'][$l] = array();
$sites[$skey]['links'][$l]['site'] = $all_posts[$randpost]['site'];
$sites[$skey]['links'][$l]['post'] = $all_posts[$randpost]['post'];
unset($use_posts[$randpost]);
}
}
echo 'Total posts: '.count($all_posts)."<br />\n";
foreach($sites as $skey => $sval) {
echo "site_".($skey+1).": ".$sval['num_posts']." posts, ".$sval['num_links']." links - ";
foreach($sites[$skey]['links'] as $link) {
echo $link['site'].'.'.$link['post'].', ';
}
echo "<br />\n";
}
}//~if submitted
?>
</body>
</hrml>
The output has a format like:
Code:
site_1: 6 posts, 19 links - 48.9, 74.17, 32.7, 34.25, 31.6, 14.3, 70.3, 73.16, 73.25, 47.3, 40.6, 36.0, 35.15, 19.1, 67.0, 25.4, 14.6, 42.19, 6.22,
The above output means that site_1 has 6 posts and 19 inbound links from other sites in the network. All links are picked randomly.
Link Network Diagram
The following is a script that generates an image with sites as nodes and links as edges. It is not a perfect implementation but should give you an idea on how the link graph in your network should look if you want to avoid patterns.
PHP:
<?php
/*
* FIXME - bugs. possibly because of inconsistent matrix traversal
*/
$numSites = 100; // number the sites in the network. to work correctly must be a number that can be expressed as the product of two equal numbers (e.g. 100 = 10 (rows) * 10 (columns))
// don't edit below if you don't know what you are doing
header('Content-Type: image/png');
$numSitesCol = (int) sqrt($numSites);
$numSitesRow = $numSites / $numSitesCol;
$siteSize = 200;
$imgwidth = $siteSize * $numSitesCol + $siteSize;
$imgHeight = $siteSize * $numSitesRow + $siteSize;
$image = imagecreatetruecolor($imgwidth, $imgHeight);
$bgColor = 0x00f8f8f8;
imagefill($image, 0, 0, $bgColor);
// determine site positions
$sc = 0;
$sitepos = array();
for($i=1; $i<=$numSitesCol; $i++) {
for($j=1; $j<=$numSitesRow; $j++) {
$sc++;
$sitepos[$sc]['x'] = $j*$siteSize;
$sitepos[$sc]['y'] = $i*$siteSize;
$sitepos[$sc]['color'] = imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
}
}
// generate random links
for($i=1; $i<=$numSites; $i++) {
//if($i!=50) continue;
$numLinks = mt_rand(0, 20);
for($j=1; $j<=$numLinks; $j++) {
$linkFrom = mt_rand(1, 100);
imageline($image, $sitepos[$linkFrom]['x'], $sitepos[$linkFrom]['y'], $sitepos[$i]['x'], $sitepos[$i]['x'], $sitepos[$linkFrom]['color']);
}
//if($i>=1) break;
}
foreach($sitepos as $key => $pos) {
drawSite($image, $pos['x'], $pos['y'], $key, 0, $pos['color']);
}
imagepng($image, null, 9);
imagedestroy($image);
function drawSite($image, $x, $y, $label=false, $numPages=0, $color=0x00d0d0d0) {
imagefilledellipse($image, $x, $y, 32, 32, $color);
if($label) {
$font = 4;
$hpadding = 2;
$vpadding = 0;
$w = imagefontwidth($font) * strlen($label);
$h = imagefontheight($font);
imagefilledrectangle($image, $x-($w/2)-$hpadding, $y-($h/2)-$vpadding, $x+($w/2)+$hpadding, $y+($h/2)+$vpadding, $color);
imagestring($image, $font, $x-($w/2), $y-($h/2), $label, 0x00000000);
}
}
You ca change the number of sites by altering $numSites variable in the script source code.
Keep in mind that I built these scripts in a very "hackish" way. They may (and probably do) have bugs. As a matter of fact i can notice some bias in the image from the last script, so probably there is some logic bug in there. Even so, if you want to build something similar they should be a good starting point.
You may also look into GUESS: The Graph Exploration System which is a tool for graph visualization and has a Python-like scripting environment. For web-based visualization you can use Raphael + Dracula JavaScript libraries and code your own rendering engines for Dracula starting from their samples.
I hope this helps somebody.