קידום אתרים למתקדמים: Google API לצרכי פיתוח SEO

בסדרת המאמרים הבאה, אני אסביר כיצד ניתן לנצל את ה-API של גוגל לטובת צרכי קידום אתרים באמצעות פיתוח אפליקציות מבוססות PHP אשר יעזרו לכם להרכיב מערכת SEO שלמה עם כל הכלים החשובים. הסדרה אמנם קצת טכנולוגית, אבל, למי שמוכן ורוצה לשדרג את יכולות הקידום שלו, כדאי קצת להשקיע ולהיכנס לעולם המרתק של פיתוח לצד קידום אתרים אשר יכול לשדרג את יכולות הפיתוח שלכם בכלל לטובת בניית אתרים וכדומה. אז לפני שנתחיל בטח כולכם יודעים שתהליכי הקידום לאתר נעשים מאד מסורבלים, במיוחד אם אתם אנשי SEO מתחילים, מאחר וצריך להתחשב באופן תמידי בכל כך הרבה פרמטרים, עבודה שחורה (בניית קישורים, תוכן, הנפקת דוחות ללקוח וכדומה), וכמובן איתור של כלים מתאימים ועשיית שימוש בהם באופן יומיומי. קחו את כל הפרמטרים שציינתי לעיל, שלבו אותם, ותקבלו סלט מכל כך הרבה ירקות.

חלקו הראשון של המדריך, מתחיל בהסברים קצרים מהו ה-API של גוגל וכיצד ניתן לנצל אותו לטובת צרכי SEO ולבסוף אני אדגים כיצד ניתן לפתח אפליקציית SEO המאפשרת לבדוק מספר פרמטרים עבור ביטוי\מספר ביטויים כגון: כמות אזכורים בגוגל לביטוי, מי עשרת הראשונים המתחרים בגוגל עבור הביטוי, כמה דפים מאונדקסים יש לכל אחד ומהו מדד ה-PR של כל אחד.

חלקו השני של המדריך, יעסוק בפיתוח אפליקצייה קצת יותר מורכבת המאפשרת בדיקת מיקומים לאתר עבור ביטוי\מספר ביטויים בשלושת מנועי החיפוש הגדולים בעולם: גוגל, יאהו ובינג.

המטרות:

  1. להדגים כיצד ניתן לנצל את ה-API של גוגל (או יאהו\בינג) לטובת צרכי קידום אתרים על ידי פיתוח אפליקציות שימושיות. מיותר לציין שאת האפליקציות ניתן לשדרג ללא גבול (בהתאם ליכולות) למגה מערכות המנפיקות דוחות, שומרות נתונים במסד נתונים, חלוקה למספר חשבונות וכדומה.
  2. להדגיש שקידום אתרים אינו רק כתיבת תכנים, בניית קישורים וכדומה, אלא מצריך אף עבודת hands-on טכנולוגית ובכך לשפר את היכולות האישיות פי כמה. איש SEO משתבח לא רק עם השנים אלא גם מבחינת אוריינטציה טכנולוגית והבנה טכנית איך אתרים בנויים, שרתים פועלים, ופרוטוקלים מתקשרים.

במאמר זה אני אציג כיצד ניתן לעשות שימוש ב-API של גוגל על מנת לפתח מערכת SEO בעלת הפרמטרים הבאים:

-בדיקת פופולאריות של מילות מפתח (מספר אזכורים שיש למילים בגוגל באופן מדוייק)

-בדיקת פופולאריות של הכותרות (title) המכילות את ביטוי המפתח

-לבדוק מי המתחרים שלי (עשרה הראשונים) עבור מספר ביטויים במקביל

-בדיקת דפים מאונדקסים בגוגל לכל מתחרה

-בונוס: בדיקת PR (לא קשור ל-API של גוגל, אלא נעשה בדרך קצת יותר מתוחכמת)

הקוד העיקרי של האפליקציה

