2 điểm bởi GN⁺ 2023-12-12 | 2 bình luận | Chia sẻ qua WhatsApp
  • Nhiều trang web có cung cấp RSS feed nhưng lại thiếu liên kết RSS/Subscribe hoặc metadata auto-discovery, khiến người dùng khó tìm được địa chỉ feed
  • Nếu hiển thị trực tiếp liên kết RSS trên trang, tách biệt với cơ chế auto-discovery của feed reader, bạn có thể cho khách truy cập biết sự tồn tại của RSS và tăng khả năng tiếp cận của web mở
  • RSS auto-discovery là cách chuẩn tìm type="application/rss+xml" trong thẻ <link> của HTML, và có thể được feed reader như NetNewsWire sử dụng khi người dùng nhập URL
  • Nếu thêm thẻ <link>rel="alternate", type, title, href vào head của website, bạn có thể hiển thị RSS feed một cách rõ ràng
  • Nếu có nhiều feed như RSS, Atom, JSON Feed, podcast feed, bạn có thể dùng nhiều thẻ <link>, và tốt hơn là làm cho nút RSS trông đúng như một nút RSS

Cung cấp cả liên kết RSS và auto-discovery

  • Điều đầu tiên người dùng kiểm tra khi tìm RSS feed là liên kết RSS/Subscribe trên trang, nhưng nhiều website lại không có liên kết này
  • Một số người dùng chỉ dán URL website vào feed reader để ứng dụng tự tìm feed, nhưng nếu trang có hiển thị liên kết RSS thì khách truy cập sẽ biết ngay website có hỗ trợ RSS hay không
  • RSS auto-discovery hoạt động bằng cách tìm trong các thẻ <link> của website mục có typeapplication/rss+xml
return Array.from(document.getElementsByTagName('link')).find(l => l.type.includes('application/rss+xml'))?.href
  • Đây là một tiêu chuẩn gọi là RSS auto-discovery, giúp trình duyệt và phần mềm khác tự động tìm RSS feed của một trang web
  • Feed reader như NetNewsWire có thể dùng metadata này để tìm feed khi bạn dán URL vào

Metadata feed đặt trong head

  • Nếu có RSS feed, bạn có thể thêm thẻ auto-discovery như sau vào head của website
<link rel="alternate" type="application/rss+xml" title="My Cool Website" href="https://example.com/feed.xml"; />
  • Với Atom feed, dùng application/atom+xml cho type
<link rel="alternate" type="application/atom+xml" title="My Cool Website" href="https://example.com/atom.xml"; />
  • Nếu có nhiều feed thì cũng có thể thêm nhiều thẻ <link>
    • RSS feed của website
    • JSON Feed
    • podcast feed
<!-- Website RSS feed -->
<link rel="alternate" type="application/rss+xml" title="My Cool Website" href="https://example.com/feed.xml"; />

<!-- Website JSON feed -->
<link rel="alternate" type="application/json" title="My Cool Website but JSON" href="https://example.com/feed.json"; />

<!-- Podcast RSS feed -->
<link rel="alternate" type="application/rss+xml" title="My Cool Podcast" href="https://example.com/podcast.xml"; />
  • Bản cập nhật ngày 9/12/2023 bổ sung đề xuất rằng khi thêm nút RSS, hãy làm cho nó trông đúng như nút RSS và dùng màu cam RSS

2 bình luận

 
ndrgrd 2023-12-14

