Skyline Church · Bloomfield, NJ

Find the words.
Return to the moment.

A home for the messages that stay with you. Explore Skyline’s sermon archive, listen by date, and search the words as transcripts become available.

Built for Sunday. Ready for the rest of your week.
skylinechurch.app
Skyline Echo’s real sermon library in dark mode, showing dated sermons and transcript-pending labels
The live library · audio available before transcription
481episodes in the initial archive
3 viewsmonth, week & agenda
One momenttimestamped passage playback
Your themelight or dark

The listening experience

More than a list of Sundays.

Start with a date, a phrase, or a message you want to hear again.

Search the spoken words

Published transcripts become searchable passages, with enough context to understand the result. Optional embeddings add meaning-based retrieval.

Search grows with the transcripts

Find your Sunday

Browse month, week, or agenda views. Move between years, jump to a date, and open the sermons for that day.

Explore the calendar ↗

Pick up at the moment

Listen to original podcast audio. Transcript results seek to their timestamps; the player’s “Show in list” brings the playing sermon into view.

One persistent audio player

A familiar Skyline feel

Skyline’s blue–green palette, Instrument typefaces, and color logos carry through both light and dark modes.

Self-hosted brand assets

Credits you can trust

Speaker names appear when the podcast explicitly identifies them. Episode descriptions and transcript text remain separate.

Metadata, without guessing

Stay connected

Church Center, the church website, social channels, directions, and Spotify and Apple Podcasts are close at hand.

Visit Skyline Church ↗

From podcast to passage

A weekly rhythm, behind the scenes.

The website stays fast while audio processing happens on a separate local host.

  1. 01

    Discover

    n8n checks the public podcast feed and selects a bounded batch of untranscribed episodes.

    Podcast RSS + n8n
  2. 02

    Prepare

    Python and FFmpeg download and split the audio into 10-minute, mono FLAC chunks in the LXC.

    Proxmox LXC
  3. 03

    Transcribe

    Groq returns timestamped text. Completed chunks are cached, and transcripts stay on the local host.

    Groq Whisper
  4. 04

    Publish

    A protected upload updates Cloudflare D1 and keyword search, without rebuilding the website.

    Workers + D1

The build

A small app.
A durable archive.

The public website runs on Cloudflare. The local Python tools handle ingestion, transcription, and saved checkpoints. Audio continues to live on the podcast host.

Explore the source ↗
Website & APIsCloudflare Workers
Passages & keywordsD1 · SQLite FTS5
Automationn8n · Python · FFmpeg
Speech recognitionGroq Whisper
Optional contextual searchOpenAI embeddings · Vectorize
FrontendHTML · CSS · JavaScript
Can I listen before a sermon is transcribed?

Yes. Episode metadata and original audio are available independently of transcripts. Passage search becomes available after actual transcript text is published.

Does Groq also provide meaning-based search?

Groq handles speech recognition. Meaning-based search is a separate optional embeddings integration. Without that configuration, smart search visibly falls back to keyword retrieval.

What stays on the LXC?

Transcript JSON, chunk-response checkpoints, the local SQLite index, and publication receipts. Downloaded audio and converted chunks are temporary and removed when processing exits normally.

How do retries avoid paying twice?

The runner skips indexed sermons and resumes saved chunk responses. Publication has separate receipts, so a failed upload can retry the existing transcript without another Groq transcription call.

Skyline Echo

The message stays with you.

Explore the sermon library ↗