<?php
	function startConnection($url){
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		if(curl_exec($ch) === false){
			$output = curl_error($ch);
		}else{
			$output = curl_exec($ch);
		}
		curl_close($ch);
			return $output;
	}

	function getCompetitors($url){
			$output = startConnection($url);
			$output = json_decode($output);
			$i = 0;
			foreach($output->responseData->results as $compUrl){
				$data[$i]	 = rawurldecode($output->responseData->results[$i]->url);
				//$data[$i]['Title']	 = rawurldecode($output->responseData->results[$i]->titleNoFormatting);
				//$data[$i]['Cached']  = rawurldecode($output->responseData->results[$i]->cacheUrl);
				$i++;
			}
			return $data;
		}

	function getIndexedPages($url){
		$output = startConnection($url);
		$output = json_decode($output);
		return empty($output->responseData->cursor->estimatedResultCount) ? 0 : $output->responseData->cursor->estimatedResultCount;
	}
	function getGoogleResults($url){
		$output = startConnection($url);
		$output = json_decode($output);
		return empty($output->responseData->cursor->estimatedResultCount) ? 0 : ($output->responseData->cursor->estimatedResultCount) * 5;
	}

	function getPR($url){
		$pagerank = "";
			if(strstr($url, '&')){// checks if the URL contains '&' which breaks the PR function
				$pagerank	= 1;
			}else{
				$pagerank 	= get_pr($url);
			}
			return $pagerank > 0 ? $pagerank : 0;
		}
			// get PageRank functions

	function str_to_num($str,$check,$magic){
		$int32_unit = 4294967296;  // 2^32
		$length = strlen($str);
		for($i=0;$i<$length;$i++){
		$check *= $magic;

		// If the float is beyond the boundaries of integer
		// (usually +/- 2.15e+9 = 2^31),
		// the result of converting to integer is undefined
		if($check >= $int32_unit) {
			$check -= $int32_unit * (int)($check/$int32_unit);
			//if the check less than -2^31
			if($check < -2147483648)
				$check += $int32_unit;
		}
		$check += ord($str{$i});
		}
	return $check;
	}

//generate a hash for a url
	function hash_url($str){
		$check1 = str_to_num($str, 0x1505, 0x21);
		$check2 = str_to_num($str, 0, 0x1003F);
		$check1 >>= 2;

		$check1 = (($check1 >> 4) & 0x3FFFFC0 ) | ($check1 & 0x3F);
		$check1 = (($check1 >> 4) & 0x3FFC00 ) | ($check1 & 0x3FF);
		$check1 = (($check1 >> 4) & 0x3C000 ) | ($check1 & 0x3FFF);
		$t1 = (((($check1 & 0x3C0) << 4) | ($check1 & 0x3C)) << 2) | ($check2 & 0xF0F);
		$t2 = (((($check1 & 0xFFFFC000) << 4) | ($check1 & 0x3C00)) << 0xA) | ($check2 & 0xF0F0000);
	return ($t1 | $t2);
}

    //generate a check sum for the hash string
	 function check_hash($hash_num){
		$check_byte = 0;
		$flag = 0;
		$hash_str = sprintf('%u', $hash_num) ;
		$length = strlen($hash_str);
		for($i=($length-1);$i>=0;$i--){
			$re = $hash_str{$i};
			if(1 === ($flag % 2)){
				$re += $re;
				$re = (int)($re / 10) + ($re % 10);
			}
			$check_byte += $re;
			$flag++;
		}
		$check_byte %= 10;
		if(0 !== $check_byte){
			$check_byte = 10 - $check_byte;
			if(1 === ($flag % 2)){
				if(1 === ($check_byte % 2))
					$check_byte += 9;
				$check_byte >>= 1;
			}
		}
		return '7'.$check_byte.$hash_str;
	}

    //return the check sum hash
	 function get_check_sum($url){
		return check_hash(hash_url($url));
	}

		//return the pr for the specified url
	 function get_pr($url){
		$google_host = 'toolbarqueries.google.com';
		$google_user_agent = 'Mozilla/5.0 (Windows; U; ';
		$google_user_agent .= 'Windows NT 5.1; en-US; rv:1.8.0.6) ';
		$google_user_agent .= 'Gecko/20060728 Firefox/1.5';

		$ch = get_check_sum($url);
		$fp = fsockopen($google_host, 80, $errno, $errstr, 30);
		if ($fp){
			$out = "GET /search?client=navclient-auto&ch=" . $ch;
			$out .= "&features=Rank&q=info:" . $url. " HTTP/1.1\r\n";
			$out .= "User-Agent: " . $google_user_agent . "\r\n";
			$out .= "Host: " . $google_host . "\r\n";
			$out .= "Connection: Close\r\n\r\n";
			fwrite($fp, $out);
			while (!feof($fp)) {
				$data = fgets($fp, 128);
				//echo $data;
				$pos = strpos($data, "Rank_");
				if($pos === false){
				}else{
					$pr = substr($data, $pos + 9);
					$pr = trim($pr);
					$pr = str_replace("\n",'',$pr);
					return $pr;

				}
			}
			fclose($fp);
		}
	}

	// end of Getpage rank functions

