PodcastFeedMaker
Publié le · Mis à jour le · 4 min
L'histoire
Tout a commencé par un besoin simple : générer des flux RSS podcast propres, conformes aux standards, sans bidouiller du XML à la main.
Entre 2006 et 2012, je produisais des podcasts de musique électronique. À l'époque, je gérais tout avec un backoffice maison en PHP — du bricolage qui fonctionnait, mais qui demandait une énergie folle pour rester compatible avec iTunes, les agrégateurs, les validateurs.
Des années plus tard, en travaillant sur des projets audio, le besoin est revenu. Sauf que cette fois, je voulais faire les choses bien : une lib Swift moderne, typée, testée, qui respecte tous les standards actuels — Apple Podcasts, Podcast Namespace, PSP-1.
C'est en développant cette librairie que l'idée de Podcast Maker est née. La lib d'abord, l'app ensuite.
C'est quoi PodcastFeedMaker ?
PodcastFeedMaker est un package Swift (SPM) pour générer des flux RSS 2.0 podcast. Pas un wrapper, pas un générateur de templates — une vraie modélisation objet du format RSS avec tous ses namespaces.
Ce qu'elle fait :
Génère des flux RSS 2.0 valides et complets
Supporte les tags Apple Podcasts (namespace iTunes)
Supporte le Podcast Namespace (podcastindex.org)
Respecte la spécification PSP-1 (Podcast Standards Project)
Valide automatiquement les formats (dates RFC, URLs, booléens)
Passe les validateurs : podba.se, CastFeedValidator, Apple
Les briques principales :
Feed — Le flux complet
Channel — Les métadonnées du podcast (titre, description, artwork...)
Item — Un épisode avec son enclosure média
Namespace — Injection des namespaces XML (itunes, podcast, atom...)
Pour qui ?
Développeurs Swift qui construisent des apps ou services liés au podcast :
Apps de création/publication de podcasts
Backends Swift qui génèrent des flux
Outils CLI de validation ou migration
Services d'hébergement podcast
À terme, l'ambition est d'élargir au-delà de Swift — via un bridge C et des XCFrameworks pour du cross-platform.
Ce qui fait la différence
Respect total des standards
Pas de compromis. RSS 2.0, Atom, iTunes, Podcast Namespace, PSP-1 — tout est implémenté selon les spécifications officielles.
Pensé pour la performance
La lib est conçue pour le traitement de masse. Génération asynchrone, streaming XML, capable de gérer des catalogues de 100 000+ épisodes sans broncher.
Typage fort, zéro surprise
Chaque tag, chaque attribut est typé. Les dates sont des Date, les URLs des URL, les durées des Duration. Pas de strings magiques, pas d'erreurs runtime.
Testé, vraiment
Couverture de code supérieure à 95%. Chaque namespace, chaque tag, chaque cas limite est couvert. La CI tourne sur chaque commit.
Extensible
L'architecture permet d'ajouter ses propres tags via le protocole XmlRepresentable. Besoin d'un namespace custom ? C'est prévu.
Exemple d'utilisation
Installation
Via Swift Package Manager :
Documentation
Documentation DocC auto-générée et hébergée
Documentation inline dans Xcode (⌥ + Click)
Exemples complets : flux minimal, flux PSP-1 recommandé, flux complexe
Open Source
PodcastFeedMaker est open-source sous licence Apache 2.0. Les contributions sont les bienvenues — que ce soit pour ajouter des tags, améliorer la doc, ou signaler des bugs.
Le projet suit des standards stricts : commits conventionnels, tests obligatoires pour chaque PR, documentation DocC pour toutes les APIs publiques.
Roadmap
Couverture complète RSS + Apple + Podcast Namespace ✓
Documentation DocC sur GitHub Pages ✓
CI/CD avec code coverage ✓
Swift Macros pour composer les flux déclarativement (en cours)
Support Podlove Simple Chapters (PSC)
CLI de validation de flux
Import de flux existants
Sous le capot
Swift 6 ready — Concurrency moderne, Sendable, actors
Async XML generation — Streaming pour les gros volumes
Protocol-oriented — Extensibilité via XmlRepresentable
Zero dependencies — Que du Swift standard
Multi-platform — macOS, iOS, Linux (serveur)
Liens
PodcastFeedMaker sur GitHub
Package Swift pour générer des flux RSS podcast conformes aux standards.