การเปลี่ยนแหล่งข้อมูลสาธารณะให้เป็น Feed รายเดือน 29 ยูโร

ตารางข้อมูลในแล็ปท็อปและสเปรดชีตที่มีคำอธิบาย แสดงถึงการดึงและขายข้อมูลเฉพาะกลุ่ม

การขาย data เป็น subscription คือ side hustle AI ที่น่าเบื่อที่สุดที่ผมเคยทำ และมันคือสิ่งที่ให้กำไรสะอาดที่สุด สินค้าไม่ใช่ chatbot หรูหรา แต่เป็น spreadsheet ที่รีเฟรชตามกำหนดเวลาและส่งถึงกล่องจดหมายหรือ API ของผู้ซื้อ crawler มีขนาดเล็ก ตัวกรองทางกฎหมายเข้มงวด และรายชื่อลูกค้าสั้นแต่ภักดี ผมสร้างมันใน 4 สุดสัปดาห์ และมันทำงานแทบไม่ต้องแตะต้องมาเป็นเวลา 5 เดือนแล้ว นี่คือวิธีที่ผมเลือก niche วิธีที่ผมทำให้ถูกกฎหมาย และวิธีที่ผมหาผู้สมัครแรก

การทดสอบ niche ก่อนเขียนโค้ดใดๆ

data feed ที่ขายได้มีสามคุณสมบัติ: แหล่งข้อมูลเป็นสาธารณะ ข้อมูลเปลี่ยนแปลงบ่อยพอที่จะเหมาะกับ subscription และผู้ซื้อกำลังจ่ายเงินให้ใครบางคนสำหรับเวอร์ชันที่ด้อยกว่าอยู่แล้ว ผมตัดทิ้งทุกอย่างที่ล้มเหลวแม้เพียงข้อเดียว ผมคัดผู้สมัครโดยโพสต์ pitch สองบรรทัดในฟอรัมอุตสาหกรรมและ subreddit เล็กๆ ตัวกรองเดียวกับที่ผมใช้สำหรับการสมัคร AI chatbot หากผมไม่ได้รับคำตอบจริงจังอย่างน้อย 4 คำตอบภายใน 72 ชั่วโมง niche นั้นก็ตายทันที การสร้าง feed ที่ไม่มีใครขอคือรูปแบบความล้มเหลวที่ผมปฏิเสธที่จะทำซ้ำ

Checklist ทางกฎหมายที่ผมไม่ข้าม

นี่คือขั้นตอนที่ฆ่าโปรเจกต์ส่วนใหญ่ และถูกต้องแล้ว ก่อนที่ผมจะเขียนโค้ด crawler แม้บรรทัดเดียว ผมตอบคำถาม 5 ข้อเกี่ยวกับแหล่งข้อมูล ข้อมูลอยู่หลังหน้าล็อกอินหรือไม่? ข้อกำหนดการใช้บริการห้ามการเข้าถึงอัตโนมัติหรือไม่? robots.txt ยกเว้น path ที่ผมต้องการหรือไม่? อัตราการ crawl ของผมเกินกว่าที่ user agent ที่สุภาพจะทำหรือไม่? ผลลัพธ์เปิดเผยข้อมูลส่วนบุคคลในแบบที่ผู้เผยแพร่ต้นทางไม่ได้ทำหรือไม่? หากคำตอบใดไม่สบายใจ ผมก็ไปหาผู้สมัครคนต่อไป ผมเก็บบันทึกเป็นลายลักษณ์อักษรต่อแหล่งข้อมูล พร้อมวันที่ เพื่อว่าหากเกิดข้อพิพาทขึ้นมา ผมสามารถแสดงให้เห็นว่าได้ตรวจสอบแล้ว การรักษาความสะอาดทางกฎหมายนี้ทับซ้อนกับเอกสารที่ผมเก็บไว้สำหรับการพลิก domain เอกสารที่น่าเบื่อช่วยชีวิตคุณได้ในภายหลัง

สแตก ที่ตั้งใจให้เล็ก

VPS เล็กหนึ่งเครื่องที่ 6 ยูโร (~222 บาท) ต่อเดือน Python พร้อม requests และ selectolax สำหรับการ parse SQLite สำหรับ state proxy pool แบบ rotating residential ที่ 15 ยูโร (~555 บาท) ต่อเดือน cron job เดียวทุก 60 นาที ไม่มี Kafka ไม่มี queue ไม่มี microservice ต้นทุนโครงสร้างพื้นฐานรวม 21 ยูโร (~777 บาท) ต่อเดือน AI เข้ามาในสองที่เท่านั้น: แรก การร่าง extraction selector จากหน้าตัวอย่าง ซึ่งประหยัดเวลาประมาณ 3 ชั่วโมง สอง การทำให้ข้อความ free text ที่รกอย่างชื่อบริษัทและที่ตั้งเป็นระเบียบ ตัว crawler เองเป็น Python deterministic 380 บรรทัด โค้ดน่าเบื่อ แต่ debug ง่ายตอนตีสี่ตีห้าเมื่ออะไรพังขึ้นมา

  1. ดึงหน้ารายการ เปรียบเทียบกับ snapshot ล่าสุด และดึง URL รายการใหม่
  2. ดึงรายการใหม่แต่ละรายการ parse ข้อมูล และตรวจสอบประเภท
  3. ทำให้ข้อความ free text เป็นระเบียบด้วย LLM call ราคาถูก จำกัดต้นทุนที่ 0.002 ยูโรต่อแถว
  4. Deduplicate กับ SQLite โดยใช้ hash ของ payload ที่ทำให้เป็นระเบียบแล้ว
  5. เพิ่มใน CSV รายวัน และส่งให้ผู้สมัครผ่านอีเมลพร้อม JSON endpoint เล็กๆ

การตั้งราคา การแพ็กเกจ และผู้ซื้อ 14 คนแรก

ผมตั้งราคา 29 ยูโร (~1,073 บาท) ต่อเดือนตั้งแต่วันแรก โดยไม่มีทดลองใช้ฟรี การทดลองฟรีจะดึงคนที่แค่มาดูแต่ไม่ซื้อ และสินค้านี้อยู่รอดด้วยผู้ซื้อที่รู้ปัญหาอยู่แล้ว ผู้สมัครสามคนแรกมาจากฟอรัมเดียวกับที่ผมทดสอบ pitch ต่อมาอีกแปดคนมาจากอีเมลเย็นชุดเดียวที่ผมส่งไปยังเอเจนซีเล็กๆ 40 แห่งที่ชัดเจนว่ากำลังทำงานแบบเดียวกันด้วยมือ อัตราการตอบกลับ 28% อัตราการปิดการขายจากการตอบกลับ 25% สามคนที่เหลือพบผมผ่านการค้นหาหลังจากบทความสั้นสองบทความที่ผมโพสต์ รายได้ในเดือนที่ 5: 406 ยูโร (~15,020 บาท) ต่อเดือน ต้นทุน 21 ยูโร infrastructure (~777 บาท) บวกประมาณ 85 ยูโร (~3,145 บาท) ของการใช้ token และ proxy ในเดือนที่หนักที่สุด กำไรสุทธิประมาณ 300 ยูโร (~11,100 บาท) นั่นคือกำไร 74% จากสินค้าที่ใช้เวลาบำรุงรักษาประมาณ 90 นาทีต่อสัปดาห์ เศรษฐกิจต่อหน่วยใกล้เคียงกับnewsletter แบบจ่ายเงินของผมมากกว่า AI wrapper ส่วนใหญ่

การบำรุงรักษา สิ่งที่ไม่มีใครแสดงในหน้าขาย

ทุกวันอังคารตอนเย็น ผมเปิด dashboard ดู error log อย่างรวดเร็ว และแก้ไขสิ่งที่เปลี่ยนแปลงไป ใน 5 เดือน ผมแตะ selector 4 ครั้ง สองครั้งเป็นการปรับ layout เล็กน้อยในแหล่งข้อมูล หนึ่งครั้งเป็น 403 เงียบที่ต้องการ user agent rotation ใหม่ หนึ่งครั้งเป็นการเปลี่ยน schema ที่ทำให้เสียเวลาเต็มคืน ผมวางงบ 90 นาทีต่อสัปดาห์และใช้จริงประมาณ 60 นาทีโดยเฉลี่ย หากไม่มีช่วงเวลาคงที่นั้น feed จะเน่าเสียภายในไตรมาส ซึ่งเป็นรูปแบบความล้มเหลวที่ผมเตือนเกี่ยวกับhub AI Side Hustles

คำแนะนำหายากของจอห์น

ขาย schema ไม่ใช่การขูด

ผู้ซื้อไม่สนใจว่าคุณขูดข้อมูล พวกเขาสนใจว่า output ของคุณเป็น schema สะอาดและเสถียรที่พวกเขาสามารถนำไปใส่ใน tool ของตัวเองได้โดยไม่ต้องเปลี่ยนชื่อคอลัมน์ ผมเผยแพร่ schema บนหน้าขายพร้อม CSV ตัวอย่างและไฟล์ JSON Schema เล็กๆ รายละเอียดนั้นปิดการขายได้อย่างน้อย 3 ใน 10 ผู้สมัครแรกของผมที่เคยถูก feed ก่อนหน้าหลอกด้วยการเปลี่ยนคอลัมน์โดยไม่แจ้งเตือน เอกสาร schema หนึ่งหน้ามีค่ามากกว่า copy หน้า landing ใดๆ ที่ผมจะเขียนได้

สิ่งที่ผมจะหลีกเลี่ยง

อย่าขูดอะไรที่ต้องการการยืนยันตัวตน แม้จะดูง่าย ครั้งเดียวที่ผมงอกฎนี้ กับแหล่งข้อมูลที่มี login wall บางมาก ผมเสียเวลาหนึ่งสัปดาห์ถกเถียงกับผู้เผยแพร่และต้องคืนเงินผู้สมัครสองคน แหล่งข้อมูลสาธารณะที่แคบและมีปริมาณปานกลางดีกว่าแหล่งข้อมูลที่ถูกล็อกแต่มีเนื้อหาดีกว่าพร้อมความเสี่ยงทางกฎหมายทุกครั้ง หากวิธีเดียวที่จะสร้าง feed คือหลังหน้าล็อกอิน ให้สร้าง feed อื่น

คำถามที่พบบ่อย

การขูดข้อมูลสาธารณะถูกกฎหมายหรือไม่?

ข้อมูลสาธารณะที่ไม่ต้องล็อกอินและไม่มีข้อกำหนด clickwrap ห้ามการเข้าถึงอัตโนมัติ คือโซนปลอดภัยในเขตอำนาจศาลส่วนใหญ่ การขูดข้อมูลหลังหน้าล็อกอิน การหลีกเลี่ยง rate limit หรือการเพิกเฉยต่อข้อยกเว้น robots.txt จะพาคุณออกจากโซนนั้นอย่างรวดเร็ว ผมมี checklist ทางกฎหมายหนึ่งหน้าต่อแหล่งข้อมูล และปฏิเสธ feed ใดก็ตามที่ตอบ "ใช่" ได้ไม่ครบทุกข้อ

คิดราคา niche feed ได้สูงแค่ไหน?

Feed ของผมอยู่ที่ 29 ยูโร (~1,073 บาท) ต่อเดือน มีผู้สมัคร 14 คน รายได้ประจำ 406 ยูโร (~15,020 บาท) feed ข่าวทั่วไปไม่สามารถอยู่รอดในราคานี้ได้ แต่ feed เฉพาะอุตสาหกรรมที่อัปเดตทุก 60 นาทีและมี schema สะอาดสามารถทำได้ ผู้ซื้อมักเป็นเอเจนซีเล็กหรือนักวิจัยคนเดียวที่ให้คุณค่ากับเวลาที่ประหยัดได้ ไม่ใช่ข้อมูลดิบ

AI สามารถแทนที่ pipeline การขูดได้ไหม?

AI เขียน extraction prompt และทำให้ข้อมูล free text ที่รกสะอาดขึ้น แต่ส่วนประปา (การจัดตาราง retries การ deduplication การตรวจหาการเปลี่ยนแปลง) ยังคงเป็นโค้ดที่น่าเบื่อ ผมลองรัน pipeline ทั้งหมดผ่าน LLM agent แล้วมันทำงานได้สุดสัปดาห์หนึ่งแล้วก็ค่อยๆ เบี่ยงเบน ใช้ AI สำหรับส่วนที่คลุมเครือ และเก็บส่วนที่ deterministic ไว้เป็น deterministic