Contensio logo

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:link self-reference (required by some validators)
  • content:encoded with 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

  1. Click New episode
  2. Fill in the title - click Generate from title to auto-fill the slug
  3. Paste the audio file URL and select the audio type
  4. Fill in duration (H:MM:SS or M:SS) and optional file size
  5. Set episode number, season, and type if needed
  6. Add chapter markers in the Chapters section
  7. Write show notes in the textarea (HTML allowed)
  8. Set status to Published and a publish date
  9. 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 extensions
  • xmlns:content - Full HTML show notes via content:encoded
  • xmlns:atom - atom:link self-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