Trong thời đại nội dung và tìm kiếm thống trị như hiện nay, việc nắm bắt các gợi ý từ khóa là vũ khí tối thượng giúp SEOer, content marketer và cả developer phát triển chiến lược nội dung chính xác. Nhưng tại sao lại cần đến Python? Và nó mang lại điều gì vượt trội so với các công cụ có sẵn?
Python giúp bạn truy xuất chính xác những gợi ý từ khóa từ Google Suggest và YouTube Autocomplete mà không bị giới hạn bởi giao diện công cụ. Bạn có thể chủ động quyết định: từ khóa gốc, số lượng gợi ý, ngôn ngữ, khu vực, cấu trúc dữ liệu đầu ra… Từ đó, bạn tạo được hệ thống nghiên cứu keyword sâu sát mục tiêu và đối tượng người dùng.
Thay vì phải trả tiền cho các công cụ như Ahrefs, SEMrush hay KeywordTool.io, một đoạn script Python miễn phí có thể giúp bạn thu được dữ liệu tương tự. Đặc biệt với những ai chỉ cần crawl nhanh danh sách từ khóa cho niche nhỏ, đây là giải pháp tối ưu chi phí, dễ tinh chỉnh theo nhu cầu.
Script Python có thể chạy hàng ngày, tích hợp vào hệ thống content pipeline hoặc kết hợp với Google Sheet, Notion API, Airtable... để cập nhật dữ liệu keyword mới theo thời gian thực. Đây là điều mà các công cụ thương mại thường khó đáp ứng nếu không trả phí cao cấp.

Trước khi viết bất kỳ dòng code nào, bạn cần chuẩn bị một số công cụ và kiến thức nền cơ bản. Dưới đây là danh sách tối thiểu để bắt đầu crawl từ khóa bằng Python từ Google và YouTube một cách suôn sẻ.
Bạn cần cài đặt Python 3.7 từ python.org. Nên dùng kèm môi trường ảo (virtualenv) và cài thêm Jupyter Notebook hoặc VS Code để lập trình dễ dàng hơn. Những IDE này giúp debug và chạy thử script hiệu quả, nhất là khi crawl dữ liệu lớn.
Cài nhanh bằng lệnh:
pip install requests pandas
Bạn cần chuẩn bị sẵn danh sách từ khóa gốc (seed keywords), có thể lưu ở dạng .txt, .csv hoặc .xlsx. Mỗi dòng là một từ khóa chủ đề bạn muốn mở rộng. Ví dụ:
giày thể thao
lập trình Python
máy ảnh du lịch
Dù không cần quá giỏi kỹ thuật, bạn vẫn nên hiểu cách Google Suggest hay YouTube Autocomplete hoạt động: khi người dùng gõ một từ, trình duyệt gửi yêu cầu GET đến endpoint của Google/YouTube và nhận về danh sách JSON các gợi ý. Hiểu điều này giúp bạn xác định chính xác URL cần crawl và cách bóc tách dữ liệu.
Theo nghiên cứu của Ahrefs, hơn 94% ý tưởng nội dung đến từ các gợi ý tìm kiếm. Và hơn 80% SEOer chuyên nghiệp đã từng tự crawl Google Suggest để tạo bộ từ khóa chuyên sâu. Bạn cũng có thể làm điều đó chỉ với 5 bước Python cực đơn giản dưới đây.
Đầu tiên, bạn cần đảm bảo Python và thư viện đã được cài đặt. Tạo môi trường ảo (tuỳ chọn) và cài:
pip install requests pandas
→ Mục tiêu: Đảm bảo hệ thống có thể gửi request và lưu dữ liệu.
Mẹo: Dùng Jupyter Notebook để chạy từng đoạn code sẽ dễ debug hơn.
Google Suggest trả kết quả từ API không chính thức:
http://suggestqueries.google.com/complete/search?client=firefox&hl=vi&q={keyword}
Bạn viết một hàm như sau:
import requests
def crawl_google(keyword):
url = f"http://suggestqueries.google.com/complete/search?client=firefox&hl=vi&q={keyword}"
res = requests.get(url)
if res.status_code == 200:
return res.json()[1]
return []
→ Dấu hiệu đúng: API trả về list gợi ý; độ dài > 0.
Bạn có thể chạy hàng loạt seed keywords:
import pandas as pd
seed_keywords = ['giày thể thao', 'lập trình python', 'máy ảnh du lịch']
results = []
for kw in seed_keywords:
suggestions = crawl_google(kw)
for sug in suggestions:
results.append({'seed': kw, 'suggestion': sug})
df = pd.DataFrame(results)
df.to_csv('google_suggest.csv', index=False)
→ Mục tiêu: Có file google_suggest.csv chứa toàn bộ kết quả crawl.
YouTube sử dụng endpoint:
http://suggestqueries.google.com/complete/search?client=firefox&ds=yt&hl=vi&q={keyword}
Thay đổi nhỏ ở tham số ds=yt:
def crawl_youtube(keyword):
url = f"http://suggestqueries.google.com/complete/search?client=firefox&ds=yt&hl=vi&q={keyword}"
res = requests.get(url)
if res.status_code == 200:
return res.json()[1]
return []
→ Mẹo: Có thể gộp kết quả Google và YouTube vào một file Excel đa sheet.
Thêm delay giữa mỗi request để tránh bị block:
import time
for kw in seed_keywords:
time.sleep(1.5)
...
→ Mẹo: Nếu crawl quá nhiều, nên dùng proxy hoặc random user-agent nâng cao.
Crawl từ khóa nghe có vẻ đơn giản, nhưng tại sao nhiều người lại không thu được dữ liệu? Dưới đây là những lỗi phổ biến bạn cần tránh nếu không muốn mất hàng giờ mà không ra kết quả nào.
Nhiều bạn quên thêm client=firefox hoặc ds=yt, dẫn đến API không trả về đúng định dạng. Đặc biệt với YouTube, phải có ds=yt mới nhận được gợi ý video.
Khi mạng chập chờn hoặc server trả về mã lỗi (400/403), bạn cần bắt lỗi để không làm hỏng toàn bộ vòng lặp:
try:
res = requests.get(url, timeout=5)
except requests.exceptions.RequestException:
continue
Nếu bạn gửi quá nhiều request trong thời gian ngắn, Google hoặc YouTube có thể tạm chặn IP. Hãy luôn sleep() sau mỗi lần crawl hoặc sử dụng proxy nếu cần scale lớn.
Từ khóa tiếng Việt phải được encode đúng:
from urllib.parse import quote
url = f"...?q={quote(keyword)}"
Nếu không encode, ký tự đặc biệt như dấu cách, dấu nháy sẽ làm lỗi URL hoặc trả về gợi ý sai.
Tháng trước, một bạn junior SEO trong team mình tự viết script Python để crawl từ khóa. Sau 2 giờ chạy, bạn ấy ra được 0 dòng dữ liệu. Lỗi không phải ở code, mà do không kiểm tra được những dấu hiệu cho thấy script hoạt động đúng. Dưới đây là cách bạn tránh sai lầm đó.
Dấu hiệu đơn giản nhưng quan trọng nhất là: danh sách kết quả từ API trả về không phải mảng trống. Nếu res.json()[1] == [], có thể do:
Sau khi crawl, hãy mở file google_suggest.csv hoặc youtube_suggest.csv. Kiểm tra:
Ví dụ kết quả đúng:
|
seed |
suggestion |
|---|---|
|
giày thể thao |
giày thể thao nike |
|
giày thể thao |
giày thể thao nữ đẹp |
Kiểm tra status_code == 200. Nếu thấy nhiều lỗi 403 Forbidden hoặc 429 Too Many Requests, nghĩa là bạn bị chặn do gửi quá nhiều request trong thời gian ngắn. Hãy dùng time.sleep() hoặc random proxy.
Luôn in log tiến trình crawl để biết script đang chạy tới đâu:
print(f"Crawling: {keyword} - Found {len(suggestions)} results")
Điều này giúp bạn debug dễ nếu script dừng giữa chừng hoặc không phản hồi.
Một đoạn script cơ bản giúp bạn crawl gợi ý từ Google/YouTube. Nhưng nếu bạn muốn scale lớn, tránh trùng lặp, lưu trữ có hệ thống, thì 5 cách cải tiến sau đây sẽ nâng cấp script của bạn lên tầm chuyên nghiệp.
Thêm hậu tố từ A–Z để mở rộng gợi ý:
for kw in seed_keywords:
for ch in 'abcdefghijklmnopqrstuvwxyz':
full_kw = f"{kw} {ch}"
suggestions = crawl_google(full_kw)
→ Hiệu quả: mở rộng hàng chục lần số gợi ý từ mỗi seed keyword.
Bạn có thể tạo một dict:
{
"giày thể thao": {
"google": [...],
"youtube": [...]
}
}
→ Giúp so sánh keyword nào phổ biến hơn trên từng nền tảng.
Dùng set() để loại bỏ từ khóa trùng lặp trong kết quả crawl:
seen = set()
for suggestion in suggestions:
if suggestion not in seen:
seen.add(suggestion)
...
Tích hợp fake_useragent, requests.Session() và proxy list giúp tránh bị block khi scale lớn. Thư viện hỗ trợ: fake_useragent, httpx, requests-html.
Thay vì chỉ lưu vào CSV, bạn có thể đẩy dữ liệu thẳng lên Google Sheet:
→ Rất hữu ích nếu làm việc theo nhóm hoặc báo cáo cho khách hàng.
Dù crawl đúng từ khóa là điều cần thiết, nhưng nếu không lưu trữ và xử lý dữ liệu đầu ra đúng cách, toàn bộ quá trình crawl gần như trở nên vô dụng. Việc xuất dữ liệu ra file rõ ràng không chỉ giúp bạn phân tích sâu hơn mà còn dễ tích hợp vào hệ thống nội bộ hoặc báo cáo khách hàng.
df = pd.DataFrame(results)
df.to_csv('keyword_google.csv', index=False)
→ File này mở bằng Excel, Google Sheets hoặc upload vào Looker Studio để trực quan hóa.
with pd.ExcelWriter('keywords_all.xlsx') as writer:
df_google.to_excel(writer, sheet_name='Google', index=False)
df_youtube.to_excel(writer, sheet_name='YouTube', index=False)
→ Giúp bạn theo dõi và trình bày keyword theo từng nền tảng riêng biệt.
import json
with open('keywords.json', 'w', encoding='utf-8') as f:
json.dump(results, f, ensure_ascii=False, indent=2)
→ Định dạng JSON đặc biệt hữu ích nếu bạn dùng kết hợp với JavaScript, REST API hoặc Firebase.
Một số IDE hoặc hệ điều hành sẽ gây lỗi font khi không lưu file đúng UTF-8:
open('filename.csv', 'w', encoding='utf-8-sig')
→ Thêm utf-8-sig đảm bảo mở bằng Excel không bị lỗi dấu tiếng Việt.
Crawl từ khóa bằng Python là phương pháp linh hoạt, hiệu quả cao và tiết kiệm chi phí cho cả SEOer lẫn developer. Khi đã hiểu rõ cách hoạt động và cấu trúc dữ liệu, bạn hoàn toàn có thể tự động hóa toàn bộ quy trình nghiên cứu từ khóa. Hãy bắt đầu từ những script cơ bản và nâng cấp dần để tối ưu hệ thống nội dung của bạn.
Không bắt buộc nếu bạn crawl ít và có thêm sleep(). Tuy nhiên, với crawl quy mô lớn hoặc chạy hàng loạt, nên dùng proxy để tránh bị Google hoặc YouTube chặn IP.
Cả hai dùng cùng endpoint nhưng khác tham số. Với YouTube cần thêm ds=yt, còn Google để mặc định client=firefox là đủ.
Không. Google Suggest chỉ cung cấp gợi ý từ khóa, không có search volume. Muốn có volume, cần kết hợp thêm API của Ahrefs, SEMrush hoặc Google Ads Keyword Planner.
Không trực tiếp, nhưng có thể điều chỉnh endpoint và cách bóc JSON phù hợp với các nền tảng khác. Tuy nhiên, nhiều trang như Amazon sẽ cần dùng Selenium.
Không giới hạn cụ thể, nhưng nếu bạn gửi quá nhiều request liên tục, rất dễ bị block tạm thời. Tốt nhất nên chia nhỏ danh sách seed, thêm delay và kiểm tra log thường xuyên.
Có. Bạn có thể dùng thư viện gspread hoặc Google Apps Script để đẩy dữ liệu trực tiếp lên Google Sheet sau mỗi lần crawl xong.