Có nhiều trang web bị giấu rất kỹ. Khi thực sự muốn đăng ký theo dõi, tôi thường thử tự nhập trực tiếp /rss, /rss.xml, /index.xml, /feed, /feed.xml.

 
GN⁺ 2023-12-12
Ý kiến trên Hacker News
  • Mẹo: kênh YouTube cũng công khai RSS feed, nên bạn chỉ cần dán URL kênh vào trình đọc tin là có thể đăng ký
    RSS feed có thể tồn tại ở những nơi không ngờ tới, nên dùng tiện ích mở rộng khôi phục nút “Đăng ký bằng RSS” trong trình duyệt sẽ rất hữu ích
    <https://addons.mozilla.org/en-US/firefox/addon/awesome-rss/>
    <https://chromewebstore.google.com/detail/rss-subscription-ex...>

  • Có hai lý do chính khiến nhiều RSS/Atom feed không được hiển thị rõ: các dịch vụ kiểu Google Reader đã biến mất, và trình duyệt đã ngừng hỗ trợ RSS mặc định, bao gồm cả khả năng phát hiện feed
    Nếu khôi phục lại tính năng vốn nên có trong trình duyệt thì ít nhất cũng có thể dùng để tìm feed, sau đó đăng ký bằng công cụ như newsbeuter là được

    • Đây là điều có chủ đích. RSS là cách né quảng cáo
      Chỉ cần nghĩ xem ai đang làm ra trình duyệt được dùng rộng rãi nhất hiện nay
    • Việc một vài dịch vụ doanh nghiệp biến mất không có nghĩa là không thể chèn liên kết "application/rss+xml" vào mã nguồn HTML
      Thực ra hoàn toàn có thể có các ứng dụng desktop “không thể bị thu hồi” như trình đọc RSS, nên việc phụ thuộc vào dịch vụ có thể biến mất mới là điều kỳ lạ; vẫn còn nhiều RSS reader, và làm một cái cũng khá đơn giản
      Muốn tìm feed thì cứ xem mã nguồn HTML. Vấn đề là khi feed tồn tại nhưng không được hiển thị ở bất kỳ đâu trên website
    • Tôi từng phát hiện nút RSS trên website của mình không hiện ra, ban đầu không hiểu vì sao, rồi kiểm tra trình chặn quảng cáo mới biết
      Ít nhất hai danh sách, AdGuard Widgets và EasyList Social Widgets, vẫn có quy tắc chặn biểu tượng RSS. Tuy nhiên chúng không được bật mặc định
    • Việc đưa hỗ trợ RSS mặc định vào như một tính năng lõi của trình duyệt ngay từ đầu đã không thực sự hợp lý, và tiện ích mở rộng phù hợp hơn nhiều
      Cũng có nhiều dịch vụ thay thế Google Reader, và còn cung cấp tính năng vượt xa RSS đơn thuần
      Trong môi trường truyền thông được tối ưu cho tương tác và gây nghiện, RSS là bàn đạp để rời khỏi nền tảng nên dĩ nhiên họ không dùng. Ngay cả blog cá nhân, vốn là đối tượng chính của bài viết, cũng có thể muốn giữ độc giả ở lại trên site để kiếm click
      Đây là xung đột lợi ích giữa nhà cung cấp và người tiêu thụ nội dung, phần lớn là vấn đề quảng cáo chứ không phải vấn đề triển khai
  • Tôi muốn việc mình đăng ký feed của một blog cũng được chủ site biết đến
    Khi đọc được bài hay, tôi cũng gửi email khen chủ site, hoặc để lại bình luận ngắn trên HN để họ biết rằng tôi đã đăng ký feed. Mong điều đó sẽ khích lệ những người bỏ công sức và tâm huyết làm nội dung tốt tiếp tục làm nữa
    Với RSS reader tôi tự làm, nếu quan tâm thì xem https://www.heyhomepage.com, nó sẽ gắn tham số như /?rss_ref=heyhomepage.com vào các liên kết được nhấp. Chủ website sẽ nhận được traffic từ tôi, và nếu họ xem thống kê truy cập thì cũng dễ biết traffic đó đến từ đâu

  • RSS cũng hơi thiếu nhất quán. Có người đưa nội dung đầy đủ vào feed, có người chỉ đưa liên kết
    Nếu chỉ có liên kết thì để lấy nội dung bằng chương trình thường sẽ cần mã đặc thù cho từng site. Cũng có scraper dùng chung, nhưng phải chấp nhận chuyện dữ liệu bị lẫn tạp âm ngẫu nhiên như header của site
    Tôi nghĩ với sự xuất hiện của LLM, cuối cùng có thể sẽ có thị trường cho chuyện này. Mọi người có thể bán dữ liệu kiểu bài viết như một nguồn dữ liệu cho pipeline machine learning, và đó cũng có thể là con đường thoát khỏi quảng cáo
    Vì vậy tôi mong bắt đầu từ việc làm RSS tốt hơn. Nó giống như ngọn hải đăng trong biển tối

    • Tôi không nghĩ RSS cần được “cải thiện” để phục vụ scraper
    • NewsBlur có công tắc cho phép chọn giữa chế độ xem feed và chế độ xem văn bản
      Chế độ xem văn bản thường vẫn lấy được toàn bộ bài viết từ website ngay cả khi feed chỉ có phần tóm tắt
    • Ý là RSS sẽ giúp tẩy rửa bản quyền tốt hơn à?
    • Dựa trên ý tưởng này, tôi đã làm một RSS reader/tracker hơi thiên kiến, chuyên xử lý feed chỉ có liên kết
      Làm vậy sẽ cho trải nghiệm nhất quán, đồng thời tác giả cũng vẫn có lượt truy cập vào website của họ
      Có thể thử ở đây: https://lenns.io. Tôi rất vui nếu nhận được phản hồi
    • Chính vì chuyện “có người đưa nội dung vào feed, có người chỉ đưa liên kết” mà tôi đã bỏ dùng RSS
      Đằng nào cũng phải bấm theo liên kết thì tôi thà vào thẳng website mình muốn đọc để tiết kiệm thời gian
  • Một trong những lý do cũ kỹ khiến một số người không muốn công khai RSS là họ muốn phần nào nắm được số người đăng ký, và gần đây tôi biết rằng nhiều trình đọc RSS lớn công bố các con số phân tích ở mức tổng quan
    Chỉ với chừng đó cũng có thể ước lượng số độc giả RSS. Sẽ tốt hơn nếu có thêm nhiều trình đọc hỗ trợ tính năng này. Nhìn vào tất cả các feed RSS tôi công khai từ sản phẩm của mình, có vẻ những client hỗ trợ giao thức giả này chỉ gồm NewsBlur, Feedly, Feedbin và inoreader
    Tôi biết được điều này nhờ bài viết của Darek Kay https://darekkay.com/blog/rss-subscriber-count/

    • Việc các trình đọc RSS lớn công khai số người đăng ký là một tính năng bổ sung hay, nhưng cũng có tác dụng hơi đẩy mọi thứ theo hướng tập trung hóa
      Tôi cố gắng gắn tham số URL như /?rss_ref=heyhomepage.com để chủ site biết rằng tôi đang theo dõi feed của họ. Chủ site có thể thấy hoặc không thấy referrer RSS này trong thống kê truy cập của họ
      Tôi không chỉ đọc toàn bộ bài viết bên trong trình đọc, mà xem phần tóm tắt ngắn rồi nhấp vào liên kết bài viết. Như vậy tôi vẫn có thể tận hưởng trang cá nhân của họ, đồng thời chủ site cũng thấy lưu lượng truy cập từ tôi rõ ràng hơn
    • Đây cũng là cách làm phổ biến ở các podcast client crawl từ phía máy chủ, và thực tế gần như cái nào cũng làm vậy
    • Cách giải quyết dễ nhất là просто kiểm tra các request phía máy chủ
      Trình đọc của tôi chạy trên terminal, nên việc hỗ trợ công cụ phân tích bằng JavaScript sẽ đi chệch hẳn mục đích ban đầu
  • Tự động phát hiện bị lỗi hoặc thiếu trên nhiều website, nên trình đọc feed Temboz của tôi thử các hậu tố này với hy vọng có RSS hoặc Atom feed ẩn ở đâu đó
    'feed', 'feed/', 'rss', 'atom', 'feed.xml', '/feed', '/feed/', '/rss', '/atom', '/feed.xml', 'index.atom', 'index.rss', 'index.xml', 'atom.xml', 'rss.xml', '/index.atom', '/index.rss', '/index.xml', '/atom.xml', '/rss.xml', '.rss', '/.rss', '?rss=1', '?feed=rss2'

  • Trước đây tôi đã làm https://hn-blogs.kronis.dev, dựa trên các feed RSS/Atom mà mọi người chia sẻ trên HN, và nó vẫn đang chạy ngầm tới giờ để lấy bài mới mỗi ngày
    Trên site có liên kết tới bài viết HN gốc và bài blog tôi viết, bài blog ở đây: https://blog.kronis.dev/articles/ever-wanted-to-read-thousan...
    Đây là một việc khá thú vị và tôi rất mừng vì công nghệ này tồn tại, nhưng mỗi người lại tích hợp theo rất nhiều cách khác nhau. Loại feed đôi khi bị báo sai, đôi khi không lấy được đầy đủ feed hoặc metadata của mục như mong muốn, lại có lỗi mạng, hoặc parser XML bị vỡ vì các chuỗi điều khiển trong văn bản
    Tôi ngày càng tin chắc rằng quy mô tập dữ liệu càng lớn thì số vấn đề tiềm ẩn bạn gặp phải càng nhiều. Bất kỳ lỗi nào có thể xảy ra thì cuối cùng bạn cũng sẽ phải xử lý nó

  • Bài này làm tôi có cảm giác như đang nhắm vào mình, nên tôi đã thêm biểu tượng RSS vào phần footer của trang
    https://github.com/gavinanderegg/gavinanderegg.github.io/com...
    Tôi từng nghĩ chỉ cần một liên kết "application/rss+xml" là đủ, nhưng tôi hiểu rằng ngày nay mọi người sẽ không mặc định cho rằng website nào cũng có liên kết như vậy. Với tư cách là người chủ yếu đọc blog qua RSS, việc làm cho nó rõ ràng hơn là rất đáng hoan nghênh
    [1] https://mastodon.social/@gavinanderegg/111362850402497489

    • Trang của tôi cũng không hiển thị RSS rõ ràng. Tôi không giỏi HTML, nên đã tham khảo cách bạn làm trên site của bạn rồi chỉnh lại cho phù hợp với site của tôi
      Giờ thì cả hai chúng ta đều đã công khai RSS
  • Tôi dùng miniflux, và khi tìm feed thì chỉ cần nhập domain vào, khoảng ba lần trong bốn lần nó sẽ tự tìm ra ở đâu đó như /rss, feed
    Sẽ tốt hơn nếu nó được hiển thị rõ ràng. Có lẽ vì thường được tích hợp sẵn trong framework và đi kèm miễn phí nên người ta không buồn phơi ra, nhưng cũng có thể đó là suy nghĩ ngây thơ

  • Việc RSS bị kìm hãm khiến tôi bực mình mỗi khi nghĩ đến

    • Ai đã kìm hãm nó cơ? Google có thể đã khai tử trình đọc tin của mình, nhưng RSS không phụ thuộc vào Google nên nó chưa từng dừng lại
      Tôi cực kỳ thích việc Wordpress tự động gắn feed cho mọi site trên internet
      Tôi xem đây như một bộ lọc. Nội dung câu view rẻ tiền thì đi chỗ khác, còn nội dung chất lượng do chính người tạo chịu trách nhiệm thì đi thẳng vào trình đọc feed của tôi. Với tôi, nó gần như là một điều may mắn trá hình
      Tất nhiên, để vun đắp một bộ sưu tập feed tốt thì cần thêm công sức. Nhưng chẳng phải mọi điều tốt đẹp trong đời đều như vậy sao? Công sức này tích lũy như lãi kép và nhanh chóng được đền đáp
      RSS muôn năm, web mở muôn năm!