Defuddle - โอเพนซอร์ส HTML-to-Markdown ที่มาแทน Readability
(github.com/kepano)- เป็นเครื่องมือที่ลบ องค์ประกอบที่ไม่จำเป็น (คอมเมนต์, แถบด้านข้าง, ส่วนหัว, ส่วนท้าย ฯลฯ) ออกจากหน้าเว็บเพื่อให้เหลือเฉพาะเนื้อหาหลัก
- ต่างจาก Mozilla Readability ตรงที่ทำงานได้ยืดหยุ่นกว่า และรองรับการทำ HTML ให้เป็นมาตรฐานอย่างสม่ำเสมอสำหรับ สูตรคณิตศาสตร์, โค้ดบล็อก, เชิงอรรถ ฯลฯ
- พัฒนามาเพื่อ Obsidian Web Clipper และมุ่งให้เข้ากันได้กับเครื่องมือแปลง HTML-to-Markdown อื่น ๆ (เช่น Turndown)
- มีฟีเจอร์ดึงเมตาดาต้าหลากหลายแบบในตัว เช่น สไตล์สำหรับมือถือ และข้อมูล schema.org
- รองรับทั้ง Node.js และเบราว์เซอร์ และสามารถเลือกใช้ บันเดิลได้หลายแบบตามวัตถุประสงค์
จุดแตกต่างระหว่าง Defuddle กับ Readability
- ใช้การกรองที่ผ่อนปรนกว่า จึง ลดการลบองค์ประกอบที่ยังไม่แน่ชัด
- จัดการ พื้นที่พิเศษ อย่างเชิงอรรถ สูตรคณิตศาสตร์ และโค้ด ได้อย่างสม่ำเสมอ
- อ้างอิง สไตล์ชีตสำหรับมือถือ ของหน้าเว็บ
- สามารถดึง ข้อมูลเพิ่มเติม เช่น เมตาดาต้า schema.org, รูปภาพ, favicon, วันที่เผยแพร่ เป็นต้น
องค์ประกอบของบันเดิล
- Core bundle (
defuddle): เหมาะกับการใช้งานบนเบราว์เซอร์, ไม่มี dependency ภายนอก - Full bundle (
defuddle/full): มีฟีเจอร์เพิ่มเติม เช่น การ parse สูตรคณิตศาสตร์ - Node bundle (
defuddle/node): ปรับแต่งมาสำหรับสภาพแวดล้อม Node.js (JSDOM), รองรับสูตรคณิตศาสตร์และการแปลง Markdown อย่างครบถ้วน
โครงสร้างของอ็อบเจ็กต์ที่ส่งกลับ
Defuddle จะส่งกลับอ็อบเจ็กต์ที่มีข้อมูลดังต่อไปนี้
- author: ชื่อผู้เขียน ของบทความหรือหน้าเว็บ
- content: สตริงของ เนื้อหาหลักที่ผ่านการจัดระเบียบแล้ว
- description: คำอธิบายสรุปของบทความหรือหน้าเว็บ
- domain: ชื่อโดเมน ของเว็บไซต์
- favicon: URL ของ favicon ประจำเว็บไซต์
- image: URL ของรูปภาพหลัก
- metaTags: ข้อมูล meta tag
- parseTime: เวลาที่ใช้ประมวลผล (หน่วยมิลลิวินาที)
- published: ข้อมูลวันที่เผยแพร่
- site: ชื่อเว็บไซต์
- schemaOrgData: ข้อมูลที่ดึงจาก schema.org
- title: ชื่อเรื่อง ของคอนเทนต์
- wordCount: จำนวนคำของเนื้อหาหลัก
ตัวเลือก
- debug: เปิดใช้งาน logging สำหรับดีบัก
- url: ระบุ URL ของหน้าเป้าหมายที่จะวิเคราะห์
- markdown: แปลงเนื้อหาหลักเป็น Markdown
- separateMarkdown: ส่งกลับทั้ง HTML และ Markdown พร้อมกัน
- removeExactSelectors: ตัวเลือกสำหรับ ลบ selector ที่ตรงกันแบบ exact (โฆษณา, ปุ่มโซเชียล ฯลฯ) (ค่าเริ่มต้น true)
- removePartialSelectors: ตัวเลือกสำหรับ ลบ selector ที่ตรงกันบางส่วน (เช่น โฆษณาที่คล้ายกัน) (ค่าเริ่มต้น true)
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
ฉันไม่ค่อยชอบวิธีที่ตัวแก้ไข wysiwyg ที่ใช้อยู่แปลงจาก markdown เป็น HTML เลยคิดว่าถ้าลองทำทูลบาร์กับเอดิเตอร์ขึ้นมาเองแล้วนำเครื่องมือนี้ไปใช้ ก็น่าจะได้ผลลัพธ์ที่ดีกว่า
เมื่อไม่นานมานี้เคยลองศึกษาเรื่องคล้ายกัน และไม่ค่อยมั่นใจในคุณภาพของ Readability ที่มีการพอร์ตไปหลายภาษา Readability.js ดีที่สุด แต่สภาพแวดล้อม Javascript ไม่เหมาะกับโปรเจกต์ของฉัน สุดท้ายเลยเลือกใช้ไลบรารี Trafilatura ของ Python สำหรับดึงคอนเทนต์คุณภาพสูงพร้อมเมตาดาต้าได้อย่างแม่นยำ น่าจะลองเอา implementation ของฉันไปเทียบกับ Trafilatura เพื่อหาจุดที่ควรปรับปรุงได้
ฉันใช้ Obsidian Clipper มาตั้งแต่ช่วงเปิดตัว และชื่นชอบฟีเจอร์ดึงข้อมูลตามโปรไฟล์รายเว็บไซต์เป็นพิเศษ ต่อให้ไม่ใช่ผู้ใช้ Obsidian ก็ตาม คุณภาพการดึง markdown ก็ยังน่าเชื่อถือที่สุดเท่าที่ฉันเคยเห็นมา
ในช่วงที่เว็บไซต์สมัยนี้ซับซ้อนและรกรุงรังขึ้นเรื่อยๆ ฉันคิดว่าเราจำเป็นต้องมี markdown converter ที่ robust เพื่อช่วยให้ผู้อ่านโฟกัสกับเนื้อหาจริงๆ ดีใจที่มีโปรเจกต์เข้ามาเติมช่องว่างที่ Readability ทิ้งไว้ และขอเป็นกำลังใจให้
ฉันทึ่งกับคุณภาพการแปลงเป็น markdown ของ Obsidian Web-clipper มาก จนไปไล่วิเคราะห์ซอร์สโค้ดแล้วพบ Defuddle เข้า ตอนนี้ตั้งใจจะนำไปใช้กับแอป read-it-later/knowledge-base ที่กำลังพัฒนาอยู่ เลยอยากขอบคุณล่วงหน้า
สงสัยว่า Readability ของ Mozilla ถูกปล่อยทิ้งจริงหรือไม่ เพราะรีลีสล่าสุดก็เพิ่งเมื่อ 2 เดือนก่อน และ Gijs ผู้ดูแลก็ตอบ issue อย่างแข็งขันมาก
ขอแนะนำโปรเจกต์คล้ายกันที่พัฒนาด้วย PHP คือ markydown มีข้อดีตรงที่ self-host ได้ง่าย
Obsidian Web Clipper เป็นเครื่องมือที่มีประโยชน์มากสำหรับแปลงบทสนทนา chatGPT เป็น markdown หรือใช้แบบง่ายๆ เพื่อการพิมพ์
สงสัยว่าทำไมบางเว็บไซต์เวลาเข้าอ่านผ่านโหมดอ่าน (เช่น iPhone Reader) หน้าจอถึงขึ้นขาวโพลนหรือมองไม่เห็นบทความตามปกติ โดยเฉพาะเว็บข่าวที่เจอบ่อย อยากรู้ว่าเป็นเพราะจงใจซ่อนเพื่อให้เห็นโฆษณาหรือเปล่า และถ้าใช่ทำได้อย่างไร