$GoogleAPIKey 	= '&key=ABQIAAAA8tux1YDfDhzs5imXfRfHixQd7c0_asWTEnKv3sDTwrdioJmWEBTG4aN-AgUIvYGmKmZCYoTSKSJuhQ&rsz=filtered_cse&gl=il';
$googleAPIUrl 	= 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=';

if(isset($_POST['submitvalue_x']) AND !empty($_POST['keywords'])){

	$keywords = $_POST['keywords'];
	$keywordsArray = explode(',',$keywords);

		for($i=0;$i<count($keywordsArray);$i++){
			$competitorsArray[$i]['competitors'] = getCompetitors($googleAPIUrl . urlencode($keywordsArray[$i]) . $GoogleAPIKey);
			// keywords exact match
			$keywordsPopularity[$i] = getIndexedPages($googleAPIUrl . '"'.urlencode($keywordsArray[$i]) .'"' . $GoogleAPIKey);
			// Allintitle keywords exact match
			$allInTitleKeywordsPopularity[$i] = getIndexedPages($googleAPIUrl . 'allintitle:"'.urlencode($keywordsArray[$i]) .'"' . $GoogleAPIKey);
			$keywordsName[$i] = $keywordsArray[$i];
			for($j=0;$j<count($competitorsArray[$i]['competitors']);$j++){
				if(substr(strrchr($competitorsArray[$i]['competitors'][$j], '/'), 1 ) || substr_count($competitorsArray[$i]['competitors'][$j],'/') > 3){
				// if the URL result is a page and not a domain then PARSE URL it.
				$domain = parse_url($competitorsArray[$i]['competitors'][$j]);
				$domain = 'http://' . $domain['host'];
				}else{
				$domain = $competitorsArray[$i]['competitors'][$j];
				}

				$competitorsArray[$i]['indexed'][$j] = 	getIndexedPages($googleAPIUrl . 'site:'.$domain . $GoogleAPIKey);
				$competitorsArray[$i]['PR'][$j]		= getPR($competitorsArray[$i]['competitors'][$j]);

			}

		}

	}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link href="default.css" rel="stylesheet" type="text/css"  />
<script type="text/javascript" src="js/menu.js" ></script>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery.slidertron-0.1.js"></script>
<script type="text/javascript" src="js/loading.js" ></script>
<!-- <script type="text/javascript" type="text/javascript" src="js/menu.js"></script> -->
<title>GooGle ApI SeoTools DeVelopmeNt</title>
<meta name="description" content="קידום אתרים - שירותי קידום אתרים יקרים מדי? בעלי עסקים, הגיע זמן לחסוך בעלויות! מערכת ה-COSS מאפשרת פתרונות בנייה וקידום אתרים משתלמים במיוחד" />
<meta name="keywords" content="קידום אתרים-קידום אתרים,קידום אתרים אוטומטי,קידום אתרים עצמי,בניית אתרים,בניית אתר,מערכת לבניית אתרים,מערכת קידום אתרים" />

<meta name="google-site-verification" content="4gaT30OtlOjjS0sSgMbz7pd3WbFP8H64soV_f8tN5Aw" />
</head>
<body>
<div id="wrapper">
<div id="headerText">

<div id="header">
	<div id="logo">
		<h1>Google<a href="#">API</a></h1>

		<h2>SeoTools development</h2>
	</div>
	<!-- end div#logo -->

	<!-- end div#menu -->
