Tạo file RSS 2.0 hợp lệ từ biểu mẫu, có kiểm tra lỗi trước khi tải về
Công cụ dựng file rss.xml theo đặc tả RSS 2.0: khai báo thông tin kênh, thêm bao nhiêu item tùy ý, tự escape ký tự đặc biệt và bọc CDATA khi mô tả có thẻ HTML. Phần kiểm tra soát trường bắt buộc, dạng URL, định dạng ngày RFC 822 và guid trùng, rồi cho phép chép hoặc tải file về đặt lên máy chủ.
Tính năng nổi bật
- Biểu mẫu đầy đủ cho phần kênh: tiêu đề, link trang gốc, mô tả, ngôn ngữ chọn từ danh sách, ttl và địa chỉ file feed
- Thêm và xóa item không giới hạn, mỗi item có tiêu đề, link, mô tả, pubDate, guid và chuyên mục
- Khối enclosure riêng cho podcast với URL tệp, dung lượng theo byte và kiểu MIME chọn sẵn
- Nút điền thời điểm hiện tại cho pubDate theo đúng định dạng RFC 822 kèm chênh lệch múi giờ của máy bạn
- Tự escape năm ký tự có nghĩa trong XML và tự bọc CDATA khi mô tả chứa thẻ đánh dấu
- Bảng kiểm tra chia hai mức lỗi và cảnh báo, chỉ rõ vấn đề nằm ở kênh hay ở item thứ mấy
- Tự sinh thẻ atom:link rel self và thẻ lastBuildDate, thêm guid isPermaLink đúng theo dạng giá trị bạn nhập
- Khung XML cập nhật theo từng ký tự bạn gõ, chép một nút hoặc tải thẳng file rss.xml về máy
Khi nào cần tự dựng file RSS thay vì để hệ quản trị nội dung sinh ra
Các hệ quản trị nội dung phổ biến đều sinh feed tự động, nên phần lớn website không phải làm gì. Vấn đề xuất hiện ở những nơi không có sẵn cơ chế đó: trang tĩnh dựng bằng HTML thuần, trang đặt trên nền tảng không hỗ trợ feed, hoặc bản tin nội bộ chỉ có vài chục mục mà bạn muốn phát hành cho đối tác theo dõi. Trường hợp phổ biến thứ hai là podcast: dịch vụ phân phối yêu cầu một feed đúng chuẩn với thẻ enclosure khai báo đủ URL tệp, dung lượng theo byte và kiểu MIME, thiếu một trong ba là feed bị từ chối, và nhiều người mắc ở đúng chỗ này. Trường hợp thứ ba là khi feed do hệ thống sinh ra bị hỏng và bạn cần một bản mẫu đúng chuẩn để so sánh, xem thẻ nào đang thiếu hoặc ngày tháng đang sai định dạng ở đâu. Công cụ này giải quyết cả ba: bạn điền vào biểu mẫu, phần XML dựng ngay bên cạnh theo đúng cú pháp, và bảng kiểm tra chỉ ra những lỗi mà trình đọc tin sẽ gặp trước khi bạn đưa file lên máy chủ.
Lợi ích khi sử dụng
- Không phải nhớ cú pháp XML, chỉ điền biểu mẫu và đọc kết quả dựng sẵn bên cạnh
- Ký tự đặc biệt trong tiêu đề tiếng Việt được xử lý tự động nên feed không vỡ cấu trúc
- Bảng kiểm tra bắt được đúng những lỗi khiến trình đọc và dịch vụ podcast từ chối feed
- Có sẵn khối enclosure nên dựng feed podcast không cần tra cứu thêm tài liệu
- Tải về file rss.xml đúng kiểu nội dung, đặt lên máy chủ là chạy được ngay
- Chạy hoàn toàn trong trình duyệt, nội dung bài viết của bạn không được gửi đi đâu
Cách tạo file RSS
- 1Điền ba trường bắt buộc của kênh là tiêu đề, link trang gốc dạng URL đầy đủ và mô tả, sau đó chọn ngôn ngữ và đặt ttl tính bằng phút.
- 2Nhập địa chỉ mà file feed sẽ nằm sau khi tải lên, chẳng hạn https://tenmien.com/rss.xml, để công cụ sinh thẻ atom:link rel self.
- 3Với mỗi bài viết, bấm Thêm item rồi điền tiêu đề, link bài, mô tả, và bấm nút điền thời điểm hiện tại nếu bạn không có sẵn pubDate.
- 4Đặt guid cho từng item, thường lấy chính URL bài viết; nếu cần enclosure cho podcast thì điền URL tệp, dung lượng byte và kiểu MIME.
- 5Bấm Kiểm tra để xem danh sách lỗi và cảnh báo, sửa hết phần đánh dấu lỗi rồi bấm Tải rss.xml và đặt file lên thư mục gốc tên miền.
RSS khác sitemap ở chỗ nào, và khi nào dùng cái nào
Hai loại tệp này đều là XML và đều nằm ở gốc tên miền, nên rất hay bị nhầm là thay thế được cho nhau. Thực ra chúng phục vụ hai đối tượng khác nhau. RSS là dòng nội dung dành cho người đọc và cho phần mềm đọc tin: mỗi mục mang theo tiêu đề, mô tả hoặc toàn văn, thời điểm đăng và đường dẫn, xếp theo thứ tự thời gian, và feed thường chỉ giữ vài chục mục mới nhất. Người dùng đăng ký feed vào ứng dụng đọc tin và nhận bài mới; ứng dụng podcast tải tệp âm thanh về từ thẻ enclosure trong chính feed đó. Sitemap thì là danh mục URL dành cho công cụ tìm kiếm: nó liệt kê toàn bộ địa chỉ bạn muốn được thu thập, không chứa nội dung bài, không giới hạn ở phần mới nhất, và người bình thường không bao giờ mở nó ra đọc. Sitemap giúp bộ thu thập biết trang nào tồn tại, RSS giúp người theo dõi biết bạn vừa đăng gì. Trên thực tế một website có bài đăng đều nên có cả hai. Nếu bạn đang cần danh mục URL chứ không phải dòng nội dung, hãy dùng /vi/tools/sitemap-generator để tạo và /vi/tools/xml-sitemap-validator để kiểm tra; còn muốn xem lại một tệp XML bất kỳ cho dễ đọc thì dùng /vi/tools/xml-formatter.
Các thẻ bắt buộc và thẻ nên có trong RSS 2.0
Ở cấp kênh, đặc tả RSS 2.0 bắt buộc đúng ba thẻ: title là tên kênh, link là địa chỉ trang gốc, description là mô tả kênh. Thiếu một trong ba thì feed không hợp lệ và công cụ này báo mức lỗi chứ không phải cảnh báo. Các thẻ còn lại là tùy chọn nhưng có ích thật sự. Thẻ language cho trình đọc biết ngôn ngữ nội dung, dùng mã như vi hoặc vi-VN. Thẻ ttl tính bằng phút, gợi ý cho trình đọc bao lâu nên lấy lại feed một lần; đặt 60 là hợp lý với blog đăng vài bài mỗi tuần. Thẻ lastBuildDate cho biết feed được dựng lại lần cuối lúc nào, công cụ tự điền theo thời điểm bạn sinh file. Thẻ atom:link với thuộc tính rel bằng self khai báo chính địa chỉ của feed, đây là thứ trình kiểm tra của W3C luôn nhắc khi thiếu và cũng là thứ giúp dịch vụ podcast biết feed nằm ở đâu khi nội dung bị sao chép nơi khác. Ở cấp item, quy định là mỗi item phải có ít nhất một trong hai thẻ title hoặc description, mọi thứ còn lại đều không bắt buộc về mặt cú pháp nhưng thiếu link thì người đọc không bấm sang bài gốc được.
pubDate theo RFC 822 và lý do định dạng ngày hay bị sai
Đây là chỗ khiến feed bị báo lỗi nhiều hơn bất cứ chỗ nào khác. RSS 2.0 quy định ngày tháng phải theo RFC 822, dạng đầy đủ là tên thứ viết tắt bằng tiếng Anh, dấu phẩy, ngày, tên tháng viết tắt bằng tiếng Anh, năm, giờ phút giây và cuối cùng là chênh lệch múi giờ, ví dụ Fri, 15 Aug 2025 10:30:00 +0700. Người Việt hay mắc ba lỗi. Thứ nhất là viết ngày theo kiểu quen thuộc 15/08/2025, dạng này hoàn toàn không được chấp nhận. Thứ hai là dùng chuẩn ISO 8601 kiểu 2025-08-15T10:30:00+07:00, đúng cho sitemap và cho Atom nhưng sai với RSS 2.0. Thứ ba là quên phần chênh lệch múi giờ ở cuối, khiến trình đọc phải tự đoán và sắp xếp bài sai thứ tự. Công cụ này kiểm tra pubDate bằng biểu thức khớp đúng theo cấu trúc RFC 822, chấp nhận cả dạng có giây lẫn không có giây, và chấp nhận múi giờ viết bằng số lệch hoặc bằng các tên viết tắt được đặc tả liệt kê. Nếu bạn không chắc, hãy dùng nút điền thời điểm hiện tại rồi sửa lại phần ngày giờ, giữ nguyên khung định dạng.
Escape ký tự và CDATA: vì sao tiêu đề tiếng Việt vẫn có thể làm hỏng feed
XML dành riêng năm ký tự mang ý nghĩa cú pháp là dấu và, dấu nhỏ hơn, dấu lớn hơn, dấu nháy kép và dấu nháy đơn. Chỉ cần một trong số đó xuất hiện thô trong nội dung là cả tài liệu trở nên không hợp lệ và trình đọc bỏ luôn feed chứ không bỏ riêng mục lỗi. Tình huống thực tế hay gặp nhất là tiêu đề kiểu Thiết kế website & tối ưu SEO, hoặc URL có tham số nối bằng dấu và. Công cụ này tự thay năm ký tự đó bằng thực thể tương ứng nên bạn cứ gõ tự nhiên. Riêng phần mô tả thì khác: nhiều người muốn đưa cả đoạn HTML có thẻ đậm, thẻ xuống dòng hay thẻ ảnh vào để trình đọc hiển thị đẹp. Nếu escape hết thì trình đọc sẽ in ra chuỗi thẻ thay vì hiển thị định dạng. Vì vậy khi phát hiện mô tả có chứa ký tự đánh dấu, công cụ bọc phần đó trong khối CDATA để giữ nguyên HTML mà vẫn không phá vỡ cấu trúc tài liệu, và giao diện hiện dòng nhắc màu vàng ngay dưới ô để bạn biết điều đó đang xảy ra. Trường hợp hiếm mà chính nội dung chứa chuỗi kết thúc CDATA cũng đã được xử lý bằng cách cắt đôi chuỗi ấy.
guid, enclosure và ba việc phải làm sau khi tải file lên máy chủ
Thẻ guid là mã định danh duy nhất của một mục, dùng để trình đọc biết mục nào đã hiển thị rồi. Nếu bạn bỏ trống, trình đọc buộc phải đoán theo link hoặc theo tiêu đề, và mỗi lần bạn sửa tiêu đề một bài cũ thì bài đó lại hiện lên như bài mới với tất cả người theo dõi. Thông lệ tốt là lấy chính URL bài viết làm guid; khi giá trị bắt đầu bằng http, công cụ đặt thuộc tính isPermaLink thành true, còn với chuỗi bất kỳ thì đặt false. Quan trọng nhất là guid không được trùng giữa hai mục, và phần kiểm tra sẽ báo lỗi khi phát hiện trùng. Với podcast, thẻ enclosure cần đủ ba thuộc tính: url tệp âm thanh, length là dung lượng tính bằng byte chứ không phải megabyte, và type là kiểu MIME đúng với định dạng tệp. Sau khi tải file về, có ba việc phải làm. Một là đặt file ở thư mục gốc tên miền để địa chỉ trùng với giá trị bạn đã khai trong thẻ atom:link. Hai là thêm dòng khai báo link rel alternate type application rss xml vào phần head của mọi trang để trình duyệt và trình đọc tự tìm thấy. Ba là kiểm tra máy chủ trả về đúng kiểu nội dung application/rss+xml; nếu Nginx trả text/plain thì trình đọc thường vẫn nhận nhưng một số dịch vụ podcast sẽ từ chối.
Câu hỏi thường gặp (FAQ)
RSS và sitemap khác nhau thế nào, có cần cả hai không?
RSS là dòng nội dung cho người đọc và phần mềm đọc tin, mang theo tiêu đề, mô tả và thời điểm đăng của từng bài, thường chỉ giữ các mục mới nhất. Sitemap là danh mục URL cho công cụ tìm kiếm, liệt kê toàn bộ địa chỉ và không chứa nội dung. Website có bài đăng đều nên có cả hai vì chúng phục vụ hai đối tượng khác nhau.
pubDate phải viết theo định dạng nào?
Theo RFC 822, dạng Fri, 15 Aug 2025 10:30:00 +0700. Tên thứ và tên tháng viết tắt bằng tiếng Anh, cuối chuỗi phải có phần chênh lệch múi giờ. Viết 15/08/2025 hay viết theo ISO 8601 kiểu 2025-08-15T10:30:00+07:00 đều bị công cụ báo lỗi vì trình đọc RSS không hiểu.
Feed của tôi có bao nhiêu item là hợp lý?
Thông lệ là giữ từ mười đến năm mươi mục mới nhất. Feed quá dài làm tệp nặng và trình đọc phải tải lại toàn bộ mỗi lần cập nhật, trong khi người theo dõi chỉ quan tâm phần mới. Đặc tả không giới hạn số item, đây thuần túy là chuyện hiệu quả vận hành.
Bỏ trống guid có sao không?
Feed vẫn hợp lệ nhưng trình đọc phải tự đoán mục nào đã hiển thị, thường dựa vào link hoặc tiêu đề. Hậu quả là mỗi lần bạn sửa tiêu đề một bài cũ, bài đó hiện lại như bài mới với mọi người theo dõi. Nên lấy chính URL bài viết làm guid và không bao giờ đổi giá trị đó.
Mô tả của tôi có thẻ HTML, feed có bị lỗi không?
Không, công cụ tự phát hiện và bọc phần đó trong khối CDATA để giữ nguyên HTML mà không phá vỡ cấu trúc XML, đồng thời hiện dòng nhắc màu vàng dưới ô. Nhờ vậy trình đọc hiển thị đúng định dạng thay vì in ra chuỗi thẻ.
Tiêu đề có dấu và hoặc dấu ngoặc nhọn thì xử lý ra sao?
Công cụ tự thay năm ký tự có nghĩa trong XML bằng thực thể tương ứng, nên bạn cứ gõ tự nhiên. Đây là lỗi khiến feed hỏng nhiều nhất khi người ta viết XML bằng tay, vì chỉ một ký tự thô là trình đọc bỏ toàn bộ feed chứ không bỏ riêng mục lỗi.
Làm feed podcast thì cần thêm gì?
Cần điền khối enclosure của từng item với đủ ba thứ: URL tệp âm thanh, dung lượng tính bằng byte chứ không phải megabyte, và kiểu MIME đúng với định dạng tệp. Lưu ý nhiều nền tảng podcast còn đòi thêm các thẻ thuộc không gian tên riêng của họ, phần đó công cụ này chưa sinh ra.
Thẻ ttl nên đặt bao nhiêu?
Ttl tính bằng phút và chỉ là gợi ý cho trình đọc về khoảng thời gian nên lấy lại feed. Blog đăng vài bài mỗi tuần đặt 60 là hợp lý. Trang tin cập nhật liên tục có thể đặt thấp hơn, nhưng nhiều trình đọc bỏ qua thẻ này và tự quyết định theo lịch riêng.
Đặt file rss.xml ở đâu và khai báo thế nào?
Đặt ở thư mục gốc tên miền, ví dụ https://tenmien.com/rss.xml, đúng bằng địa chỉ bạn đã điền vào ô địa chỉ feed. Sau đó thêm thẻ link rel alternate type application rss xml trỏ tới địa chỉ đó vào phần head của mọi trang để trình duyệt và trình đọc tự tìm thấy.
Máy chủ trả sai kiểu nội dung có ảnh hưởng gì không?
Có. Feed phải được trả về với kiểu application/rss+xml. Nếu máy chủ trả text/plain thì phần lớn trình đọc vẫn chấp nhận, nhưng một số dịch vụ podcast và một số trình kiểm tra sẽ từ chối. Với Nginx, bạn khai kiểu nội dung cho đuôi xml trong cấu hình của site.
Công cụ kiểm tra ở đây có thay được trình kiểm tra chính thức không?
Không hoàn toàn. Phần kiểm tra ở đây soát các lỗi phổ biến nhất: thiếu trường bắt buộc, link không phải URL đầy đủ, ttl không phải số nguyên, pubDate sai RFC 822 và guid trùng. Sau khi tải file lên máy chủ, nên chạy thêm trình kiểm tra chính thức của W3C để soát các trường hợp hiếm.
Nội dung tôi nhập vào có bị gửi lên máy chủ không?
Không. Toàn bộ việc dựng XML và kiểm tra chạy bằng JavaScript trong trình duyệt, không có lệnh gọi mạng nào. Nút tải file cũng chỉ tạo tệp ngay trên máy bạn từ nội dung đang hiển thị chứ không đi qua bất kỳ máy chủ trung gian nào.
Từ khóa liên quan
- tạo file rss
- rss feed generator
- tạo rss.xml cho website
- rss 2.0 là gì
- cấu trúc file rss
- pubdate rfc 822
- định dạng ngày trong rss
- guid trong rss là gì
- enclosure podcast rss
- tạo feed podcast
- rss khác sitemap thế nào
- atom:link rel self
- cdata trong xml
- escape ký tự đặc biệt xml
- khai báo rss trong thẻ head
- kiểm tra rss hợp lệ
- ttl trong rss
- content type application rss xml
- tạo rss cho trang tĩnh
- công cụ tạo rss miễn phí
