AUTOMATION SCRIPT · v1.5.0

📸 Mandala Capture

CLI อัตโนมัติที่ใช้ Playwright แคปโพสจาก Mandala Cosmostrend — แบ่งหมวดหมู่ ครั้งละ 150 โพส พร้อม Retina @2x, Colored UI และ Interactive Prompts

Playwright Node.js Interactive CLI ANSI Colors Automation

Version History

จาก script ง่ายๆ จนกลายเป็น CLI เต็มรูปแบบ

v1.5.0
Pre-flight Checklist — ตรวจ Node.js, Playwright, Chromium, Login session อัตโนมัติก่อนเริ่มงาน
v1.3.x
Colored UI — ANSI colors, progress bar สี (แดง→เหลือง→ฟ้า→เขียว), รองรับ terminal ขาว+ดำ
v1.2.0
Folder Picker — เลือกโฟลเดอร์บันทึกผ่าน native dialog (Mac/Windows), Login timeout 15 นาที
v1.1.0
Persistent Login — Login ครั้งเดียว จำ session ไว้, รองรับ Mac + Windows
v1.0.0
First Release — แคปโพส 4 หมวด, ภาพ @2x retina, แยกโฟลเดอร์ตามวันที่

Problem

ทำไมต้องสร้าง Script นี้ขึ้นมา?

แคปรูปทีละโพส ใช้เวลานานมาก

Mandala Cosmostrend แสดงโพสโซเชียลเป็น card — ต้องแคปทีละโพส, เลื่อนหน้า, รอโหลด, crop ให้ตรง ทำ 150 โพสต่อหมวด x 4 หมวด = 600 รูป ใช้เวลาเกือบทั้งวัน

ก่อนมี Script: ใช้เวลา ~6 ชั่วโมง สำหรับ 600 โพส

ต้องแคปเป็นรูปสวย ไม่ใช่ raw data

ทีมต้องการ screenshot ของ post card จริงๆ ไม่ใช่แค่ export CSV — เพราะต้องเอาไปวิเคราะห์ visual content, engagement pattern และ format ของแต่ละโพส


Solution

Playwright + Node.js = แคปอัตโนมัติแบบ Headless

Checklist
📁Pick Folder
🔐Login
📂Categories
📸Capture
💾Save @2x

v1.5.0 — Full Interactive CLI


Configuration

ตั้งค่าผ่าน config.json ไฟล์เดียว

config.json
{
  "url": "https://www.mandala-analytics.com/cosmostrend",
  "duration": "7 วัน",
  "postsPerCategory": 150,
  "categories": [
    { "name": "การเดินทางและการท่องเที่ยว", "folder": "travel" },
    { "name": "อาหารและเครื่องดื่ม", "folder": "food" },
    { "name": "ดวงและความเชื่อ", "folder": "horoscope" },
    { "name": "วิทยาศาสตร์และเทคโนโลยี", "folder": "scitech" }
  ]
}

In Action

ตัวอย่าง output เมื่อรัน script

Terminal
███╗ ███╗ █████╗ ███╗ ██╗██████╗ █████╗ ██╗ █████╗
████╗ ████║██╔══██╗████╗ ██║██╔══██╗██╔══██╗██║ ██╔══██╗
██╔████╔██║███████║██╔██╗ ██║██║ ██║███████║██║ ███████║
██║╚██╔╝██║██╔══██║██║╚██╗██║██║ ██║██╔══██║██║ ██╔══██║
██║ ╚═╝ ██║██║ ██║██║ ╚████║██████╔╝██║ ██║███████╗██║ ██║
╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
C O S M O S T R E N D Auto Capture v1.5.0

┌─ Release Notes ────────────────────────────┐
v1.5.0 — Checklist ตรวจสอบก่อนเริ่ม
v1.3.x — UI สี, progress bar, รองรับ ขาว+ดำ
v1.2.0 — เลือกโฟลเดอร์ได้, Login 15 นาที
v1.0.0 — แคปโพส 4 หมวด, ภาพ @2x retina
└────────────────────────────────────────────┘

Checklist พร้อมใช้งาน
──────────────────────────────────────────
Node.js v20.11.0
Playwright installed
Chromium installed
Login session จำไว้แล้ว (ไม่ต้อง login ใหม่)

