Podcast Manager
Podcast manager for Contensio. Episode management, HTML5 player, chapter markers, RSS 2.0 / Apple Podcasts feed.
About this plugin
Podcast Manager - Contensio Plugin
Full podcast management for Contensio. Create and publish episodes with show notes and chapter markers, serve a valid RSS 2.0 / Apple Podcasts compatible feed, and embed a responsive HTML5 audio player anywhere in your theme.
Requirements
- Contensio 2.3 or later
Installation
Composer
composer require contensio/plugin-podcast
No migration needed - episodes are stored in the core contensio_plugin_entries shared table.
Manual
Copy the plugin directory and activate it from the admin plugin manager.
Features
Episode management
- Title, slug, show notes (HTML supported)
- Episode number, season number, episode type (full / trailer / bonus)
- Explicit content flag per episode
- Per-episode artwork URL (overrides show artwork in the feed)
- Draft / Published status with publish date
Audio
- Hosted audio URL (MP3, OGG, M4A, WAV, AAC)
- Duration (H:MM:SS display) and file size (used in RSS enclosure)
Chapters
- Timed chapter markers per episode (stored as JSON on the episode)
- Rendered in the player as clickable progress-bar markers and a collapsible chapter list
- Chapter buttons on the public episode page seek the player to that timestamp
RSS 2.0 / Apple Podcasts feed
- Full iTunes namespace support:
itunes:author,itunes:category,itunes:explicit,itunes:duration,itunes:episode,itunes:season,itunes:episodeType,itunes:image atom:linkself-reference (required by some validators)content:encodedwith full HTML show notes- Episode artwork fallback to show artwork
- Feed URL:
yourdomain.com/{prefix}/feed.xml(default:/podcast/feed.xml)
Embedded player
- Responsive HTML5 player with custom controls
- Play/pause, 15s skip back, 30s skip forward
- Progress bar with chapter position markers
- Playback speed selector (0.5x to 2x)
- Collapsible in-player chapter list with timestamps
Public pages
- Episode listing page:
/{prefix}/episodes - Individual episode page:
/{prefix}/episodes/{slug}with player, show notes, chapter list, and subscribe links
Admin
Navigate to Podcast in the admin sidebar.
Creating an episode
- Click New episode
- Fill in the title - click Generate from title to auto-fill the slug
- Paste the audio file URL and select the audio type
- Fill in duration (H:MM:SS or M:SS) and optional file size
- Set episode number, season, and type if needed
- Add chapter markers in the Chapters section
- Write show notes in the textarea (HTML allowed)
- Set status to Published and a publish date
- Click Create episode
Settings
Go to Podcast > Settings (gear icon).
| Setting | Description |
|---|---|
| URL prefix | Path prefix for all public URLs (default: podcast) |
| Show title | The podcast name shown in the feed and on public pages |
| Description | Show description (required by Apple Podcasts) |
| Author name | Shown as itunes:author in the feed |
| Author email | Optional, shown in itunes:owner |
| Website URL | Linked from the feed <link> element |
| Language | ISO 639-1 language code |
| iTunes category | Category for Apple Podcasts directory |
| Explicit | Mark the entire show as explicit |
| Artwork URL | Show cover image (min 1400x1400px, required by Apple Podcasts) |
Using in themes
Embedded player
Include the player partial anywhere in a theme view:
@include('contensio-podcast::partials.player', ['episode' => $episode])
The player renders a self-contained block with all controls and inline JavaScript. Multiple players on the same page work independently.
Episode listing page
The plugin registers a public episode listing page at /{prefix}/episodes automatically. The view extends layouts.public, so it will use your theme's public layout.
Override public views
Publish the views to your application and customise them:
php artisan vendor:publish --tag=contensio-podcast-views
Views are published to resources/views/vendor/contensio-podcast/.
Data storage
Episodes are stored in contensio_plugin_entries:
| Column | Value |
|---|---|
plugin |
contensio/plugin-podcast |
type |
episode |
title |
episode title |
slug |
URL slug |
content |
show notes (HTML) |
status |
published or draft |
data |
JSON: { audio_url, audio_type, duration (s), file_size, season, episode_number, episode_type, explicit, image_url, published_at, chapters: [{start (s), title}] } |
Settings are stored in the settings table under plugin_options / contensio/plugin-podcast.
RSS feed compatibility
The generated feed passes Apple Podcasts validation. Tested namespaces:
xmlns:itunes- Apple Podcasts / iTunes extensionsxmlns:content- Full HTML show notes viacontent:encodedxmlns:atom-atom:linkself-reference
Submit your feed URL to:
- Apple Podcasts: podcastsconnect.apple.com
- Spotify: podcasters.spotify.com
- Google Podcasts / YouTube Music: via RSS import
License
AGPL-3.0-or-later