เคยไหมครับที่ต้องเข้าไปเช็คอันดับคีย์เวิร์ดทีละตัวใน Google... พิมพ์คีย์เวิร์ด แล้วนับว่าเว็บเราอยู่อันดับที่เท่าไหร่ ถ้ามี 50-100 คีย์เวิร์ด นี่เมื่อยมือแน่ ๆ และอาจจะมีความผิดพลาดได้อย่างแน่นอน
ซึ่งการจะใช้เครื่องมือสำเร็จรูป เครื่องมือชั้นนำไม่ว่าจะเป็น Semrush, Ahrefs หรือตัวอื่น ๆ ก็แพงมาก บางตัวเดือนละ 3,000-5,000 บาท สำหรับ Freelancer หรือธุรกิจเล็ก ๆ ถือว่าเป็นต้นทุนที่สูงเลยครับ
ตัวอย่างเช่นเครื่องมือ track อันดับของ Semrush ด้านล่าง เราต้องจ่ายหลายพันบาทต่อเดือนนะครับ จะได้ใช้เครื่องมือพวกนี้ ซึ่งปกติคนที่เป็น SEO Consult ก็ต้องจ่ายค่าเครื่องมือพวกนี้เป็นเรื่องปกติอยู่แล้วแหละ

Position Tracking ของ Semrush
แต่ถ้าเป็นเจ้าของเว็บเล็ก ๆ หรือต้องการ track คีย์เวิร์ดไม่เยอะล่ะ มันจะเป็นไปได้ไหม จะมีเครื่องมืออะไรที่เหมาะกับ requirement ประมาณนี้
ผมก็เลยรีเสิร์ช จนได้พัฒนาเจ้าเครื่องมือตัวที่เห็นในภาพนี้มาครับ (เดี๋ยวผมจะมีอธิบายด้านล่างว่า ผมใช้ tech stack อะไรบ้าง และการติดตั้งใช้งานต่าง ๆ ทำได้อย่างไรบ้าง

หน้าตาของ Rank Tracker ตัวนี้
ที่มาของการพัฒนา SEO Rank Tracker
จากประสบการณ์ให้คำปรึกษา SEO มาหลายปี ผมเจอปัญหาเดิม ๆ คือ
- ลูกค้าอยากรู้ว่าคีย์เวิร์ดขึ้นหรือลง ต้องมานั่งเช็คทีละตัว
- เครื่องมือที่มีอยู่แพงเกินไป โดยเฉพาะถ้าต้องการติดตามหลายเว็บ
- ไม่มีรายงานที่เข้าใจง่าย ต้องมา export แล้วทำใหม่เอง
- ข้อมูลอยู่ในระบบของเขา เราดึงออกมาวิเคราะห์ต่อยาก
พอดีผมมีพื้นฐานการเขียนโปรแกรม เลยตัดสินใจทำเครื่องมือขึ้นมาใช้เอง แล้วคิดว่าน่าจะมีคนต้องการแบบนี้เหมือนกัน ก็เลยทำเป็น Open Source แจกฟรีเลยครับ (และเพื่อน ๆ สามารถเข้ามาร่วมพัฒนาได้เช่นกันครับได้ใน repository นี้ที่ชื่อว่า "cm-seo-rank-tracker")

ซอร์สโค้ด
SEO Rank Tracker ทำอะไรได้บ้าง?
1. ตรวจสอบอันดับอัตโนมัติทุกสัปดาห์
ระบบจะตรวจสอบอันดับคีย์เวิร์ดที่เราตั้งไว้ทุกวันจันทร์เช้า ไม่ต้องมานั่งเช็คเอง ใช้ SerpAPI ในการดึงข้อมูล (เหมือนกับที่ Ahrefs หรือ SEMrush ใช้) ได้ผลลัพธ์ที่แม่นยำ
2. ส่งรายงานทางอีเมลอัตโนมัติ
ทุกวันจันทร์ 9 โมงเช้า ระบบจะส่งรายงานสรุปมาให้ ในรายงานจะมี
- คีย์เวิร์ดไหนขึ้น (สีเขียว + ลูกศรขึ้น)
- คีย์เวิร์ดไหนลง (สีแดง + ลูกศรลง)
- คีย์เวิร์ดที่เพิ่งติดอันดับใหม่
- สรุปภาพรวมว่าเว็บเราแข็งแรงขึ้นหรือไม่
รายงานออกแบบมาสวยงาม ส่งให้ลูกค้าได้เลยไม่ต้องแก้อะไร
3. ดูข้อมูลผ่านหน้าเว็บ Dashboard
นอกจากรายงานอีเมล ยังมีหน้าเว็บให้เข้าไปดูข้อมูลแบบ real-time ได้ด้วย มี
- กราฟแสดงการเปลี่ยนแปลงของแต่ละคีย์เวิร์ด
- ประวัติอันดับย้อนหลังได้ 1 ปี
- ฟิลเตอร์ดูเฉพาะคีย์เวิร์ดที่สนใจ
วิธีติดตั้งแบบง่าย ๆ (ไม่ต้องเป็น Programmer ก็ทำได้)
ผมทำให้ติดตั้งง่ายที่สุดแล้วครับ ใช้ Docker ช่วย ไม่ต้องลงโปรแกรมเยอะ
ขั้นตอนที่ 1: เตรียมของ
- คอมพิวเตอร์ที่ลง Docker ได้ (Windows, Mac, Linux ได้หมด)
- SerpAPI Key (สมัครฟรีได้ มี credit ให้ทดลอง)
- Gmail สำหรับส่งรายงาน
เพื่อน ๆ สามารถทำความเข้าใจเกี่ยวกับ Docker เพิ่มเติมได้ใน Docker Tutorial
และสมัครใช้งานอีกพระเอกของเรา นั่นก็คือ SerpApi

Serpapi
หลังจากลงทะเบียนเสร็จเลือก Free Plan ได้เลยครับ

เลือก Free Plan ก่อนละกันเนอะ
ยืนยันอีเมลและหมายเลขโทรศัพท์ตามที่ Serpapi ขอมา ก็เป็นอันเสร็จสิ้น จะเข้าสู่หน้าแดชบอร์ด พร้อมได้ API Key

สมัครรับ API Key
ขั้นตอนที่ 2: ดาวน์โหลดโค้ดมาเก็บในเครื่องของเรา
ส่วนนี้จะเป็นการโคลน พูดง่าย ๆ ก็คือ copy หรือดาวน์โหลดโค้ดมาเก็บไว้ในเครื่องเราเพื่อให้รันได้นั่นเองครับ ถ้าเพื่อน ๆ ที่ยังไม่รู้ว่า Git คืออะไร สามารถศึกษาเพิ่มเติมได้จากวิดีโอนี้กับ Git 101
git clone https://github.com/son-content-mastery/cm-seo-rank-tracker
cd seo-rank-tracker
ขั้นตอนที่ 3: ตั้งค่า
ส่วนนี้จะเป็นการใช้คำสั่ง cp นั่นก็คือ copy ไฟล์ .env.example .env.example มาและสร้าง .env ขึ้นมาครับ (หรือไม่จำเป็นต้องใช้คำสั่งนี้ครับ กดบนหน้าโปรแกรม Visual Studio Code 2 เลือกสร้างไฟล์ใหม่ขึ้นมาก็ได้เช่นกันครับ
cp .env.example .envหรือจะสร้าง New File ขึ้นมาใหม่ ก็ตามสะดวกเลยครับ ต่างกันแค่การคลิก UI กับใช้บน Terminal แค่นั้นแหละเนอะ

แก้ไขไฟล์ .env ใส่ตัวแปรที่จำเป็นดังต่อไปนี้
-
SERPAPI_KEY= คีย์ที่ได้จาก SerpAPI -
GMAIL_USER= อีเมลที่จะใช้ส่งรายงาน -
GMAIL_APP_PASSWORD= รหัสผ่านแอพ (ไม่ใช่รหัสปกติ) -
TARGET_DOMAIN= เว็บที่ต้องการติดตาม เช่น example.com -
RECIPIENT_EMAIL= อีเมลที่จะรับรายงาน (ใช้เมลส่วนตัวของเรานั่นแหละ)
ไฟล์ .env ตัวอย่าง
# Database Configuration DATABASE_URL=postgresql://seo_user:seo_password@localhost:5432/seo_tracker # API Keys SERPAPI_KEY=your_serpapi_key_here # Email Configuration (Gmail) GMAIL_USER=[email protected] GMAIL_APP_PASSWORD=wqyzgvbnjmpxfhtdSMTP_SERVER=smtp.gmail.com SMTP_PORT=587 # Application Configuration FLASK_ENV=production SECRET_KEY=your_secret_key_here_change_in_production REDIS_URL=redis://localhost:6379/0 # SEO Configuration TARGET_DOMAIN=contentmastery.io RECIPIENT_EMAIL=[email protected]
สำหรับการสร้าง API Key ของ GMAIL_APP_PASSWORD (จะได้ API Key จำนวน 16 ตัวอักษร) ดูได้จากวิดีโอนี้ครับ How to Create Gmail App Password
ขั้นตอนที่ 4: รันระบบ
รัน docker ได้เลยครับ
docker-compose upหรือจะรันทิ้งไว้แบบ background ก็เพิ่ม flag -d เข้าไป
docker-compose up -dพอรันจะได้ประมาณนี้ครับ
sonny@MacBook-Pro-khxng-sonny seo-rank-tracker % docker compose up
WARN[0000] The "GMAIL_APP_PASSWORD" variable is not set. Defaulting to a blank string.
WARN[0000] The "GMAIL_APP_PASSWORD" variable is not set. Defaulting to a blank string.
WARN[0000] The "GMAIL_APP_PASSWORD" variable is not set. Defaulting to a blank string.
[+] Running 6/6
⠿ Network seo-rank-tracker_default Created 0.2s
⠿ Container seo-rank-tracker_redis_1 Created 0.1s
⠿ Container seo-rank-tracker_db_1 Created 0.1s
⠿ Container seo-rank-tracker_scheduler_1 Created 0.1s
⠿ Container seo-rank-tracker_web_1 Created 0.1s
⠿ Container seo-rank-tracker_worker_1 Created 0.1s
Attaching to db_1, redis_1, scheduler_1, web_1, worker_1Gmail ยังไม่ได้ set ค่านะครับ เดี๋ยวผมจะมาอัปเดตให้ภายหลังส่วนนี้ แต่เดี๋ยวให้เพื่อน ๆ track พวกคีย์เวิร์ดให้ได้ก่อนครับ
เสร็จแล้ว! เปิดเว็บเบราว์เซอร์ไปที่ http://localhost:5000 ได้เลย
โครงสร้างระบบ (สำหรับคนที่สนใจด้าน Technical)
Stack ที่ผมใช้มีดังต่อไปนี้ครับ
- Flask (Python) - ทำหน้าเว็บและ API
- PostgreSQL - ฐานข้อมูลสำหรับเก็บข้อมูลอันดับและประวัติ
- Redis - ทำ Queue และ Cache
- Celery - จัดการงานเบื้องหลัง (Background Task)
- Docker - ทำให้ติดตั้งง่าย (ไม่ต้องติดตั้งทีละเครื่องมือแบบ manual)
ทุกอย่างแยก Container เป็นแต่ละ service ชัดเจน อัพเดทหรือแก้ไขง่าย
อันนี้แหละครับ Flask อีกเว็บเฟรมเวิร์คของภาษา Python ยอดนิยมอีกตัว ที่เบา และเขียนได้ค่อนข้างยืดหยุ่นและสนุกครับ เหมาะกับทำโปรเจคท์ประมาณนี้เลย (แต่ถ้าเขียนพวกทำเว็บไซต์ ผมจะใช้อีกตัวคือ Django)

Flask เฟรมเวิร์ค
ค่าใช้จ่ายจริง ๆ เท่าไหร่?
ตัวโปรแกรมฟรี 100% (Open Source) แต่จะมีค่าใช้จ่ายจาก SerpAPI ครับ
- แพ็คเกจ Hobby: $50/เดือน ได้ 5,000 searches
- ถ้าติดตาม 100 คีย์เวิร์ด x 4 สัปดาห์ = 400 searches/เดือน
- คิดเป็นค่าใช้จ่ายประมาณ $4/เดือน หรือ 140 บาท
เทียบกับเครื่องมือในตลาดที่เดือนละ 3,000-5,000 ถือว่าประหยัดมากครับ
ในบทความนี้เราใช้ Free Plan ของ Serpapi ครับ ซึ่งใช้ได้ฟรี100250 searches/requests (อัปเดตล่าสุดได้เพิ่มเป็น 250 searches) ต่อเดือนครับ เอาง่าย ๆ ก็คือถ้าเราต้องการ track 50-60 คีย์เวิร์ด/สัปดาห์ได้สบาย ๆ
ข้อดีเทียบกับเครื่องมือในตลาด
- ประหยัดค่าใช้จ่าย - จ่ายแค่ค่า API ไม่มีค่า subscription แพง ๆ
- Custom ได้ตามใจ - อยากเพิ่มฟีเจอร์อะไรก็ทำได้
- มี API ให้ใช้ - เอาข้อมูลไปต่อยอดได้
ข้อจำกัดที่ควรรู้
- ต้องมีเซิร์ฟเวอร์หรือคอมที่เปิดทิ้งไว้ได้ - หรือจะใช้ VPS ราคา 200-300 บาท/เดือนก็ได้ ซึ่งมีอีกตัวที่แนะนำคือ DigitalOcean สำหรับทำเซิร์ฟเวอร์ที่เราจะเปิดรันไว้ตลอด
- ต้องมีความรู้พื้นฐานบ้าง - การติดตั้งไม่ยาก แต่ถ้าเจอปัญหาต้องแก้เองได้
- ไม่มีฟีเจอร์ครบเท่าเครื่องมือใหญ่ ๆ - โฟกัสแค่ rank tracking อย่างเดียวเด้อ
ใครเหมาะกับเครื่องมือนี้
- SEO Freelancer ที่ดูแลหลายเว็บ ต้องการประหยัดต้นทุน
- เอเจนซี่ขนาดเล็ก ที่อยากมีระบบเป็นของตัวเอง
- เจ้าของเว็บ ที่มีพื้นฐาน technical และอยากประหยัด
- Developer ที่ทำ SEO ด้วย อยาก custom เครื่องมือได้เอง
Tips การใช้งานให้คุ้มค่า
- เลือกคีย์เวิร์ดที่สำคัญจริง ๆ - ไม่ต้องติดตามทุกคีย์ เลือกแค่ที่ทำเงินให้
- ตั้ง Alert สำหรับคีย์เวิร์ดสำคัญ - ถ้าตกอันดับให้แจ้งเตือนทันที
- ดูแนวโน้มมากกว่าตัวเลข - อันดับขึ้นลง 1-2 ไม่ต้องตื่นเต้น ดู trend ดีกว่า
- Export ข้อมูลทำรายงาน - ดึงข้อมูลไปทำกราฟสวยๆ ใน Excel หรือ Data Studio
สรุป
SEO Rank Tracker เป็นเครื่องมือที่ผมสร้างขึ้นเพื่อแก้ปัญหาที่เจอในการทำงานจริง อาจจะไม่มีฟีเจอร์เยอะเท่าเครื่องมือราคาแพง แต่ทำงานหลักได้ดี ประหยัดค่าใช้จ่าย และที่สำคัญคือเป็นของเราเอง
ถ้าใครกำลังมองหาเครื่องมือติดตามอันดับที่ประหยัด ลองเอาไปใช้ดูนะครับ ฟรี 100% ถ้าชอบก็แชร์ต่อให้เพื่อน ๆ ได้ใช้กัน
สำหรับใครที่ไม่อยากติดตั้งเอง อยากให้ผมช่วย setup หรือ customize ก็ติดต่อมาได้นะครับ ยินดีให้คำปรึกษา
ปล. ถ้าใครใช้แล้วเจอบัคหรืออยากให้เพิ่มฟีเจอร์อะไร บอกมาได้เลยครับ หรือจะ contribute code มาช่วยกันพัฒนาก็ยินดีมากครับ นี่คือพลังของ Open Source