</div>

</div>
<script type="text/javascript">
		$(document).ready(function() {
			$('input[type="text"]').addClass("idleField");
       		$('input[type="text"]').focus(function() {
       			$(this).removeClass("idleField").addClass("focusField");
    		    if (this.value == this.defaultValue){
    		    	this.value = '';
				}
				if(this.value != this.defaultValue){
	    			this.select();
	    		}
    		});
    		$('input[type="text"]').blur(function() {
    			$(this).removeClass("focusField").addClass("idleField");
    		    if ($.trim(this.value) == ''){
			    	this.value = (this.defaultValue ? this.defaultValue : '');
				}
    		});
		});
function ismaxlength(obj){
		var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
		if (obj.getAttribute && obj.value.length>mlength) {
		obj.value=obj.value.substring(0,mlength);
	}
} 

	</script>
<script type="text/javascript">
	<!--
	function setbg(color)
	{
	document.getElementById("styled").style.background=color
	}
	//-->
	</script>

<div>

	<div id="page">
		<div id="page-bgtop">
			<div id="content">
               <div style="margin-right:100px">
				<form action= "" method="post" onsubmit="return ray.ajax()">
				<h1>מילות מפתח מופרדות בפסיקים</h1>

	<textarea name="keywords" id="styled" style="width:400px;height:88px;font-size:23px;direction:rtl" onfocus="this.value=''; setbg('#FFFFF2');" onblur="setbg('white')"></textarea>
	<input type="image" src="images/go.jpg" style="height:90px;width:90px" name="submitvalue" />

	<br/>

	</form>
	 <div id="load" style="display:none;"><font color="red">נא המתן...</font><img style="float:none;padding:0 5px;" src="images/loading.gif" /></div>
	 <div style="width:80%; height:auto;float:right;margin-top:20px">
	<div style="float:right;width:30%;font-weight:bold;line-height:30px;border-bottom:medium groove;">מילות מפתח</div>
	<div style="float:right;width:30%;font-weight:bold;line-height:30px;border-bottom:medium groove;">סה"כ אזכורים בגוגל</div>
	<div style="float:right;width:30%;font-weight:bold;line-height:30px;border-bottom:medium groove;">סה"כ כותרות בגוגל</div>
	<div style="clear:both"></div>
<?php

if(isset($competitorsArray)){
	$output = "";
	for($i=0;$i<count($competitorsArray);$i++){
		$output[$i] = "<div style=\"float:right;width:30%;font-weight:bold;color:red\" onclick=\"openclose('analysis$i');\"><a href=#>". $keywordsName[$i] . "</a></div>";
		$output[$i] .= "<div style=\"float:right;width:30%;font-weight:bold\">". $keywordsPopularity[$i] . "</div>";
		$output[$i] .= "<div style=\"float:right;width:30%;font-weight:bold\">". $allInTitleKeywordsPopularity[$i] . "</div>";
		$output[$i] .= "<div style=\"clear:both\"></div>";
		// hidden content
		$output[$i] .= "<div style=\"width:120%;display:block\" id='analysis$i'>";
		$output[$i] .= "<div style=\"width:120%;direction:rtl;text-align:right\">";
		$output[$i] .= "<div style=\"clear:both\"></div>";

		$output[$i] .= '<div style="width:120%; height:auto;float:right">
					<div style="float:right;width:25%;font-weight:bold;background-color:white;color:red;line-height:30px">מתחרים</div>
					<div style="float:right;width:10%;font-weight:bold;background-color:white;color:red;line-height:30px">מאונדקסים</div>
					<div style="float:right;width:10%;font-weight:bold;background-color:white;color:red;line-height:30px">PR</div>
					<div style="clear:both"></div>';
		for($j=0;$j<count($competitorsArray[$i]['competitors']);$j++){
			$output[$i] .= '<div style="direction:ltr;float:right;width:25%;font-weight:bold;background-color:#EEEEEE;line-height:30px">'.
				'<a href="'.$competitorsArray[$i]['competitors'][$j].'">' . substr($competitorsArray[$i]['competitors'][$j],0,25) . '...</a>'.'</div>';
			$output[$i] .= '<div style="direction:ltr;float:right;width:10%;font-weight:bold;background-color:#FFF;line-height:30px">'.$competitorsArray[$i]['indexed'][$j].'</div>';
			$output[$i] .= '<div style="direction:ltr;float:right;width:10%;font-weight:bold;background-color:#EEEEEE;line-height:30px">'.$competitorsArray[$i]['PR'][$j].'</div>';
		$output[$i] .= '<div style="clear:both"></div>';

		}
		$output[$i] .= '<div style="clear:both;height:20px;width:850px;border-top-style:solid"></div>';
		$output[$i] .= '</div></div></div>';
		$allOutputs[] = $output[$i];
	}
		for($d = 0; $d<count($allOutputs);$d++){
		echo $allOutputs[$d];
		echo "<br/>";

		}
}

