Cấu trúc và yêu cầu của RSS 2.0 đối với Podcast
Một nguồn cấp dữ liệu podcast hoạt động dựa trên nền tảng XML, cụ thể là đặc tả RSS 2.0. Để đảm bảo các ứng dụng đọc podcast có thể xử lý dữ liệu một cách chính xác, tài liệu XML được cung cấp phải tuân thủ nghiêm ngặt các quy tắc định dạng cấu trúc.
Trước hết, công cụ yêu cầu giới hạn ký tự cho mỗi lần kiểm tra là 500.000 ký tự. Nếu vượt quá giới hạn này, hệ thống sẽ không xử lý. Khi bắt đầu phân tích, tài liệu XML phải đảm bảo tính hợp lệ về mặt cú pháp. Nếu XML bị lỗi cấu trúc, trình xác thực sẽ hiển thị thông báo lỗi: "Hãy sửa XML không đúng định dạng, sau đó xác thực lại.". Ngoài ra, sự xuất hiện của khai báo DOCTYPE sẽ ngăn cản quá trình kiểm tra, yêu cầu người dùng: "Xóa khai báo DOCTYPE trước khi kiểm tra feed này.".
Về mặt cấu trúc thẻ, các quy tắc sau đây là bắt buộc đối với một nguồn cấp RSS podcast chuẩn hóa:
- Gốc tài liệu phải là
<rss>. Nếu không đúng, lỗi "Gốc tài liệu phải là <rss>." sẽ xuất hiện. - Thuộc tính
versioncủa thẻ<rss>bắt buộc phải được đặt là "2.0". Nếu sai, hệ thống báo lỗi: "Đặt thuộc tính version của <rss> thành 2.0.". - Thẻ
<rss>phải chứa đúng một phần tử con trực tiếp<channel>. Nếu số lượng phần tử này khác một, lỗi "RSS phải chứa đúng một phần tử con trực tiếp <channel>; đã tìm thấy‹count›." sẽ được kích hoạt.
Yêu cầu kỹ thuật từ Apple Podcasts
Bên cạnh các tiêu chuẩn RSS 2.0 cơ bản, các nền tảng phân phối lớn như Apple Podcasts áp dụng các quy tắc nghiêm ngặt riêng để nhận diện và hiển thị nội dung.
Đầu tiên, không gian tên (namespace) của Apple Podcasts phải được khai báo rõ ràng trên thẻ <rss>. Nếu thiếu khai báo này, hệ thống sẽ báo lỗi: "Khai báo namespace Apple Podcasts trên <rss>: ‹namespace›".
Đối với các trường thông tin trong kênh (<channel>) và các tập (<item>), các quy tắc xác thực bao gồm:
- Trường bắt buộc: Nếu thiếu bất kỳ trường bắt buộc nào của kênh hoặc tập phim, hệ thống sẽ hiển thị lỗi: "Thêm
‹field›cần thiết.". - Đường dẫn liên kết: Các liên kết tài nguyên phải sử dụng giao thức bảo mật. Nếu không hợp lệ, lỗi "
‹field›phải là URL HTTP hoặc HTTPS hoàn chỉnh." sẽ xuất hiện. - Hình ảnh: Thuộc tính liên kết của ảnh bìa phải chính xác. Nếu sai, lỗi "Đặt itunes:image href thành URL HTTP hoặc HTTPS hoàn chỉnh." sẽ hiển thị.
- Danh mục: Phân loại danh mục không được để trống. Lỗi "Thêm thuộc tính text không trống vào itunes:category." sẽ xuất hiện nếu thuộc tính này bị bỏ sót.
- Nội dung nhạy cảm: Thẻ
<itunes:explicit>chỉ chấp nhận hai giá trị logic. Nếu nhập sai, lỗi "Đặt itunes:explicit thành true hoặc false." sẽ được thông báo. - Số lượng tập: Một kênh podcast không thể trống. Hệ thống yêu cầu: "Thêm ít nhất một tập <item> vào kênh.".
- Cấu trúc chuỗi: Đối với các chương trình được thiết lập theo dạng nối tiếp (serial), mỗi tập phim cần có số thứ tự rõ ràng. Nếu thiếu, lỗi "Các chương trình nối tiếp cần số nguyên dương itunes:episode cho mỗi tập." sẽ được kích hoạt.
Xác thực thuộc tính tệp đính kèm âm thanh (Enclosure)
Thẻ <enclosure> trong mỗi tập phim là thành phần chứa thông tin tệp âm thanh thực tế. Mỗi tập phim chỉ được phép chứa duy nhất một thẻ <enclosure>. Nếu phát hiện nhiều hơn, hệ thống sẽ báo lỗi: "Giữ chính xác một <enclosure> trong tập này; đã tìm thấy ‹count›.".
Các thuộc tính bên trong thẻ <enclosure> được kiểm tra kỹ lưỡng theo các quy tắc sau:
- Thuộc tính bắt buộc: Nếu thiếu thuộc tính, lỗi "Thêm thuộc tính
‹attribute›được yêu cầu vào <enclosure>." sẽ xuất hiện. - URL tệp: Phải là một đường dẫn tuyệt đối hoạt động qua giao thức web. Nếu không hợp lệ, lỗi "Đặt thuộc tính url của <enclosure> thành URL HTTP hoặc HTTPS hoàn chỉnh." sẽ hiển thị.
- Dung lượng tệp: Thuộc tính
lengthphải biểu thị dung lượng bằng số byte nguyên. Nếu định dạng sai, lỗi "Đặt thuộc tính length của <enclosure> thành số byte nguyên." sẽ xuất hiện. Trong trường hợp dung lượng bằng 0, hệ thống đưa ra cảnh báo: "Thuộc tính length của <enclosure> bằng 0. Hãy xác nhận số byte thực trước khi xuất bản.". - Loại MIME: Định dạng tệp phải được khai báo chính xác. Nếu loại MIME không hợp lệ, lỗi "Sử dụng loại MIME hợp lệ, chẳng hạn như audio/mpeg." sẽ hiển thị. Nếu tệp không thuộc định dạng âm thanh, hệ thống cảnh báo: "<enclosure> này không được đánh dấu là âm thanh. Hãy xác nhận tập này được chủ ý phát hành dưới dạng video hoặc tài liệu.".
- Sự đồng nhất: Tên tệp và loại MIME phải khớp nhau. Nếu có sự mâu thuẫn giữa phần mở rộng của tệp và loại MIME đã khai báo, cảnh báo "Tên tệp phương tiện và loại MIME không đồng nhất (
‹extension›so với‹mime›)." sẽ xuất hiện. - Trùng lặp: URL của tệp âm thanh không được lặp lại giữa các tập. Nếu trùng, lỗi "URL trong <enclosure> này lặp lại giá trị ở dòng
‹first›." sẽ hiển thị. Tương tự, mã định danh duy nhất của tập phim cũng không được phép trùng lặp. Nếu trùng GUID, lỗi "GUID này lặp lại giá trị tại dòng‹first›." sẽ xuất hiện.
Định dạng ngày tháng theo chuẩn RFC 2822
Việc sắp xếp và hiển thị các tập podcast trên các ứng dụng phụ thuộc hoàn toàn vào thẻ ngày xuất bản <pubDate>. Nếu thiếu thẻ này, hệ thống sẽ đưa ra cảnh báo: "Thêm <pubDate> để ứng dụng podcast có thể sắp xếp và xuất bản tập này chính xác.".
Định dạng ngày tháng bắt buộc phải tuân thủ tiêu chuẩn RFC 2822. Nếu ngày tháng không tồn tại trên lịch thực hoặc sai cấu trúc, lỗi sau sẽ xuất hiện: "Sử dụng ngày RFC 2822 với ngày và múi giờ theo lịch thực, ví dụ: Sat, 01 Apr 2023 19:00:00 +0000.".
Bên cạnh đó, việc sử dụng tên múi giờ bằng chữ (ví dụ: EST, GMT) có thể gây ra lỗi không tương thích trên một số thiết bị. Do đó, nếu phát hiện múi giờ dạng chữ, hệ thống sẽ đưa ra cảnh báo: "Múi giờ có tên này được chấp nhận nhưng kém tương thích hơn; nên dùng độ lệch dạng số như +0000.".
Cách đọc kết quả chẩn đoán và sửa lỗi
Khi bạn dán mã nguồn XML vào trường nhập liệu "Podcast RSS XML" và nhấn "Xác thực", công cụ sẽ tiến hành phân tích tĩnh. Kết quả sẽ được hiển thị dưới mục "Chẩn đoán nguồn cấp".
Hệ thống sẽ liệt kê tổng số lỗi và cảnh báo tìm thấy theo định dạng "‹count› lỗi" và "‹count› cảnh báo", cùng với tổng số tập phim được nhận diện qua "‹count› tập". Nếu nguồn cấp hoàn toàn sạch, thông báo "Không tìm thấy vấn đề về cấu trúc." sẽ xuất hiện. Ngược lại, thông báo "Đã tìm thấy ‹errors› lỗi và ‹warnings› cảnh báo." sẽ tóm tắt tình trạng nguồn cấp.
Để giúp bạn định vị chính xác vị trí lỗi trong file XML lớn, mỗi lỗi sẽ đi kèm với:
- Vị trí chính xác: "Dòng
‹line›, cột‹column›". - Đường dẫn XPath đến phần tử lỗi: "Sửa lỗi:
‹path›". - Liên kết điều hướng nhanh: "Vào
‹path›tại dòng‹line›".
Nếu danh sách lỗi quá dài, hệ thống sẽ rút gọn và hiển thị thông báo: "Đang hiển thị ‹shown› vấn đề đầu tiên trong tổng số ‹total›.". Trong trường hợp trình phân tích cú pháp XML gặp sự cố sâu hơn, thông tin chi tiết sẽ được cung cấp qua dòng: "Chi tiết trình phân tích cú pháp: ‹detail›".
Giới hạn của việc xác thực tĩnh
Người dùng cần lưu ý rằng công cụ này thực hiện kiểm tra cấu trúc tĩnh. Điều này đồng nghĩa với việc công cụ không tiến hành tải xuống, giải mã hoặc kiểm tra tính hoạt động thực tế của các URL hình ảnh, URL nguồn cấp hoặc tệp âm thanh được khai báo trong thẻ <enclosure>.
Một nguồn cấp dữ liệu vượt qua tất cả các kiểm tra tĩnh của công cụ và hiển thị trạng thái hợp lệ không đồng nghĩa với việc nguồn cấp đó chắc chắn sẽ được các danh mục podcast như Apple Podcasts hay Spotify chấp nhận hoặc xuất bản thành công. Các nền tảng này có thể áp dụng thêm các quy trình kiểm tra động từ xa, kiểm tra bản quyền hoặc các tiêu chuẩn nội dung riêng biệt khác.
Ngoài ra, đối với các nguồn cấp có số lượng tập quá lớn, hệ thống sẽ đưa ra cảnh báo hiệu suất: "Nguồn cấp này có ‹count› tập; Apple Podcasts chỉ hiển thị 2.000 tập mới nhất.".
Quyền riêng tư và xử lý dữ liệu
Quy trình kiểm tra nguồn cấp dữ liệu podcast của bạn được thực hiện trực tiếp và hoàn toàn trong trình duyệt web của người dùng. Không có bất kỳ dữ liệu XML, thông tin cá nhân hay nội dung nguồn cấp nào được tải lên máy chủ hoặc lưu trữ lại bởi BroBroGo.
Câu hỏi thường gặp
Trình xác thực Podcast RSS này kiểm tra những gì?
Công cụ kiểm tra cấu trúc RSS 2.0 XML, các trường RSS bắt buộc và trường Apple Podcasts thường dùng, cùng thuộc tính <enclosure>, giá trị trùng lặp và ngày RFC 2822.
Nó có kiểm tra tập tin âm thanh không?
Công cụ kiểm tra URL trong <enclosure>, số byte, loại MIME, URL trùng lặp và sự khớp nhau giữa tên tệp với loại tệp. Tệp âm thanh không được tải xuống hoặc giải mã.
feed có được chấp nhận ở mọi nơi không? Không. Ứng dụng và danh mục podcast có thể áp dụng thêm quy tắc và kiểm tra từ xa. Kết quả đạt chỉ có nghĩa là XML đã dán vượt qua các kiểm tra tĩnh hiển thị tại đây.
Tại sao tôi nhận được thông báo lỗi về DOCTYPE? Khai báo DOCTYPE không được phép tồn tại trong nguồn cấp dữ liệu podcast khi kiểm tra bằng công cụ này. Bạn cần loại bỏ dòng khai báo này khỏi tài liệu XML trước khi tiến hành xác thực lại.