Validate podcast RSS feed against specification standards. Checks channel metadata, episode elements, XML structure, and file metadata accuracy...
You are validating a podcast RSS feed against the Yudame RSS specification standards defined in docs/RSS-specification.md.
You should receive:
podcast/feed.xmldocs/RSS-specification.mdRead docs/RSS-specification.md to understand:
Read podcast/feed.xml to analyze:
Check against Section 1 requirements:
ā Core Metadata:
<title> present<link> present and valid URL<description> present<language> = "en-us"ā Contact & Rights:
<copyright> = "Ā© 2025 Yudame Inc. For research and educational use."<managingEditor> = "valor@yuda.me (Valor Engels)"<webMaster> = "valor@yuda.me (Valor Engels)"<lastBuildDate> present in RFC 2822 format<ttl> = "1440"ā iTunes Metadata:
<itunes:author> = "Valor Engels"<itunes:summary> present<itunes:owner> with name and email (valor@yuda.me)<itunes:explicit> = "no"<itunes:category> includes: Science, Education, Technology<itunes:image> present with valid URL<itunes:type> = "episodic"ā Namespaces:
For each episode (or most recent if specified), check against Section 2 & 3:
ā Core Episode Data:
<title> present and follows naming convention<description> present (plain text with report link)<content:encoded> present with HTML CDATA format<![CDATA[...]]><author> = "valor@yuda.me (Valor Engels)"<pubDate> in RFC 2822 format<enclosure> with url, length (bytes), type="audio/mpeg"<guid> uses episode audio file URLā iTunes Episode Data:
<itunes:author> = "Valor Engels"<itunes:duration> in HH:MM:SS or MM:SS format<itunes:explicit> = "no"<itunes:episodeType> = "full" (or trailer/bonus)<itunes:keywords> present<itunes:image> present (optional but recommended)ā Series Metadata (if episode is part of a series):
<itunes:season> present with number<itunes:episode> present with number<research:series> present with series nameIf validating a specific episode:
<enclosure length> matches actual filels -l podcast/episodes/path/file.mp3 | awk '{print $5}'_transcript.json or use ffmpeg -i file.mp3 2>&1 | grep Durationxmllint --noout podcast/feed.xml to check for XML errorsFor the episode description and content:encoded:
Provide a validation report in this format:
# RSS Feed Validation Report
## Feed: podcast/feed.xml
**Validation Date:** YYYY-MM-DD HH:MM:SS
## Channel-Level Validation
### ā
Passed
- [List elements that passed validation]
### ā Failed
- [List elements that failed with specific issues]
### ā ļø Warnings
- [List recommendations or optional elements missing]
## Episode Validation: [Episode Title]
### ā
Passed
- [List episode elements that passed]
### ā Failed
- [List episode elements that failed with specific issues]
### ā ļø Warnings
- [List recommendations]
## File Metadata Verification
- **Expected file size:** [bytes from feed]
- **Actual file size:** [bytes from file system]
- **Match:** ā
Yes / ā No
- **Expected duration:** [duration from feed]
- **Actual duration:** [duration from audio file]
- **Match:** ā
Yes / ā No
## XML Structure
- **XML validation:** ā
Valid / ā Invalid
- **Issues found:** [List any XML parsing errors]
## Overall Status
**Feed Status:** ā
VALID / ā ļø VALID WITH WARNINGS / ā INVALID
**Issues to address:** [Count]
**Warnings:** [Count]
## Action Items
- [ ] [List specific fixes needed]
- [ ] [List recommendations]
If validation fails:
A feed is considered VALID when:
A feed gets WARNINGS when:
A feed is INVALID when: