15 คะแนน โดย GN⁺ 2025-12-08 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • สร้างส่วนขยายสำหรับการท่องเว็บบนพื้นฐาน RSS feed เพื่อให้ผู้ใช้สามารถสำรวจและให้คะแนนคอนเทนต์จากเว็บไซต์อิสระแบบสุ่มได้
  • แสดงเว็บไซต์ใหม่ได้ด้วยการคลิกปุ่ม และสร้างโครงสร้างการแนะนำแบบชุมชนผ่านฟังก์ชันถูกใจ·ไม่ถูกใจ·รายงาน
  • สร้างแบ็กเอนด์ด้วย FastAPI และ SQLite และใช้รายการ RSS ของ small web จาก Kagi เพื่อทำดัชนีประมาณ 600,000 หน้า
  • ไม่มีโฆษณาหรือการเก็บข้อมูลผู้ใช้ มอบประสบการณ์สำรวจคอนเทนต์เว็บที่น่าสนใจในช่วงเวลาสั้น ๆ อย่างเรียบง่าย
  • โปรเจกต์ทดลองส่วนตัวที่ตั้งเป้าลดความเหนื่อยล้าจาก RSS reader แบบเดิม และมุ่งสู่การค้นพบระบบนิเวศของเว็บขนาดเล็กอีกครั้ง

ภาพรวมโปรเจกต์

  • เริ่มต้นจากการตระหนักว่าประสบการณ์ใช้งาน RSS reader นั้นสร้างภาระ
    • ชี้ให้เห็นถึงความกดดันจากบทความที่ยังไม่ได้อ่านสะสม และความไม่มีประสิทธิภาพของโครงสร้างคอนเทนต์ตามลำดับเวลา
    • ผู้ใช้มีความต้องการที่จะสำรวจบทความที่น่าสนใจแบบสุ่ม
  • ได้แรงบันดาลใจจากวิธีแนะนำคอนเทนต์ของ TikTok จึงออกแบบโครงสร้างที่นำเสนอคอนเทนต์จากเว็บไซต์ขนาดเล็กแบบสุ่ม
    • เมื่อผู้ใช้ให้คะแนนคอนเทนต์ ความถี่ในการแสดงผลจะเพิ่มขึ้นตามจำนวนถูกใจ
    • ใช้อัลกอริทึมแนะนำอย่างเรียบง่ายโดยไม่มีโฆษณาหรือการเก็บข้อมูลส่วนบุคคล

ฟีเจอร์และโฟลว์ของผู้ใช้

  • ให้บริการในรูปแบบส่วนขยาย Firefox ดาวน์โหลดได้ที่ timewasterpro.xyz
  • ผู้ใช้รับเว็บไซต์ใหม่ได้ด้วยการคลิกปุ่ม และให้คะแนนผ่าน Upvote/Downvote/Report
  • ต้องสร้างบัญชี และหากลิงก์ที่ส่งได้รับความนิยมจากผู้ใช้อื่น อันดับจะสูงขึ้นบน Leaderboard
  • แบ็กเอนด์จะครอว์ล RSS feed เป็นระยะและบันทึกลงฐานข้อมูล
    • ตรวจสอบ 5 feed ทุก 600 วินาที และอัปเดตด้วยความถี่ไม่เกินวันละครั้ง
    • URL ที่ถูกรายงานจะถูกย้ายไปยังคิวรอตรวจสอบ พร้อมบันทึกจำนวนถูกใจ·ไม่ถูกใจ

โครงสร้างเทคนิค

  • เขียน API ด้วย FastAPI และจัดการฐานข้อมูลด้วย SQLAlchemy
  • ใช้ SQLite สำหรับการจัดเก็บข้อมูล
    • เริ่มต้นได้รวดเร็วและสำรองข้อมูลง่าย จึงเหมาะกับโปรเจกต์งานอดิเรก
  • การยืนยันตัวตนใช้การสร้างบัญชีด้วยอีเมลแล้วตรวจสอบผ่านลิงก์
    • เคยลองใช้การล็อกอินแบบ Passkey ด้วย แต่ถูกจำกัดจากความไม่เสถียรของ implementation ฝั่ง OSS
    • ใช้การยืนยันตัวตนแบบ JWT แต่ประเมินว่าไม่มีประสิทธิภาพในแง่ประสบการณ์ผู้ใช้
  • ใช้รายการ RSS จาก Kagi small web GitHub repository เป็นแหล่งข้อมูล