Configuration
──────────────────────────────────────────
📅 วันที่ 2026-03-11
ระยะเวลา 7 วัน
📊 โพสต่อหมวด 150
📂 หมวดหมู่ travel · food · horoscope · scitech

[Enter] เริ่มต้นใช้งาน | [q] ออก:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📂 [1/4] การเดินทางและการท่องเที่ยว
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
เลือกหมวดแล้ว
⏳ รอข้อมูลโหลด...
██████████████████████████████ 100% (150/150)
✔ เสร็จ: 150 โพสtravel/

╔══════════════════════════════════════════╗
🎉 เสร็จทั้งหมด!
╚══════════════════════════════════════════╝

📁 captures/2026-03-04_2026-03-11/
└─ travel/ (150 โพส)
└─ food/ (150 โพส)
└─ horoscope/ (150 โพส)
└─ scitech/ (150 โพส)

ใช้เวลา: 12 นาที 34 วินาที
📊 รวม: 600 ภาพ
📐 คุณภาพ: @2x retina

Key Features

ฟีเจอร์ที่ออกแบบมาแก้ปัญหาจริง

✅ Pre-flight Checklist

ตรวจสอบ Node.js, Playwright, Chromium และ Login session อัตโนมัติก่อนเริ่มงาน — ถ้าขาดอะไรจะบอกทันทีพร้อมวิธีแก้

🎮 Interactive Prompts

[Enter] เริ่มใช้งาน, [q] ออก, [f] เปิด Finder/Explorer เลือกโฟลเดอร์ — ใช้งานง่ายแม้ไม่คุ้น terminal

📁 Native Folder Picker

เปิดหน้าต่างเลือกโฟลเดอร์แบบ native — Mac ใช้ AppleScript, Windows ใช้ PowerShell — เลือกที่บันทึกได้เลยไม่ต้องพิมพ์ path

🎨 Colored Progress Bar

Progress bar เปลี่ยนสีตาม % — แดง (<30%), เหลือง (<60%), ฟ้า (<90%), เขียว (100%) พร้อม ASCII art logo แบบ gradient

🔐 Persistent Login — 15 นาที Timeout

ใช้ launchPersistentContext เก็บ session ไว้ ครั้งแรก login ผ่าน Google OAuth + 2FA มีเวลา 15 นาที ครั้งต่อไปไม่ต้อง login ใหม่

🧹 ซ่อน UI ที่ไม่ต้องการ

Inject CSS ซ่อน navbar, sidebar, cookie banner, floating button + ตรวจจับ fixed elements — ได้ screenshot สะอาด


Results

ผลลัพธ์เทียบกับทำมือ

600
โพสต่อรอบ
4
หมวดหมู่
~12
นาที (จาก 6 ชม.)
@2x
Retina Quality

Learnings

สิ่งที่ได้เรียนรู้จากโปรเจกต์นี้

Playwright เทพกว่า Puppeteer สำหรับงาน scraping — Persistent context, auto-wait, locator API ทำให้โค้ดสั้นและเสถียรกว่ามาก ไม่ต้องเขียน sleep/retry เอง
Config-driven ดีกว่า Hard-code — แยก config.json ออกมา ทำให้คนอื่นในทีมแก้หมวดหมู่/จำนวนโพสได้เอง โดยไม่ต้องแตะโค้ด
Interactive CLI สำคัญกว่าที่คิด — เพิ่ม [Enter]/[q]/[f] prompts ทำให้คนที่ไม่คุ้น terminal ใช้งานได้ทันที Pre-flight checklist ลดปัญหา "รันแล้ว error" ได้เยอะ
ANSI Colors ช่วยเรื่อง feedback — Progress bar สีเปลี่ยนตาม % ทำให้เห็น progress ชัด + ใช้สีเข้ม (dark foreground) รองรับทั้ง terminal ขาวและดำ
Native Dialog ดีกว่า path พิมพ์เอง — AppleScript (Mac) / PowerShell (Windows) เปิด folder picker ได้โดยไม่ต้องพึ่ง dependency เพิ่ม — cross-platform ง่ายกว่าที่คิด
Aw mascot

📸 จาก 6 ชั่วโมงเหลือ 12 นาที

สร้างขึ้นเพราะเบื่อที่จะนั่งแคปโพสทีละรูป — ตอนนี้แค่กด Enter แล้วไปชงกาแฟรอ

Playwright Node.js Interactive CLI ANSI Colors Retina @2x