播客提交到 Apple Podcasts 时校验不通过,提示 enclosure 标签缺少 length 属性,音频在别的播放器里却能正常播放。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

curl -sI https://example.com/ep12.mp3 | findstr /i "content-length content-type"
# 把两个值分别填进 length 与 type

enclosure 必须带 url、length、type 三个属性,缺一个就不合规。length 要写字节数,写成文件大小的近似值或留空都不行。type 必须是 audio/mpeg 这类完整 MIME。这一点先确认清楚,后面就不用反复试。

「播客 feed 校验」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

改完隔一天再看一次,当场正常不代表能稳住。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。

线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

具体做法是,用 HEAD 请求取音频的 Content-Length 和 Content-Type,直接写进 enclosure;确认音频地址是直链,跳转会让校验抓不到文件;补上 itunes 命名空间和 duration,缺这两项审核也会打回。

改完照着核一遍,重新提交后校验通过,单集音频在 Apple Podcasts 里能直接播放。

作者 9823189