?>
</div>

				</div>
			</div>
			<!-- end div#content -->

			<!-- end div#sidebar -->
			<div style="clear: both; height: 1px"></div>
		</div>
	</div>
	<!-- end div#page -->
</div>
<!-- end div#wrapper -->
<div id="footer-wrapper">

	<div id="footer">
		כל הזכויות שמורות לשגיא קהלני | <?php echo date('Y');?>

 </div>

<!-- end div#footer -->
</body>
</html>

מהו Google Ajax API?

גוגל, כמו חברות גדולות אחרות, מעניקות שירותי התממשקות לאנשי פיתוח (בעצם, לכל מי רוצה) למאגר המידע העצום שלהם ובכך מאפשרות פיתוח של אפליקציות ומערכות שעובדות בזמן אמת מול מאגר המידע שלהם. אפליקציות מוכרות הם: – google maps – הרבה חברות מטמיעות את המפה הוירטואלית של גוגל באתרים שלהם (אתרי נדל"ן, לוחות וכו) – google web search – (הטמעה של מנוע חיפוש מבוסס גוגל באתרים פרטיים)  דוגמאות נוספות לחברות העושות שימוש בAPI של גוגל לטובת פיתוח אפליקציות חכמות. על מנת להתממשק מול מאגר המידע העצום של גוגל, אנו נצטרך קוד API שאותו ניתן להשיג בקלות רבה דווקא.  אגב, ישנם עשרות גופים המאפשרות גישת API למפתחים. באמצעות ה-API של יאהו, למשל, ניתן לקבל גישה למאגר העצום של קישורים נכנסים, אלו אתרים מקשרים, דומיינים, דפים פנימיים וכדומה – נתונים הרלוונטיים לתהליכי קידום אתרים. כמו כן, חברת W3C העולמית מעניקה גישת API לצורך בדיקת תקינות הקוד (Html,CSS) ועמידתו בתקנים – מידע קריטי ביותר לעוסקים באופטימיזציית קוד לצורך בניית עמודים מהירים ותקניים במיוחד.

כיצד משיגים קוד API

על מנת להשיג את הקוד הנכסף (או אם תרצו רשיון, לא ממש משנה), לחצו כאן. הערה: גוגל מחייבים חשבון גימייל למי שרוצה גישת API אז אם לכם, פתחו חשבון גימייל, והמשיכו לשלב הבא.

  • תמונה א: הרשמה לקבלת קוד API

הרשמה לצורך קבלת מפתח API

קראו את התנאים (מי שרוצה…), אשרו והזינו כתובת אתר אינטרנט (אם יש לכם, אם אין הזינו סתם כתובת). זהו, קוד ה-API שלכם מוכן וישמש אתכם בכל בקשה טכנולוגית לקבלת מידע מהמאגר של גוגל.

  • תמונה ב: קבלת קוד API

מפתח API

לאחר שקיבלתם את קוד ה-API, העתיקו את הקוד אל המשתנה הבא: GoogleAPIKey בקוד המצורף למדריך זה (בתחתית הדף) שימו לב, ככה זה נראה:.

$GoogleAPIKey = '&key=ABQIAAAA8tux1YDfDhzs5imXfRfHixQd7c0_asWTEnKv3sDTwrdioJmWEBTG4aN-AgUIvYGmKmZCYoTSKSJuhQ&rsz=filtered_cse&gl=il';

יש להחליף את ערכו של המשתנה בקוד החדש שקיבלתם בצורה הבאה:

ABQIAAAA8tux1YDfDhzs5imXfRfHixQd7c0_asWTEnKv3sDTwrdioJmWEBTG4aN-AgUIvYGmKmZCYoTSKSJuhQ

שימו לב, לעדכן את הקוד שקיבלתם במקום הקיים!

בואו נדבר טכנולוגית!

אוקיי, עברנו את החלק הקשה בפרוייקט :) והלאה ממשיכים לשלב הבא. אני מזכיר לכם, המטרה שלנו היא להוציא מידע רלוונטי לעבודת הקידום ממאגר המידע האדיר של גוגל, לשם כך אנחנו צריכים שרת אינטרנט על מנת שנוכל דרכו לשלוח בקשות לגוגל. השרת בו נעשה שימוש יהיה שרת אפאצ'י המגיע בחבילת WAMP (ר"ת: Windows, Apache, Mysql, PHP) המתאימה אך ורק למערכות הפעלה של וינדוס חבילה זו כוללת כבר את שפת הפיתוח PHP, מסד הנתונים, MySQL וזהו בגדול.

