chriswere.wales

Plok

Plok is a simple static podcast site generator written in Bash.

The code for Plok can be read and download here.

It scans a directory of MP3 files, reads their metadata with ffprobe, and generates:

The goal is to keep podcast publishing lightweight, portable and dependency-free, with no databases or web frameworks.

Features

Requirements

Directory layout

.
├── media/
│   ├── 20260101-first-episode.mp3
│   └── 20260108-second-episode.mp3
├── site.conf
├── style.css          (optional)
├── head.html          (optional)
├── foot.html          (optional)
├── item.html          (optional)
└── plok

After running Plok:

.
├── index.html
└── rss.xml

Episode filenames

Episodes must begin with a date in the format:

YYYYMMDD

For example:

20260712-my-first-episode.mp3
20260719-another-episode.mp3

The filename date is used for the published date shown on the website and in the RSS feed.

MP3 metadata

Plok reads the following metadata tags:

Tag Purpose
TITLE Episode title
DESCRIPTION Episode synopsis

If no title is present, the episode title defaults to Untitled.

site.conf

Example:

title: The Freebooters Podcast
description: Freebooters is where Chris and Drew talk nonsense and usually something happens with Linux.
author: The Freebooters
language: en-gb
category: Society & Culture
explicit: false
url: https://freebooters.uk
date_format: %d %b %Y
recursive: false
order: reverse

Configuration options

Option Description
title Podcast title
description Podcast description
author Podcast author
language HTML and RSS language code
category iTunes podcast category
explicit true or false
url Base website URL
date_format Date format used on the HTML page
recursive Search subdirectories of media/
order forward or reverse

Optional files

item.html

Overrides the built-in episode template.

Available placeholders:

If omitted, Plok uses its built-in template.

head.html

If present, inserted immediately after the opening <body> tag.

Useful for:

foot.html

If present, inserted before the closing </body> tag.

Useful for:

style.css

If present, Plok automatically adds:

<link rel="stylesheet" href="style.css">

to the generated HTML page.

Running

Generate the site:

plok

The generated files are: