Pengecekan peringkat adalah proses memantau posisi halaman website Anda di SERP untuk kata kunci tertentu. Ini adalah bagian penting dari optimasi mesin pencari karena membantu Anda memahami visibilitas situs web Anda untuk pencarian yang relevan dan mengidentifikasi peluang untuk perbaikan. Ada banyak solusi dan layanan pengecekan peringkat siap pakai yang tersedia, namun seringkali memiliki keterbatasan seperti: B. fleksibilitas rendah dan biaya tinggi.
Pada artikel ini, Anda akan mempelajari cara membuat pemeriksa peringkat dalam bahasa skrip PHP. PHP adalah bahasa yang kuat dan serbaguna yang cocok untuk tugas SEO. Ini memiliki komunitas pengembang yang besar dan beragam perpustakaan dan alat.
Daftar Isi
Teknologi yang dibutuhkan
PHP adalah salah satu bahasa skrip sisi server yang paling populer dan tertua. Ini biasanya digunakan dalam pengembangan web untuk membuat situs web yang dinamis dan interaktif. Pada artikel sebelumnya, kita telah membahas PHP, cara mengatur lingkungan pengembangan dan perpustakaan mana yang dapat digunakan untuk mengirim permintaan dan mengikis data.
Pada artikel ini kami tidak akan membahas secara detail topik yang dibahas sebelumnya, tetapi hanya mencantumkan alat dan pustaka yang akan kami gunakan:
Alternatifnya, Anda dapat menggunakan alat seperti XAMPP untuk memulai server virtual Apache untuk pengembangan PHP. Ini adalah pilihan yang baik jika Anda tidak ingin repot menginstal dan mengkonfigurasi semua komponen di atas.
Pengembangan Script PHP Pemeriksa Peringkat Kata Kunci
Pemeriksa peringkat kata kunci adalah aplikasi perangkat lunak atau platform online yang membantu Anda melacak posisi peringkat situs web Anda untuk kata kunci tertentu di halaman hasil mesin pencari (SERP).
Dengan melacak peringkat kata kunci dari waktu ke waktu, Anda dapat menentukan secara akurat efektivitas upaya Anda, menemukan kata kunci berpotensi tinggi dengan persaingan minimal, dan menganalisis strategi pesaing Anda. Proses ini, yang merupakan bagian integral dari penelitian kata kunci, tidak hanya menginformasikan taktik SEO Anda tetapi juga memberi Anda keunggulan kompetitif.
Data yang sangat berharga ini mendukung keputusan SEO Anda, memandu pembuatan konten, pengoptimalan pada halaman, dan pembuatan tautan, sekaligus berfungsi sebagai sistem peringatan dini untuk masalah teknis atau penalti mesin pencari.
Mengikis hasil pencarian Google menggunakan SERP API
Google adalah mesin pencari paling populer, jadi penggunaan pemeriksa peringkat berdasarkan hasil SERP Google sangat diminati. Untuk membuat pemeriksa posisi kata kunci, Anda harus mempertimbangkan semua batasan yang diterapkan Google pada pengikisan. Namun, ini masih merupakan tugas yang relatif bisa dilakukan, dan kami telah menulis tentang cara mencari sendiri hasil pencarian Google.
Namun, membuat pemeriksa peringkat Google memerlukan pengumpulan dan pemrosesan data. Untuk menyederhanakan prosesnya, dalam contoh ini kita akan menggunakan Scrape-It.Cloud SERP API, yang memberikan hasil pencarian terstruktur tanpa harus melakukan scrape sendiri pada Google. Pendekatan ini memiliki beberapa keuntungan:
- SERP API menyediakan data siap pakai dan terstruktur.
- Tidak perlu menggunakan proxy.
- Tidak ada pemecahan masalah dan melewati CAPTCHA.
- Jika struktur halaman hasil pencarian berubah, Anda tidak perlu mengubah logika pemrosesan data karena Anda mendapatkan kumpulan data yang sudah jadi.
- Pendekatan ini jauh lebih mudah dan mudah untuk ditangani bahkan untuk pemula.
Jika Anda masih belum yakin dengan kemampuan Anda, kami telah menulis artikel di mana Anda dapat menemukan pemeriksa peringkat dan pelacak peringkat yang sudah jadi serta pengikis Google di Google Sheets. Anda dapat menggunakan template yang sudah jadi dan mendapatkan semua data yang diperlukan. Namun, jika Anda ingin membuat alat pemeriksa peringkat di PHP, tutorial ini dapat membantu Anda.
Impor perpustakaan dan buat permintaan
Seperti disebutkan sebelumnya, kita akan menggunakan Composer untuk mengimpor perpustakaan. Untuk melakukannya, buat file baru bernama “composer.json” dan tambahkan perpustakaan yang digunakan dalam proyek. Kami akan menggunakan perpustakaan httpful, jadi isi filenya adalah sebagai berikut:
{
"require": {
"nategood/httpful": "*"
}
}
Anda juga dapat mengganti * dengan versi perpustakaan tertentu. Namun, jika Anda tidak yakin atau hanya ingin menggunakan versi terbaru yang kompatibel, tinggalkan *.
Buat file dengan ekstensi .php dan impor modul yang diperlukan:
<?php
require 'vendor/autoload.php';
use Httpful\Request;
// Here will be code
?>
Tetapkan parameter yang kami teruskan ke API. Anda dapat menemukan daftar lengkapnya di dokumentasi resmi, tetapi kami hanya akan menggunakan dasar-dasarnya:
$location = 'Austin,Texas,United States';
$query = 'Coffee';
$filter = 1;
$domain = 'google.com';
$gl="us";
$hl="en";
$deviceType="desktop";
Parameter yang paling penting adalah isi variabel $query, yang menyimpan kata kunci atau frase di mana query dijalankan. Anda juga dapat mengonfigurasi lokalisasi dan bahasa mesin pencari untuk mendapatkan data yang paling relevan.
Tentukan domain sumber daya untuk melakukan pencarian lokasi di:
$searchedDomain = 'wikipedia.org';
Kami juga perlu menentukan header permintaan untuk meneruskan kunci API unik yang dapat ditemukan di akun Anda setelah mendaftar di situs web Scrape-It.Cloud:
$headers = array(
'x-api-key' => YOUR-API-KEY',
);
Kemudian kumpulkan string permintaan:
$url = sprintf(
'https://api.scrape-it.cloud/scrape/google?location=%s&q=%s&filter=%d&domain=%s&gl=%s&hl=%s&deviceType=%s',
rawurlencode($location),
rawurlencode($query),
$filter,
rawurlencode($domain),
rawurlencode($gl),
rawurlencode($hl),
rawurlencode($deviceType)
);
Dan jalankan permintaan yang dihasilkan:
$response = Request::get($url)
->addHeaders($headers)
->send();
Selanjutnya akan ada respon terhadap permintaan tersebut, yang selanjutnya akan kami proses.
Menganalisis dan mengekstraksi peringkat kata kunci
Respons SERP API mengembalikan objek JSON dengan data yang diperlukan. Sebelum kita melanjutkan untuk mendapatkan parameter yang diperlukan, mari kita lihat struktur respons JSON:
Untuk pemeriksa peringkat yang paling sederhana, kita dapat menggunakan isi atribut OrganicResults. Namun, nanti kami akan menambahkan tanggal dan waktu pemeriksaan, link ke halaman kueri, dan menunjukkan cara mendapatkan data dari cuplikan kaya.
Mari kita dekode respons JSON dan simpan hasilnya dalam variabel untuk diproses lebih lanjut.
$data = json_decode($response->raw_body, true);
Pertama periksa apakah respons JSON kosong. Jika permintaan gagal, kita harus menghentikan skrip dan menampilkan pesan kesalahan.
if (!is_array($data) || empty($data)) {
die('Error with JSON decoding or Empty data');
}
Selanjutnya, kita harus memastikan bahwa properti OrganicResults berisi data dan berupa array. Jika tidak, kita juga harus menghentikan skrip tersebut.
if (isset($data('organicResults')) && is_array($data('organicResults')) && !empty($data('organicResults'))) {
// Here will be code
} else {
die('organicResults is empty');
}
Sekarang mari kita buat variabel untuk menyimpan data posisi.
$result = array();
Ulangi array OrganicResults dan temukan hasil yang berisi domain di URL.
foreach ($data('organicResults') as $item) {
if (isset($item('link')) && strpos($item('link'), $searchedDomain) !== false) {
// Here will be code
}
}
Terakhir, kita dapat menyimpan posisi, kata kunci Google, domain, dan data lainnya di variabel hasil.
$result() = array(
'position' => $item('position'),
'domain' => $searchedDomain,
'keyword'=> $query,
'link' => $item('link'),
'title' => $item('title'),
'displayedLink' => $item('displayedLink'),
'source' => $item('source'),
'snippet' => $item('snippet'),
);
Pada langkah ini Anda memiliki data yang Anda inginkan dalam variabel hasil. Anda dapat memprosesnya lebih lanjut, menampilkannya di layar, atau menyimpannya dalam format yang nyaman untuk digunakan atau disimpan di masa mendatang.
Simpan dan presentasikan hasilnya
Karena data peringkat mesin pencari memiliki struktur tertentu, sangat mudah untuk menyimpannya dalam format tabel. CSV adalah salah satu format paling populer dan didukung oleh sebagian besar sistem operasi. Oleh karena itu, pertimbangkan untuk menyimpan kumpulan data yang diperoleh selangkah demi selangkah ke dalam file CSV.
Tetapkan nama file data peringkat:
$csvFilePath="rank_checker.csv";
Periksa apakah file tersebut ada saat ini:
$fileExists = file_exists($csvFilePath);
Kemudian buka file untuk menambahkan data di akhir file. Jika Anda ingin file ditimpa setiap saat, gunakan parameter “w” alih-alih “a”.
$file = fopen($csvFilePath, 'a');
Sekarang mari kita periksa apakah file tersebut kosong atau tidak ada sebelumnya, lalu atur judul kolomnya:
if (!$fileExists || filesize($csvFilePath) == 0) {
fputcsv($file, array_keys($result(0)));
}
Masukkan data yang dikumpulkan baris demi baris jika nama domain ditemukan beberapa kali di hasil pencarian:
foreach ($result as $row) {
fputcsv($file, $row);
}
Terakhir, jangan lupa untuk menutup file:
fclose($file);
Untuk mengetahui apakah data berhasil disimpan, Anda dapat mengeluarkan notifikasi ke baris perintah:
echo 'Data saved to CSV file: ' . $csvFilePath;
Tindakan terakhir tidak wajib, tetapi memungkinkan Anda mendapatkan gambaran umum tentang status eksekusi skrip saat ini. Sebagai hasil eksekusi, Anda akan menerima file dengan konten serupa:
Saat Anda memulai skrip, konten file diperbarui, dan seiring waktu Anda akan memiliki data terperinci tentang perubahan posisi dalam format yang nyaman.
Perencanaan dan otomatisasi
Untuk mengotomatiskan posisi peringkat, Anda dapat menggunakan fungsi sistem bawaan. Misalnya, di Windows, tugas dibuat di Penjadwal Tugas dan di Linux Cron digunakan. Menambahkan tugas ke Penjadwal Tugas bersifat visual dan intuitif, jadi kami tidak akan membahasnya lebih jauh.
Mari kita simak cara menambahkan PHP Rank Checker ke Cron dengan frekuensi peluncuran sekali sehari. Untuk melakukan ini, Anda perlu mengetahui lokasi paket PHP dan pemeriksa peringkat PHP Anda.
Maka Anda perlu menetapkan aturan untuk Cron. Anda dapat menggunakan layanan pembuatan tugas untuk melakukan ini. Dalam kasus kami, untuk memulai setiap hari cukup menggunakan @daily.
Sekarang mari kita pergi ke file konfigurasi tugas cron. Untuk melakukan ini, masukkan perintah berikut di terminal:
crontab -e
Kemudian tambahkan task line baru berupa “Frequency Location-of-PHP-Package Location-of-Rank-Checker”, contoh:
@daily /usr/bin/php /root/php_script/rank.php
Kemudian simpan perubahan Anda dan tutup editor. Anda dapat melihat tugas yang ada nanti menggunakan perintah berikut:
crontab -l
Untuk menghapus tugas dari Cron, Anda dapat menggunakan perintah yang sama untuk meluncurkan editor saat menambahkan tugas baru. Hapus saja baris yang diperlukan.
Perbaikan skrip PHP untuk pengecekan peringkat kata kunci
Pemeriksa SERP versi sebelumnya berfungsi, tetapi tidak menyimpan semua data yang diperlukan. Seperti yang Anda lihat dari struktur JSON yang dikembalikan, kita bisa mendapatkan lebih banyak parameter. Oleh karena itu, kami melengkapi skrip sebelumnya dan menyimpan yang paling berguna.
cuplikan SERP
Salah satu parameter terpenting dan berguna yang kami peroleh dari SERP API adalah snapshot SERP. Dalam kasus kami, ini adalah tautan yang dapat Anda klik untuk melihat seperti apa hasil pencarian pada saat pemeriksaan posisi. Ini sangat penting jika Anda ingin mengetahui, misalnya, 10 hasil teratas, siapa yang menempati posisi pertama dan siapa yang menduduki posisi sebelum dan sesudah sumber daya Anda.
Tautan ke snapshot SERP ada di atribut googleHtmlFile, jadi mari tambahkan beberapa parameter tambahan ke variabel $results kita:
$result() = array(
'position' => $item('position'),
'domain' => $searchedDomain,
'keyword'=> $query,
'link' => $item('link'),
'title' => $item('title'),
'displayedLink' => $item('displayedLink'),
'source' => $item('source'),
'snippet' => $item('snippet'),
'googleUrl' => $data('requestMetadata')('googleUrl'),
'googleHtmlFile' => $data('requestMetadata')('googleHtmlFile'),
);
Kode lainnya tetap tidak berubah.
Kutipan dan tanggal yang dipilih
Parameter lain yang berguna adalah tanggal dan waktu. Meskipun kami dapat mengumpulkan data dan mengamati perubahan dari waktu ke waktu, kami tidak dapat membuat grafik yang akurat tanpa mengetahui data spesifik dari setiap ujian. Untuk memperbaiki masalah ini, kami menambahkan parameter baru ke variabel $result:
'position' => $item('position'),
'domain' => $searchedDomain,
'keyword'=> $query,
'link' => $item('link'),
'title' => $item('title'),
'displayedLink' => $item('displayedLink'),
'source' => $item('source'),
'snippet' => $item('snippet'),
'googleUrl' => $data('requestMetadata')('googleUrl'),
'googleHtmlFile' => $data('requestMetadata')('googleHtmlFile'),
'date' => date('Y-m-d H:i:s'),
Selain hasil pencarian, Anda juga dapat mengakses data lain dari respon JSON, seperti: Misalnya “Orang juga bertanya” atau “Pertanyaan serupa”. Misalnya, untuk mengambil data pertanyaan terkait, Anda dapat menggunakan kode berikut:
$relatedQuestions = array();
foreach ($data('relatedQuestions') as $question) {
$relatedQuestions() = array(
'title' => $question('title'),
'link' => $question('link'),
'source' => $question('source'),
'snippet' => $question('snippet'),
);
}
Ini memungkinkan Anda menyesuaikan format dan jumlah data yang Anda terima dari Google SERP API.
Kode lengkap pemeriksa peringkat
Di sini Anda dapat menemukan kode lengkap pemeriksa peringkat di PHP:
<?php
require 'vendor/autoload.php';
use Httpful\Request;
// Set your params
$location = 'Austin,Texas,United States';
$query = 'Coffee';
$filter = 1;
$domain = 'google.com';
$gl="us";
$hl="en";
$deviceType="desktop";
// Set your domain to check
$searchedDomain = 'wikipedia.org';
// Set your api-key
$headers = array(
'x-api-key' => 'YOUR-API-KEY',
);
$url = sprintf(
'https://api.scrape-it.cloud/scrape/google?location=%s&q=%s&filter=%d&domain=%s&gl=%s&hl=%s&deviceType=%s',
rawurlencode($location),
rawurlencode($query),
$filter,
rawurlencode($domain),
rawurlencode($gl),
rawurlencode($hl),
rawurlencode($deviceType)
);
$response = Request::get($url)
->addHeaders($headers)
->send();
$data = json_decode($response->raw_body, true);
if (!is_array($data) || empty($data)) {
die('Error with JSON decoding or Empty data');
}
if (isset($data('organicResults')) && is_array($data('organicResults')) && !empty($data('organicResults'))) {
$result = array();
foreach ($data('organicResults') as $item) {
if (isset($item('link')) && strpos($item('link'), $searchedDomain) !== false) {
$result() = array(
'position' => $item('position'),
'domain' => $searchedDomain,
'keyword'=> $query,
'link' => $item('link'),
'title' => $item('title'),
'displayedLink' => $item('displayedLink'),
'source' => $item('source'),
'snippet' => $item('snippet'),
'googleUrl' => $data('requestMetadata')('googleUrl'),
'googleHtmlFile' => $data('requestMetadata')('googleHtmlFile'),
'date' => date('Y-m-d H:i:s'),
);
}
}
$csvFilePath="rank_checker.csv";
$fileExists = file_exists($csvFilePath);
$file = fopen($csvFilePath, 'a');
if (!$fileExists || filesize($csvFilePath) == 0) {
fputcsv($file, array_keys($result(0)));
}
foreach ($result as $row) {
fputcsv($file, $row);
}
fclose($file);
echo 'Data saved to CSV file: ' . $csvFilePath;
} else {
die('organicResults is empty');
}
?>
Diploma
Pada artikel ini, kita telah membahas langkah demi langkah proses membuat pemeriksa peringkat khusus di PHP menggunakan SERP API. Selain mendapatkan parameter dasar, kita juga membahas cara mendapatkan dan menyimpan snapshot permintaan serta cara mendapatkan tanggal dan waktu saat ini.
Demi kenyamanan Anda, di akhir artikel kami telah menyediakan skrip lengkap yang dapat membantu Anda lebih memahami prinsip membuat pemeriksa peringkat berdasarkan SERP API.
Namun, seperti yang disebutkan, SERP API mengembalikan lebih banyak data daripada yang kami gunakan dalam skrip kami. Oleh karena itu, mengetahui struktur respons JSON akan memungkinkan Anda membuat alat Anda fleksibel dan mentransfer semua data yang Anda perlukan.