הערה: ישנן מגוון חבילות המתאימות למערכות הפעלה שונות כגון:

WAMP – החבילה בה נעשה שימוש למשתמשי ווינדוס בלבד.

LAMP – אותה החבילה אך למשתמשי לינוקס

MAMP – חבילה המתאימה למשתמשי MAC של APPLE

XAMP – חבילה לווינדוס או לינוקס

הורדה והתקנת WAMP למחשב

על מנת להתקין את הגרסה האחרונה של התוכנה, לחצו כאן.

ולחצו על download

נכון לכתיבת מדריך זה, הגרסה האחרונה עדכנית לתאריך 07/11/09

  • תמונה ג': הורדת WAMP למחשב
  • הורדת WAMP למחשב

לאחר שהורדתם את התוכנה למחשב, שמרו אותה, אתרו את קובץ ההתקנה (סביר להניח שהוא יהיה בתיקיית downloads אלא אם כן הגדרתם אחרת), לחצו על הקובץ והתחילו את תהליך ההתקנה.

  • תמונה ד: התחלת תהליך התקנת WAMP
  • התקנת WAMP

התוכנה, כהגדרת מחדל, תותקן בכונן C,כמו כן במהלך תוכנית ההתקנה, תישאלו האם אתם מעוניינים להגדיר את אקספלורר כדפדפן ברירת המחדל או כל דפדפן אחר. אישית, אני עובד עם firefox אבל, אתם יכולים להשתמש באחד מן השניים בהתאם לנוחות שלכם. המשיכו לאשר את ההתקנה, ולבסוף לחצו סיום וזהו. התוכנה הותקנה ואתם מסודרים. כעת, לחצו על קובץ ההפעלה של התוכנה (לשים תמונת אייקון של הקובץ), והתוכנה תצוץ בסרגל הכלים התחתון במחשב שלכם בצורת מד זמן

  • תמונה ה: מיקום האייקון של WAMP במחשב
  • אייקון WAMP במחשב

כעת, צריך לקנפג קצת את השרת על מנת שיתאים לצרכים שלנו. לכן, לחצו על האייקון של התוכנה, לכו ל-PHP, ולחצו על קובץ PHP.ini

  • תמונה ו: פתיחת קובץ php.ini
  • קובץ php.ini

פתחו את קובץ ה- php.ini, עשו חיפוש עבור הערך: "curl" (בלי הגרשיים כמובן), החיפוש יוביל אתכם ישירות לשורה הבאה בקובץ: ;extension=php_curl.dll

מחקו את הסימן ";" מתחילת השורה, שמרו את הקובץ ואתחלו את התוכנה על פי התמונה הבאה:

  • תמונה ז: אתחול השרת לצורך טעינת השינויים שעשינו
  • אתחול השרת

