3 điểm bởi GN⁺ 2024-04-15 | 1 bình luận | Chia sẻ qua WhatsApp
  • MarkdownDown là công cụ chuyển bất kỳ trang web nào thành tài liệu Markdown gọn gàng
  • Hỗ trợ tải xuống hình ảnh trong kết quả chuyển đổi để có thể liên kết các hình ảnh đã lưu cục bộ trong Markdown
  • Cung cấp tùy chọn loại bỏ các phần tử không phải nội dung để giảm bớt những thành phần không liên quan đến nội dung chính
  • Cũng có tùy chọn áp dụng GPT Filter cho kết quả Markdown
  • Hữu ích cho người dùng muốn lưu trữ nội dung trang web dưới dạng Markdown hoặc sắp xếp cả hình ảnh đi kèm

Sắp xếp trang web thành Markdown

  • MarkdownDown chuyển trang web thành Markdown gọn gàng
  • Trong quá trình chuyển đổi, có thể tải xuống hình ảnh và đưa liên kết hình ảnh cục bộ vào kết quả

Tùy chọn chuyển đổi

  • Sắp xếp tập trung vào nội dung chính

    • Dùng tùy chọn Remove non-content elements để loại bỏ các phần tử không phải nội dung
  • Xử lý hình ảnh

    • Dùng tùy chọn Download images locally and link them để lưu hình ảnh cục bộ và chèn liên kết
  • Áp dụng GPT Filter

    • Dùng tùy chọn Apply GPT Filter on Markdown để áp dụng GPT Filter cho kết quả Markdown

