Công cụ sau giúp xác định vị trí của các từ khóa tương ứng với danh sách các domain trên Google. Khá hữu dụng trong công cuộc làm SEO.
Công cụ này yêu cầu sử dụng script googler
của Mischievous Meerkat, có thể tải bản mới nhất từ GitHub.
Googler viết bằng ngôn ngữ Python là công cụ cho phép thực hiện tìm kiếm Google từ dòng lệnh.
$ wget https://raw.githubusercontent.com/jarun/googler/master/googler -O ~/bin/googler
Mã nguồn seo.sh
dưới đây sử dụng googler
tìm kiếm ẩn danh để xác định vị trí tìm kiếm của từ khóa theo domain trên Google.
Thông tin kỹ thuật
Với mỗi từ khóa, seo.sh
sẽ tìm kiếm ẩn danh 50 kết quả gần nhất (tương ứng với 5 trang, thiết đặt trong biến max_pages
). Sau đó kiểm tra từng tên miền đầu vào xem từ khóa này với tên miền đó đang ở vị trí thứ mấy, trang bao nhiêu rồi ghi ra STDOUT dưới dạng CSV.
Nếu từ khóa / tên miền không nằm trong 50 kết quả đầu tiên thì giá trị vị trị và trang sẽ là 0.
Để đánh lừa Google Checkpoint, một khoảng thời gian đợi ngẫu nhiên sẽ chen vào giữa các lần tìm kiếm. Vì vậy nếu có nhiều từ khóa thì thời gian chờ đợi script cũng đáng kể.
Để file CSV có thể hiển thị Unicode trong Excel, một chuỗi BOM (Byte Order Mark) sẽ được ghi vào đầu file đầu ra.
~/bin/seo.sh
#!/bin/bash # seo.sh [DOMAINS…] < [KEYWORD LIST] > [CSV FILE] # @author: Nguyen Hong Hai # max_pages=5 country=vn max_results=$((max_pages*10)) cwd="$(readlink -f "$(dirname "$(which "$0")")")" googler="${cwd}/googler" is_first=true csvstr() { echo "$@" | sed -e 's/"/""/g;s/^/"/;s/$/"/'; } check() # { local domain="${1}" local url="${2}" echo "${url}" | grep -qE "://([[:alnum:]-]+\.)?${domain}/" } dump() { local domain="${1}" local keyword="${2}" local position="${3}" local url="${4}" local title="${5}" if [ ${position} -ge 0 ]; then echo "${domain},$(csvstr "${keyword}"),$((position/10+1)),$((position+1)),$(csvstr ${title}),${url}" else echo "${domain},$(csvstr "${keyword}"),0,0,," fi } # Print the BOM (Byte order mark) printf '\xEF\xBB\xBF' while read keyword; do # skip blank lines [ -z "${keyword}" ] && continue # random waiting time $is_first || sleep $((30 + RANDOM % 30)) is_first=false exec 3< <("${googler}" -c ${country} -C -n ${max_results} --np "${keyword}") titles=() urls=() count=0 # collect the heading lines & urls from the results while read -u 3 line; do count=$((count+1)) if [ -z "${line}" ]; then count=0 elif [ ${count} -eq 1 ]; then titles+=("$( echo ${line} | cut -d " " -f2- )") elif [ ${count} -eq 2 ]; then urls+=("${line}") fi done for domain in "$@"; do found=false # find the domain name in the results for ((i = 0; i < ${#urls[@]}; i++)); do if check "${domain}" "${urls[$i]}"; then dump "${domain}" "${keyword}" ${i} "${urls[$i]}" "${titles[$i]}" found=true fi done if ! ${found}; then dump "${domain}" "${keyword}" -1 fi done done
Phân quyền executable cho seo.sh
.
$ chmod +x ~/bin/seo.sh
Cách sử dụng
Bước 1: Tạo một file text chứa danh sách từ khóa, mỗi từ khóa một dòng. Ví dụ
keywords.txt
công cụ seo phần mềm seo seo vua
Bước 2: Truyền danh sách domain và file keywords.txt vào lệnh seo.sh, chỉ định file đầu ra, ví dụ output.csv
(nếu không có thì ghi ra STDOUT) để bắt đầu dò tìm.
$ seo.sh domain1.com domain2.com domain3.com < keywords.txt > output.csv
Kết quả file CSV đầu ra output.csv
sẽ có format theo các cột như sau
Domain | Keyword | Position | Page | Meta Title | URL
Ví dụ một kết quả đầu ra như sau:
domain1.com,"công cụ seo",2,1,"Tiêu đề công cụ SEO",https://domain1.com/cong-cu-seo