מחיקת הסימן ";" בעצם אומרת לשרת להפעיל את המודול הזה שאחראי בעצם על התקשרויות מול שרתים חיצוניים באמצעות פרוטוקלים מוכרים כגון http, ftp, ssl  וכדומה. באמצעות טעינת המודול הזה לשרת שלנו, נוכל לתקשר עם גוגל על מנת לקבל את המידע הרלוונטי.

מיקום התיקיות הרלוונטיות

לאחר שהתקנו וביצענו קינפוג קל לשרת  שלנו (להזכירכם, מדובר בשרת אינטרנט הנקרא אפאצ'י המגיע כחלק מחבילת תוכנה), הגיע הזמן לאתר את מיקומו במחשב המקומי. אם נלך כמה צעדים אחורה, בעת ההתקנה של התוכנה קיבלנו הודעת ברירת מחדל שהתוכנה תותקן בכונן C: (או כונן אחר בו התקנתם את התוכנה), בהתאם לכך, הכנסו לכתובת הבאה במחשב המקומי שלכם על מנת להגיע לתיקיית השרת:  C:\wamp

בתיקייה זו תיקיות רבות שאינן רלוונטיות למאמר זה ולכן התעלמו מהן לחלוטין; הן לא ישמשו אותנו בשום שלב חוץ מתיקייה אחת, עיקרית וחשובה בשם: WWW

בתיקייה זו, אנו נמקם את כל קבצי המערכת שנבנה ובה ימוקמו קבצי ה-PHP, HTML, CSS וכדומה המצורפים למדריך זה.

גישה לממשק של המערכת

את הקבצים יש להוריד ממדריך זה ולהעתיקם כמות שהם לתיקיית ה-WWW בכתובת  C:\wamp\www

לאחר מכן, הפעילו את הדפדפן שלכם, בשורת הכתובת רשמו:

localhost לחצו enter ותגיעו הישר אל דף הבית של השרת שלכם. אתרו את התיקייה בשם: project

לחצו עליה, והגעתם למערכת:

  • תמונה ח: דף הבית של המערכת
  • דף הבית של המערכת

קבלת נתונים מגוגל API

באזור הטקסט החופשי, הזינו מילות מפתח לבדיקה מופרדות בפסיקים ולחצו על "GO", שימו לב, אין הגבלה על כמות המילים, אבל רצוי לא להעמיס על המערכת שכן התהליך יכול להיות מאד איטי. לאחר הזנה של הביטויים:

קידום אתרים,בניית אתרים

מתקבלת התמונה הבאה:

  • תמונה ט: נתונים מה-API של גוגל
  • תוצאות רלוונטיות מה-API של גוגל

שימו לב שלכל ביטוי מפתח הפרמטרים שלו, הכוללים:

  1. סך האזכורים שיש בגוגל עבור הביטוי במדוייק
  2. סה"כ מספר האתרים בעלי title הכולל את הביטוי במדוייק
  3. עשרת המתחרים הראשונים בגוגל עבור הביטוי
  4. מספר הדפים המאנדקסים לכל לקוח
  5. מדד ה-PR שיש לכל מתחרה.

כמו כן, לחיצה על כל ביטוי מפתח ממזערת את התוצאות, כך:

  • תמונה י: גרסה מצומצמת של הנתונים
  • גרסה מצומצמת של תוצאות ה-API

סיכום

ממשק ה-API של גוגל הינו צינור מידע אדיר לטובת שימושים רבים וביניהם מידע הרלוונטי לקידום אתרים. ניתן בקלות לשדרג את המערכת ולהפוך אותה למערכת SEO יעילה במיוחד הכוללת:

  1. יצירת חשבון לכל לקוח בנפרד
  2. שמירת הנתונים במסד הנתונים לצורך בדיקה חוזרת והוספת מילים לחשבון
  3. ייצוא הנתונים לאקסל
  4. שילוב של פרמטרים נוספים כגון: קישורים נכנסים,ותק דומיין, צפיפות מילות מפתח לכל מתחרה

ועוד אין ספור אפשרויות והכל, באמצעות ה-API של גוגל, יאהו וכדומה.

קבצים להורדה

לחצו כאן להורדת קובץ ZIP של המערכת