1 bình luận

 
GN⁺ 2024-04-15
Ý kiến trên Hacker News
  • Có ba vấn đề khác nhau khi chuyển một website sang Markdown: thu thập đầy đủ nội dung trang, loại bỏ quảng cáo và nội dung phụ, và giữ được bố cục cũng như định dạng section đúng
    Với trích xuất nội dung chính xác và định dạng, các giải pháp dựa trên Trafilatura, Newspaper4k, python-readability hoạt động tốt nhất ở cấu hình mặc định; còn để thu thập đầy đủ thì kết hợp dịch vụ scraping với Selenium là phù hợp
    Tôi tò mò công cụ này làm khác đi hoặc làm tốt hơn ở điểm nào. Lĩnh vực này đã chững lại một thời gian, nên muốn nghe những gì đã học được

    • Đặc biệt trong các môi trường không có hoặc không muốn dùng JavaScript runtime, scraping triệt để là việc khó
      Về trích xuất nội dung, cách làm của thư viện Postlight khá gọn. Nó chấm điểm từng HTML node bằng các heuristic như độ dài văn bản, mật độ link, CSS class, rồi chọn node có điểm cao nhất. Tôi từng port sang Swift khi làm một app đọc sau cá nhân
      https://github.com/postlight/parser
    • Web scraper bài viết của tôi hiện chuyển sang dùng Playwright cùng ad blocker, rồi chạy readability của Mozilla trên trang, sau đó để LLM kiểm tra kết quả
      Nếu kiểm tra thất bại, luồng sẽ cắt bớt toàn bộ ngữ cảnh HTML của trang, chuyển sang Markdown bằng Pandoc, rồi LLM trích xuất phần nội dung chính từ Markdown
  • Vercel à, vậy giờ nếu traffic đổ vào thì phải cẩn thận hóa đơn. Hy vọng bạn không dùng theo đúng cách Vercel cứ khuyến khích dùng mãi

    • Việc tài liệu cứ dẫn dắt người ta dùng nó trên diện rộng hơi đắng. Có lúc chỉ cần một file WebP là đủ rồi
      Đúng như meme xe buýt: bên vui vẻ là người dùng và Vercel, bên buồn là ví tiền
      Tất nhiên, ngoại lệ là khi cần scaling động và scale down
    • Thực tế thì nó chịu tải khá tốt và chi phí cũng không đáng kể
      Tôi không làm gì riêng để xử lý traffic từ HN, chỉ là một app Next.js mặc định
  • Cung cấp tải ảnh xuống và lọc dựa trên GPT là một ý tưởng hay
    Năm ngoái tôi đã làm một công cụ tương tự nhưng không có các tính năng đó: https://url2text.com/
    UI có thể chậm, nhưng có thể xem output mẫu trên trang chủ
    API nền tảng là website screenshot API của Urlbox; nếu dùng trực tiếp thì hiệu năng tốt hơn nhiều. Có thể yêu cầu Markdown cùng lúc với HTML được render bằng JavaScript, metadata và screenshot: https://urlbox.com/extracting-text
    Cũng có thể lưu kết quả thẳng vào storage tương thích S3: https://urlbox.com/s3
    Hoặc nhận qua webhook: https://urlbox.com/webhooks
    Trong side project của mình, tôi đang render hơn 1 triệu lần mỗi tháng bằng tính năng Markdown của Urlbox; loại Markdown này dùng cho embedding và prompt tốt hơn nhiều
    Nếu muốn scrape toàn bộ website theo kiểu này, công cụ mới của dctanner cũng đáng xem: https://usescraper.com/

    • Tôi là founder của https://usescraper.com. Giờ cũng có tùy chọn scraping một URL đơn lẻ: https://docs.usescraper.com/api-reference/scraper/scrape
      Giá $0.001 mỗi trang và dùng trình duyệt Chrome headless. Kết quả nhanh, trả tiền đúng theo mức sử dụng
    • Trông ổn, nhưng url2text có vẻ không có API, còn urlbox dường như không có tùy chọn bỏ qua screenshot khi chỉ muốn lấy text
      Nếu chỉ cần text thì có vẻ khá đắt
  • Nếu website hiện thông báo cookie, có vẻ công cụ này bị kẹt ở đó và không parse được nội dung thật
    Ví dụ tôi thử nhập https://www.cnbc.com/ thì Markdown được tạo ra chỉ gồm thông báo cookie và các câu chữ pháp lý xung quanh

    • Vượt qua những thứ như vậy không dễ, nhưng có thể hoạt động theo kiểu này: https://url2text.com/u/wYVake
      Tôi khá may vì có thể xây trên một API trưởng thành đã xử lý sẵn nhiều edge case phát sinh từ các kiểu render trang khác nhau
  • Chỉ dùng htmltidy và chuyển đổi HTML→Markdown của Pandoc thôi cũng đã đủ dùng khá tốt
    http://www.html-tidy.org/
    https://pandoc.org/

    • Lần đầu tôi nghe tới tidy, trông có vẻ hứa hẹn
      Tôi vừa bị hấp dẫn vừa hơi sợ ý tưởng chạy toàn bộ HTML template cuối qua nó để tìm các cấu trúc sai còn sót lại. Tùy mức độ có cấu trúc của kết quả sửa, có lẽ có thể biến nó thành test suite
  • Tôi cũng đã làm một thứ rất giống là smort.io. Chỉ cần thêm smort.io/ trước URL của bất kỳ bài viết nào là có thể dễ dàng chỉnh sửa, chú thích và chia sẻ
    Nó cũng hoạt động với các bài báo ArXiv
    Bài Show HN của Smort ở đây: https://news.ycombinator.com/item?id=30673502

  • Tôi đã thử với một trang marketing phức tạp và nó xử lý rất tốt
    Nếu chia sẻ được, tôi tò mò mức tải đặt lên host là bao nhiêu. Muốn biết liệu có thể tiếp tục vận hành miễn phí hay cuối cùng chi phí sẽ trở nên kém hiệu quả

    • Vì phải chạy instance Chrome headless nên hơi nặng. Tôi dự định sẽ xem xét tối ưu phần này
      Ngoài ra GPT-4 đắt, nhưng cho đến giờ chi phí vẫn không đáng kể nên tôi khá kỳ vọng. Có vẻ có thể duy trì lâu dài
  • Đây là một trong những trường hợp không cần AI. Đã có những thuật toán trích xuất nội dung khỏi trang hoạt động rất tốt, và một trong các bản triển khai là https://github.com/buriy/python-readability

    • Vài năm trước, khi so sánh các công cụ loại bỏ boilerplate, tôi nhớ jusText cho kết quả tốt nhất ở trạng thái mặc định
      Tôi cũng đã thử readability và vài thư viện khác. Không biết hiện nay mức tiên tiến nhất ra sao
    • Ở đây AI là tùy chọn. Họ đang dùng readability để dọn HTML trước khi chuyển sang Markdown
    • Lần cuối tôi dùng readability, nó hoạt động tốt với bài viết nhưng chật vật với các loại trang khác
      Nó loại bỏ nhiều nội dung hơn tôi muốn rất nhiều
    • Tôi tò mò không biết chỉ với công cụ đó, không dùng AI, thì làm sao đạt được cùng việc này
    • Thành thật mà nói, tôi đã nghĩ phần lớn sẽ là kiểu ma thuật đen, nhưng phần cốt lõi của dự án trông giống như một bộ regex hẳn đã được tích lũy rất vất vả. Hay thật
  • Pandoc luôn đáng kinh ngạc (https://pandoc.org/) làm việc này rất tốt. Thực tế là nó cũng hỗ trợ gần như mọi định dạng tài liệu khác

    • Đồng ý. Pandoc là một trong những công cụ hữu ích nhất hiện có nhưng lại hiếm khi được nhắc đến
      Nó tuyệt vời, dễ dùng và hoạt động tốt. Các công cụ mới trong lĩnh vực này thường xuyên xuất hiện, nhưng để khiến tôi dùng thứ gì đó thay vì Pandoc thì có lẽ nó phải có một tính năng thật độc đáo, thuyết phục hoặc được tối ưu hóa rất cao cho một trường hợp sử dụng cụ thể
  • Hay đấy. Ước gì có một tiện ích mở rộng trình duyệt áp dụng cái này cho mọi trang tôi đọc và lưu lại ở đâu đó

    • Singlefile cho Firefox: https://addons.mozilla.org/en-US/firefox/addon/single-file/
    • Lựa chọn tôi dùng thủ công là Markdown clipper
      https://github.com/deathau/markdown-clipper
      Chắc cũng có khoảng vài chục tiện ích thay thế tương tự
    • Bộ Wallabag + Obsidian + Wallabag Browser Ext khá tốt. Kích hoạt thủ công nhưng rất tuyệt
    • Omnivore dùng web archive để lưu bản sao
      https://omnivore.app/
    • Tôi nghĩ các ứng dụng như Pocket, Readwise Reader, Matter vốn đã mô tả việc như vậy rồi
      Sửa: tôi đọc quá nhanh. Tôi đã bỏ lỡ phần xử lý tự động và có hệ thống