Live preview

WidgetsUpdated Mar 6, 2026
Firesky

Media Library

A sermon and media library with series grouping and video playback. Organize your church's video content into series and let visitors browse and watch directly on your website.

Supported Providers

  • Firesky — Data managed in Dashboard → Widgets → Media Library. Available to all churches.

Embed

<fs-media-library></fs-media-library>

Optional Attributes

AttributeDescriptionDefault
media-labelPlural label for media itemsSermons
media-label-singularSingular label (derived from media-label if not set)Derived
layoutDisplay layout: series (default) or videosseries
series-idUUID of a series to open immediately as the page entry foldernone
showInitial view: all (default) or latest (open the newest item straight away)all

Examples:

<!-- Default: series grid → series modal → player -->
<fs-media-library></fs-media-library>

<!-- Custom label for a video-focused church -->
<fs-media-library media-label="Messages"></fs-media-library>

<!-- Full custom labels -->
<fs-media-library media-label="Videos" media-label-singular="Video"></fs-media-library>

<!-- Flat video grid: skip the series popup, click any video to play directly -->
<fs-media-library layout="videos" media-label="Videos"></fs-media-library>

<!-- Open a specific series (folder) immediately -->
<fs-media-library series-id="SERIES-UUID"></fs-media-library>

<!-- Flat grid of videos in one folder and its nested series -->
<fs-media-library series-id="SERIES-UUID" layout="videos"></fs-media-library>

Layout modes

layout="series" (default) — The classic experience:

  1. Browse a grid of series cards
  2. Click a series to open a series detail popup
  3. Click a video in the popup to open the player

layout="videos" — A flat video list, ideal for YouTube-synced channels:

  1. Browse a flat grid of all videos (newest first), skipping the series layer
  2. Click any video card to open the player directly

series-id — Skip the library home grid and open one series as the page. Nested series appear as folders inside that series. Combined with layout="videos", the widget shows only videos in that folder and its nested series.

series-id also scopes what the widget loads: only that series and its nested series are fetched, which is what lets an unlisted series resolve.

Unlisted series — a dedicated page for one series

Some content belongs on its own page rather than in the main library: a monthly prayer guide, a newsletter archive, a set of leader resources. Set the series' Visibility to Unlisted, then point a widget at it with series-id.

Every series has one of three visibility settings:

SettingIn the library gridVia series-id
VisibleYesYes
UnlistedNoYes
HiddenNoNo

Unlisted is the one to use for a series that has its own page. Hidden takes a series offline everywhere, including direct series-id links — if a page using series-id reports no media, check the series isn't Hidden.

An unlisted series — and everything nested inside it — is absent from the library payload entirely. It never appears on your main media page, and it loads only where a widget names it with series-id.

Unlisted means not indexed, not private. The series ID is visible in the page source of whatever page embeds it, and anyone with it can load the series from one of your allowed origins. Use Hidden to take a series offline everywhere instead.

Publishing on a schedule

With show="latest" the widget opens the current item on load, and an item's date becomes its publish date:

  • The newest item dated today or earlier is the one that opens
  • Items dated in the future are hidden — not in the viewer, not in the archive
  • On the item's date it takes over, with no further action

A monthly guide can be uploaded weeks ahead: set October's date to Oct 1, and the page keeps showing September until it swaps itself over. Visitors reach earlier items through Back to library.

<fs-media-library
  series-id="SERIES-UUID"
  show="latest"
  layout="videos"
  media-label="Prayer Guides"
></fs-media-library>

Copy a ready-to-paste snippet from Dashboard → Widgets → Media Library (Copy on a series).

Both layouts share the same URL-based deep linking (?item=<id>, ?latest=1).

Features

  • Series grid — Displays all series with thumbnail, title, and video count
  • Flat video grid — Optional layout="videos" skips the series popup
  • Series detail — Click a series to see all videos in it (series layout only)
  • Video playback — Embedded YouTube player or HTML5 video with title and description
  • Deep linking — Series and video state is reflected in the URL for shareable links
  • Responsive — Works on desktop and mobile

Managing Content

Go to DashboardWidgetsMedia Library to:

  • Create and manage series, including nested series (folders inside folders)
  • Add videos to series (YouTube or uploaded video files)
  • Move items between series
  • Set a series as a page entry point with a series-id embed snippet
  • Set a series to Unlisted so it only appears on its own page
  • Set thumbnails, titles, and descriptions
  • Reorder content
  • Connect a YouTube channel for automatic sync

YouTube Channel Auto-Sync

Connect a public YouTube channel to automatically keep your Media Library up to date:

  1. In the Dashboard → Widgets → Media Library, scroll to YouTube Channel Sync
  2. Paste your channel URL (e.g. https://www.youtube.com/@YourChurch) and click Resolve
  3. Confirm the channel details — set the earliest import date and any import options (see below)
  4. Click Connect channel — all matching public uploads are imported immediately
  5. New videos appear within minutes of being published (via WebSub push notifications)
  6. The cron reconciler runs every 30 minutes as a safety net for any missed pushes

Recommended embed for YouTube-synced libraries:

<fs-media-library layout="videos" media-label="Videos"></fs-media-library>

Import options

Import settings can be configured at connect time and edited at any time via Import settings on the connected channel card. Changing settings and clicking Save & re-sync immediately re-applies filters: newly-matching videos are imported and previously-imported videos that no longer match are hidden.

OptionDefaultDescription
Earliest import dateRequiredOnly videos published on or after this date are imported. Useful for channels with years of older content.
Include ShortsOffImport videos ≤ 60 seconds. YouTube has no direct Shorts flag — this is a duration heuristic.
Include past livestreamsOffImport completed broadcasts. Upcoming/scheduled premieres are always excluded.
Minimum duration (minutes)NoneExclude short clips. E.g. set to 10 to only import videos 10+ minutes long.
Title must containNoneComma-separated keywords. At least one must appear in the video title (case-insensitive).
Title must not containNoneComma-separated keywords. Videos matching any keyword are excluded (case-insensitive).

Requirements:

  • YOUTUBE_API_KEY must be set in your Vercel environment (YouTube Data API v3 key)
  • Videos must be public — private/unlisted videos are not synced

Requirements

  • Add allowed origins in DashboardWidgetsAllowed origins
  • Embed the Firesky script before using the widget

Use Case

Add to your church website's sermons or media page to give visitors a clean, browsable library of your video content organized by series — or connect your YouTube channel for fully automatic, zero-maintenance video sync.