Pernah nggak sih kamu lagi cek indexing di Google Search Console (GSC) dan nyadar kalau proses ini ternyata super duper repetitif?
Misalnya, kamu punya ratusan bahkan ribuan URL yang belum terindex, tapi untuk mengecek statusnya di GSC harus klik satu-satu pakai fitur Inspect URL.
Tahu-tahu sudah waktunya reporting Q4. 12 bulan lewat cuma ngerjain URL inspection.
Untungnya, proses ini bisa kita otomatisasi pakai Python lewat Google Search Console API.
Jadi bukan cuma hemat waktu, tapi juga akan lebih scalable buat proyek SEO yang besar.
Di artikel ini, saya akan bahas:
- Ilustrasi problem yang sering banget kita alami kalau main di SEO skala besar.
- Python script step-by-step untuk bulk URL inspection di GSC.
- Penjelasan detail setiap library dan fungsi yang dipakai.
Yuk kita mulai!
Problem: Ingin URL Inspection buat Ribuan URL dari Websitemu
Ada beberapa kasus SEO yang mungkin pernah kamu temui seperti beberapa issue dibawah ini:
-
Sitemap couldn’t fetch
- Website kamu udah punya sitemap, tapi GSC kasih notifikasi “couldn’t fetch”.
- Akibatnya, kamu nggak bisa rely sepenuhnya ke sitemap buat validasi status indexing.
- Padahal website jalan terus dan kamu nggak bisa sekedar nunggu tim dev untuk benerin sitemapnya.
-
Export URL di GSC mentok 1000 baris
- Kamu pengen tahu URL mana aja yang belum ke-index, tapi fitur export di GSC cuma kasih maksimal 1000 URL.
- Padahal website kamu mungkin punya 10.000–100.000 halaman.
-
Proses manual = buang waktu
- Kalau ngecek satu-satu URL di GSC lewat “Inspect URL”, ya siap-siap duduk di depan layar seharian. You can definitely say “Goodbye” to this process.
- Bayangin kalau harus ulang ini setiap minggu buat monitoring. SEO task kamu yg lain nggak akan ada yang kesentuh sama sekali.
Di sini sekali lagi Python berperan buat SEO: otomatisasi bulk URL inspection biar kita bisa langsung dapetin insight indexing status ribuan URL dalam sekali jalan.
Python Script untuk Bulk URL Inspection Menggunakan Search Console API
Kamu bisa akses script lengkapnya di github repository-ku.
Nanti kita breakdown tiap bagian biar jelas fungsinya
Penjelasan Mendetail dari Script ini
1. Library yang Dipakai
csv
- Untuk baca file input (
cek_status_url.csv) dan simpan hasil output dalam bentuk CSV. - Jadi gampang dibuka di Excel atau Google Sheets.
json
- Sebenarnya nggak dipakai langsung di script ini, tapi sering berguna kalau kamu mau debug response dari API yang formatnya JSON.
time.sleep
- Fungsi
sleep(1)dipakai biar script nggak kena rate limit dari Google API. - Kalau kamu inspect ribuan URL tanpa delay, bisa-bisa request kamu ditolak.
google.oauth2.service_account
- Untuk handle authentication ke Google API pakai file
auth.json. - File ini biasanya didapat dari Google Cloud Console saat bikin service account.
googleapiclient.discovery.build
- Library resmi dari Google buat akses API.
- Di sini kita pakai untuk build service
searchconsole.
googleapiclient.errors.HttpError
- Fungsinya untuk handle error HTTP (contoh: 403 forbidden, 404, 500).
2. Setup Awal (Authentication & API Client)
SERVICE_ACCOUNT_FILE = "auth.json"
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
SITE_URL = 'sc-domain:[example.com](http://example.com)'
-
SERVICE_ACCOUNT_FILE: Path ke credentials JSON kamu. Jangan lupa ini harus kamu generate dulu lewat Google Cloud.
-
SCOPES: Scope API yang kita pakai adalah
webmasters.readonly. Ini cukup karena kita cuma mau baca data, bukan edit. -
SITE_URL: Formatnya bisa:
sc-domain:example.com(kalau domain property)https://www.example.com/(kalau URL prefix property)
Bingung di part cara bikin service account?
Kamu bisa baca artikelku tentang cara membuat service account dan mengunduh credentialnya.
3. Fungsi inspect_url(url)
Di sinilah jantung script bekerja.
Request body ke API
request = {
'inspectionUrl': url,
'siteUrl': SITE_URL
}
Eksekusi API
response = service.urlInspection().index().inspect(body=request).execute()
Parsing hasil response: Data penting yang kita ambil:
-
coverageState→ status coverage; melihat status indexing dari URL itu -
lastCrawlTime→ kapan terakhir kali Googlebot crawl. -
pageFetchState→ apakah page bisa di-fetch normal atau ada masalah. -
robotsTxtState→ diblok robots.txt atau tidak. -
verdict→ keputusan final (PASS atau FAIL).
Error handling
-
Kalau kena error HTTP (misalnya 403 forbidden, 429 rate limit), ditangani dengan block
except HttpError. -
Kalau error lain (misalnya URL invalid), masuk ke block
except Exception.
4. Looping Semua URL dari CSV
with open(CSV_INPUT, newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
url = row['url']
print(f'🔍 Inspecting: {url}')
result = inspect_url(url)
results.append(result)
sleep(1)
-
Baca daftar URL dari CSV (
cek_status_url.csv). -
Inspeksi satu-satu pakai fungsi
inspect_url(). -
Simpan hasil ke list
results. -
Kasih jeda 1 detik tiap request.
Format CSV input minimal kayak gini:
url |
|---|
https://example.com/page-1 |
https://example.com/page-2 |
5. Simpan Hasil ke CSV Output
fieldnames = ['url', 'coverageState', 'lastCrawlTime', 'pageFetchState', 'robotsTxtState', 'verdict', 'error']
with open(CSV_OUTPUT, 'w', newline='') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for row in results:
writer.writerow(row)
Outputnya jadi CSV dengan kolom:
url | coverageState | lastCrawlTime | pageFetchState | robotsTxtState | verdict | error |
|---|---|---|---|---|---|---|
https://example.com/page-1 | Submitted and indexed | 2025-05-13 | 16:53 | SUCCESSFUL | ALLOWED | PASS | |
https://example.com/page-2 | Crawled - currently not indexed | 2025-03-04 | 20:31 | SUCCESSFUL | ALLOWED | NEUTRAL | |
https://example.com/page-3 | URL is unknown to Google | PAGE_FETCH_STATE_UNSPECIFIED | ROBOTS_TXT_STATE_UNSPECIFIED |
Kenapa Otomatisasi Ini Penting Buat SEO?
1. Hemat Waktu
Bayangin cek 5000 URL manual di GSC. Bisa makan waktu berhari-hari. Dengan script ini, bisa kelar dalam beberapa jam (tergantung limit API).
2. Lebih Dalam daripada GSC Export
Data yang bisa kamu ambil lebih detail daripada export biasa, dan tentu saja … lebih banyak!
3. Custom Analysis
Karena outputnya CSV, kamu bisa mainkan di Excel, Google Sheets, Looker Studio atau bahkan olah lebih lanjut pakai Python (pandas, matplotlib, dll).
4. Scalable
Cocok banget buat merampingkan cost tools dari SEO agency yang handle banyak website besar.
Penutup
Dengan Python + Google Search Console API, kita bisa bikin bulk URL inspection jadi otomatis. Script ini bisa langsung kamu pakai atau modifikasi sesuai kebutuhan.
Kalau kamu baru kenal Python, jangan khawatir. Coba aja dulu script ini, nanti pelan-pelan kamu bakal sadar kalau Python itu powerful banget buat mengurangi task repetitif di SEO.




