Defuddle - mã nguồn mở HTML-to-Markdown thay thế Readability
(github.com/kepano)- Là công cụ loại bỏ các thành phần không cần thiết (bình luận, thanh bên, header, footer, v.v.) khỏi trang web để chỉ giữ lại phần nội dung chính
- Khác với Mozilla Readability, công cụ này hoạt động linh hoạt hơn và hỗ trợ chuẩn hóa HTML nhất quán cho công thức, khối mã, chú thích cuối trang, v.v.
- Được phát triển cho Obsidian Web Clipper và hướng tới khả năng tương thích với các công cụ chuyển đổi HTML-to-Markdown khác như Turndown
- Tích hợp sẵn tính năng trích xuất nhiều loại metadata như kiểu dáng di động và dữ liệu schema.org
- Hỗ trợ cả Node.js và trình duyệt, đồng thời có thể chọn nhiều gói bundle khác nhau tùy mục đích sử dụng
Điểm khác biệt giữa Defuddle và Readability
- Bộ lọc khoan dung hơn, giúp giảm việc xóa nhầm các thành phần không chắc chắn
- Xử lý nhất quán các vùng đặc biệt như chú thích cuối trang, công thức, mã
- Tham chiếu stylesheet cho thiết bị di động của trang
- Có thể trích xuất thêm thông tin như metadata schema.org, hình ảnh, favicon, ngày xuất bản, v.v.
Cấu hình bundle
- Core bundle (defuddle): phù hợp để dùng trên trình duyệt, không có phụ thuộc bên ngoài
- Full bundle (defuddle/full): bổ sung các tính năng như phân tích công thức
- Node bundle (defuddle/node): tối ưu cho môi trường Node.js (JSDOM), hỗ trợ đầy đủ công thức và chuyển đổi Markdown
Cấu trúc đối tượng trả về
Defuddle trả về một đối tượng chứa các thông tin như sau
- author: tên tác giả của bài viết hoặc trang
- content: chuỗi nội dung chính đã được làm sạch
- description: mô tả tóm tắt của bài viết hoặc trang
- domain: tên miền của trang
- favicon: URL favicon đại diện của trang
- image: URL hình ảnh đại diện
- metaTags: thông tin thẻ meta
- parseTime: thời gian xử lý (tính bằng mili giây)
- published: thông tin ngày xuất bản
- site: tên trang web
- schemaOrgData: dữ liệu trích xuất từ schema.org
- title: tiêu đề nội dung
- wordCount: số từ của nội dung chính
Tùy chọn
- debug: bật logging để debug
- url: chỉ định URL trang cần phân tích
- markdown: chuyển nội dung chính sang Markdown
- separateMarkdown: trả về đồng thời HTML và Markdown
- removeExactSelectors: tùy chọn xóa selector khớp chính xác (quảng cáo, nút mạng xã hội, v.v.) (mặc định true)
- removePartialSelectors: tùy chọn xóa selector khớp một phần (quảng cáo tương tự, v.v.) (mặc định true)
1 bình luận
Ý kiến Hacker News
Tôi không thích cách trình soạn thảo wysiwyg mình đang dùng chuyển từ markdown sang HTML, nên hy vọng nếu tự làm thanh công cụ và editor rồi áp dụng công cụ này thì có thể cho kết quả tốt hơn
Gần đây tôi từng tìm hiểu một chủ đề tương tự, nhưng không thật sự tin tưởng vào chất lượng của các bản triển khai Readability bằng nhiều ngôn ngữ khác nhau. Readability.js là tốt nhất, nhưng môi trường Javascript lại không phù hợp với dự án của tôi. Cuối cùng tôi chọn thư viện Trafilatura của Python để trích xuất nội dung chất lượng cao nhất, kể cả metadata, một cách chính xác. Có lẽ nếu so sánh bản triển khai của tôi với Trafilatura thì sẽ tìm ra các điểm cần cải thiện
Tôi đã dùng Obsidian Clipper từ những ngày đầu ra mắt và đặc biệt đánh giá cao tính năng trích xuất dựa trên profile theo từng website. Ngay cả khi không phải người dùng Obsidian, chất lượng trích xuất markdown của nó vẫn là mức đáng tin cậy nhất mà tôi từng thấy
Trong bối cảnh website ngày càng phức tạp và rối mắt, tôi nghĩ rất cần một bộ chuyển đổi markdown mạnh mẽ để người đọc có thể tập trung vào nội dung thực sự. Thật vui khi thấy có một dự án xuất hiện để lấp chỗ trống mà Readability để lại, và xin gửi lời ủng hộ
Tôi phát hiện ra Defuddle khi đang phân tích mã nguồn vì quá ấn tượng với chất lượng chuyển đổi markdown của Obsidian Web Clipper. Tôi dự định dùng nó cho ứng dụng read-it-later/knowledge-base đang tự phát triển, nên muốn nói lời cảm ơn trước
Tôi thắc mắc không biết Readability của Mozilla có thực sự bị bỏ bê hay không. Bản phát hành gần nhất mới chỉ cách đây 2 tháng, và maintainer Gijs cũng phản hồi issue rất tích cực
Xin giới thiệu dự án tương tự viết bằng PHP là markydown. Ưu điểm là có thể self-host rất dễ dàng
Obsidian Web Clipper là công cụ cực kỳ hữu ích để chuyển các cuộc trò chuyện chatGPT sang markdown, hoặc đơn giản là dùng cho mục đích in ấn
Tôi thắc mắc vì sao ở một số website, khi truy cập bằng chế độ đọc (ví dụ reader trên iPhone), màn hình lại trắng xóa hoặc bài viết không hiển thị đúng, đặc biệt là trên các trang tin tức. Có phải họ cố tình ẩn nội dung để ép hiển thị quảng cáo không, và nếu đúng thì thường áp dụng bằng cách nào?