การออกแบบและประสบการณ์ผู้ใช้

  • ใช้ไลบรารี System.css เพื่อสร้างสไตล์ Apple System OS ยุค 80~90
    • สื่อสารทางภาพว่าเป็น “การทดลองส่วนตัว ไม่ใช่บริการระดับมืออาชีพ”
  • ไม่สามารถแยกคีย์ลัดตามระบบปฏิบัติการได้ จึงกำหนดคงที่เป็นปุ่ม Alt
  • พบปัญหาเรื่องการกำหนด ID แยกตามเบราว์เซอร์ในไฟล์ manifest.json ของส่วนขยาย
  • ไม่มีการใส่เครื่องมือวิเคราะห์ ดังนั้นฟีดแบ็กจากผู้ใช้จึงเก็บจากปัญหาที่มีการรายงานเข้ามาโดยตรงเป็นหลัก

แผนในอนาคต

  • มีแผนปรับปรุงโดยจัดหมวดหมู่คอนเทนต์ตามประเภท เพื่อให้ผู้ใช้เห็นแนวที่ชอบได้บ่อยขึ้น
  • กำลังพิจารณาฟีเจอร์ย้ายคอนเทนต์ที่มี Downvote เกินระดับหนึ่งไปยังคิวแยก
  • จำเป็นต้องมีโครงสร้างที่ช่วยให้ผู้ใช้ใหม่ได้พบกับ**‘คอนเทนต์ดี ๆ’ เป็นลำดับแรก**ในช่วงเริ่มต้น
  • อยากขยายจำนวนเว็บไซต์อิสระในหมวดภาพถ่าย วิทยาศาสตร์ และงานฝีมือ
  • ปัจจุบันทำดัชนีเสร็จแล้วประมาณ 600,000 หน้า และมีแผนจะเปิดเผยซอร์สโค้ดหลังจากทำให้เสถียร

1 ความคิดเห็น

 
GN⁺ 2025-12-08
ความเห็นจาก Hacker News
  • การคิดว่าต้องอ่านคอนเทนต์ทั้งหมดคือ ข้อบกพร่องของการออกแบบ UI ของรีดเดอร์

    • ปัญหาคือการแสดง RSS feed แบบเป็น "กล่องจดหมายเข้า" เหมือนอีเมล

    • ควรเข้าถึงมันในรูปแบบ "สายน้ำแห่งข่าวสาร (river of news)" ที่ไหลไปเรื่อย ๆ แบบ TikTok

    • แก่นสำคัญคือแวะดูเฉพาะบทความที่น่าสนใจสักครู่ แล้วปล่อยที่เหลือไหลผ่านไป

    • Twitter เองก็มีโครงสร้างคล้าย RSS โดยพื้นฐาน — แค่เป็นการเลื่อนดูโดยไม่มีการทำเครื่องหมายว่า "ยังไม่ได้อ่าน"

    • เพราะงั้นควรปิดตัวนับ "จำนวนรายการที่ยังไม่ได้อ่าน" คุณค่าของ RSS อยู่ที่ เราเลือกอ่านอะไร

    • ถ้าเป็นบทความที่ดีจริง สุดท้ายผู้ติดตามคนอื่นก็จะแชร์ลิงก์นั้นอยู่ดี

    • ฉันกลับชอบ รูปแบบกล่องจดหมายเข้า มากกว่าสายน้ำ

      • ถ้าจัดฟีดตามหมวดหมู่ไว้ การกด "อ่านแล้วทั้งหมด" ก็ไม่ได้ยาก
      • แต่ถ้าฟีดไหนโพสต์ถี่เกินไปก็จะยกเลิกติดตามทันที บล็อกที่ลงทุกวันตามไม่ไหว
    • ฉันเองก็เคยพยายามสร้างระบบที่ค้นหาคอนเทนต์จากทั่วทั้งเว็บให้ตรงกับรสนิยมของฉันแบบอัตโนมัติ

      • ท้ายที่สุดก็ได้ตระหนักถึงความสำคัญของ แหล่งข้อมูลคุณภาพสูง และสรุปว่าแค่ติดตามคนดี ๆ ไม่กี่คนก็พอ
      • พอลองคิดใหม่ตั้งแต่ต้น ก็พบว่านั่นแหละคือ RSS — แนวคิดที่สมบูรณ์ตั้งแต่ปี 2005 แล้ว
    • ฉันก็เคยได้ข้อสรุปคล้ายกันเมื่อหลายปีก่อน

      • เพราะไม่อยากติดตามว่าอ่านอะไรไปแล้ว จึง ทำบอตสำหรับแต่ละ RSS feed แล้วมิเรอร์ไปที่ Diaspora
      • ตอนนี้ย้ายมา Mastodon แล้ว แต่หลักการยังเหมือนเดิม — แค่เลื่อนดูแล้วอ่านเฉพาะที่น่าสนใจ
    • Twitter เป็นบริการแบบนั้น "เคยเป็น" เท่านั้น ตอนนี้ไม่ใช่แล้ว

  • ดูเหมือนบางคนกำลังใช้ RSS reader ผิดวิธี

    • RSS ไม่ใช่เครื่องมือสำหรับบริโภคทุกอย่างทั้งหมดแบบช่อง YouTube แต่เป็น เครื่องมือดูพาดหัวแล้วอ่านเฉพาะบทความที่น่าสนใจ

    • TikTok ยิ่งแย่กว่าอีก — มันเป็นโครงสร้างที่ตรึงคนไว้กับสตรีมคอนเทนต์ไม่รู้จบ

    • สำหรับคนแบบนี้ การใช้ ลิสต์อ่านภายหลัง น่าจะเหมาะกว่าการหา RSS reader ตัวใหม่

    • เอนจินแนะนำของ TikTok มีประสิทธิภาพมาก เพราะ วัดปฏิกิริยาในระดับคอนเทนต์เดี่ยว

      • ในทางกลับกัน YouTube ให้เลือกจากหลาย thumbnail ทำให้เสียข้อมูลเกี่ยวกับอีก 9 อันที่ไม่ได้คลิก
      • ไม่ใช่ว่าอัลกอริทึมแย่ในตัวมันเอง แต่ปัญหาคือ จะ optimize อะไร
      • รีดเดอร์ของฉันเองก็แสดงคอนเทนต์ทีละชิ้นแบบ TikTok แต่ประกอบด้วยงานวิจัยวิทยาศาสตร์หรือบทความเกี่ยวกับ LLM ที่ฉันส่งเข้าไปเอง
    • ไม่จำเป็นต้องตัดสินว่ามีใครใช้ RSS "ผิด"

      • มันแค่เป็นการเปลี่ยนจากการบริโภคคอนเทนต์แบบ "อ่านสิ่งที่เพิ่งขึ้นตอนนี้" ไปเป็น "ตามเก็บสิ่งที่ฉันสะสมไว้"
      • YouTube ก็ใช้งานตามหลักการเดียวกันได้
    • ตอนที่เคยใช้ NetNewsWire ฉันรู้สึกกังวลเพราะ ป้ายบทความที่ยังไม่ได้อ่าน

      • ถ้าต้องกลับไปใช้อีกครั้งตอนนี้ ฉันจะปิดป้ายนี้ และตั้งให้บทความที่เกิน 2 วันถูกทำเป็นอ่านแล้วอัตโนมัติ
    • ฉันกำลังใช้ tt-rss เวอร์ชันปี 2005 ที่ปรับแต่งเอง

      • บางฟีดฉันอ่านตั้งแต่ต้นจนจบ บางฟีดก็แค่กวาดตาดูเป็นครั้งคราว
      • ต่อไปฉันอยากเพิ่ม ฟีดอัลกอริทึมที่อิงระบบแนะนำ
      • โดยเฉพาะอยากทดลอง ฟีดแนะนำแบบกระจายศูนย์ ที่อิงจาก "บทความที่ติดดาว/ติดแท็ก" ของนักเขียนที่ฉันชอบอ่าน
    • การแสดง สถานะ "ยังไม่ได้อ่าน" ของ Google Reader ทำให้มันดูเหมือนอีเมล เลยให้ความรู้สึกเหมือนเป็น "งานที่ต้องทำ"

      • มันเป็น UI ที่ทำให้การไล่ดูพาดหัวไม่ใช่แค่การกวาดตา แต่ดูเหมือนเป็น "งาน"
  • หลายคนใช้ RSS เป็น คำนามทั่วไปสำหรับเว็บฟีด

    • ในการใช้งานจริง ประเด็นคือควรใช้ RSS, Atom หรือ JSON Feed แบบไหน

    • พอดแคสต์ก็ยังใช้ RSS เป็นพื้นฐานอยู่

    • ฉันใช้แค่ JSON Feed

      • ด้วย โครงสร้างที่เรียบง่าย มันจึงทำงานได้ดีกับรีดเดอร์ส่วนใหญ่ และจัดการทางโปรแกรมได้ง่าย
      • ถ้าต้องสร้างเอง ฉันจะใช้ JSON Feed 100% และไม่รู้สึกว่ามีเหตุผลอะไรต้องใช้ Atom
  • รีดเดอร์ฟีดส่วนใหญ่น่าจะถูกสร้างโดยคนที่ไม่ได้ใช้ RSS จริง ๆ

    • ฉันจัดการฟีด 211 รายการในกว่า 20 หมวดหมู่ และมีรายการแคชอยู่ 13,000 รายการ

    • อัตราที่ฉันคลิกเปิดเนื้อหาจริงมีเพียงประมาณ 1–5%

    • เห็นด้วยมาก มีรีดเดอร์จำนวนมากที่ไม่มี ฟังก์ชันกรอง หรือโครงสร้างสำหรับรับมือกับบทความจำนวนมาก

  • ข้อดีของ RSS คือ เป็นอิสระจากอิทธิพลของอัลกอริทึมแนะนำ

    • คุณจะไม่ถูกยัดโดเมนเดิมซ้ำ ๆ และสามารถเห็นบทความจากหลายสาขาได้อย่างสมดุล
    • มันให้ความรู้สึกเหมือนย้อนกลับไปสู่ โมเดลการไหลของข้อมูลแบบเส้นตรง ดั้งเดิม
  • ดีใจมากที่มีโปรเจ็กต์แบบนี้

    • เมื่อก่อนฉันชอบ StumbleUpon มาก เลยดีใจที่มีบริการคล้ายกันเกิดขึ้น

    • อยากให้มีใครสักคนทำ ภาคต่อของ DIGG

    • เห็นด้วยสุด ๆ มันให้ความรู้สึกคิดถึง StumbleUpon แต่ก็ดีตรงที่เราสามารถเลือก จุดโฟกัสของคอนเทนต์ เองได้

    • เผื่อยังไม่ทราบ Digg เพิ่ง กลับมาเปิดใหม่เป็นเวอร์ชันเบตา ไม่นานนี้

  • ฉันชอบการคัดสรรคอนเทนต์ของ RSS ที่ ไม่อิงอัลกอริทึม แต่ไม่ต้องการการคัดสรรที่เน้น "ความสนุก"

    • อยากหลีกเลี่ยงโครงสร้างที่กระตุ้น "engagement" แบบ TikTok
    • เหตุผลที่กลับมาใช้ RSS ก็เพื่อเชื่อมต่อโดยตรงกับ ผู้เขียนที่ฉันชอบ
    • ถ้าภายหน้าคอนเทนต์มีมากขึ้น การให้ระบบอัลกอริทึมสรุปย่อคอนเทนต์เป็น จดหมายข่าวรายสัปดาห์แบบคัดสรร ก็น่าจะเป็นทางออกที่เหมาะ
  • เรื่องการ คงลำดับเวลาของคอนเทนต์ หรือไม่นั้นขึ้นอยู่กับสถานการณ์

    • ฉันเคยจินตนาการถึง UX ที่จะแก้ปัญหานี้ได้ทั้งใน RSS reader และพอดแคสต์ แต่ก็ยังหาทางออกที่ดีไม่ได้
  • ขอแนะนำบริการชื่อ Scour

    • มันจัดอันดับบทความตามความเกี่ยวข้องกับความสนใจของผู้ใช้

    • สามารถดึง RSS feed เข้ามา หรือค้นหาจากแหล่งข้อมูลกว่า 15,000 แห่งได้

    • มันถูกออกแบบมาเพื่อหลีกเลี่ยงรายการ "ยังไม่ได้อ่าน" หลายพันชิ้น และเป็น เครื่องมือที่คัดเฉพาะบทความดี ๆ ให้

    • ฟังดูน่าสนใจ อยากรู้ว่ามีฟังก์ชันตัดฟีดบางรายการออกด้วย blacklist หรือไม่

  • กำลังพยายามแก้ปัญหา การจัดหมวดหมู่ของ RSS

    • ฟีดจำนวนมากไม่ใช้ฟิลด์ category เลยสร้าง crawler ที่ parse แฮชแท็กในช่องคำอธิบาย

    • เพื่อรักษา RSS "inbox zero" รายวัน ฉันจะเลิกติดตามบล็อกที่โพสต์ถี่เกินไป

    • มีแนวโน้มว่า ความถี่ในการโพสต์จะแปรผกผันกับคุณภาพของคอนเทนต์

    • ฉันติดตาม RSS ด้วยแอป Karakeep

      • มันบันทึกคอนเทนต์อัตโนมัติและ สร้างแท็กด้วย generative AI
      • สามารถสร้าง RSS feed แบบมีเงื่อนไขได้ จึงเหมาะจะใช้ร่วมกับรีดเดอร์เดิม
    • เว็บไซต์ของฉันก็มีคอนเทนต์หลายประเภท แต่รีดเดอร์ส่วนใหญ่ไม่รองรับแท็ก category

      • สุดท้ายเลยต้องแยกด้วยวิธีใส่ คำนำหน้าอย่าง [Blog] ไว้ในชื่อเรื่อง