earmark feed

Show, rebuild or trim your feed.
earmark feed [--remove [EPISODE ...]] [--yes] [--rebuild] [--check]
             [--prune] [--keep N] [--max-size SIZE] [--orphans]

With no flags, lists what is published: one numbered line per episode, the total size, and the feed URL to paste into a podcast app.

1  2026-08-23   0:22:14    10.4 MB  Attention Is All You Need
2  2026-08-19   0:11:02     5.2 MB  A Mathematical Theory of Communication

2 episode(s), 16 MB total
remove one with:  earmark feed --remove
feed      https://filedn.com/XXXX/earmark/feed.xml

The number is a line of that list, and it is what --remove accepts.

Options

Flag Default Means
--remove [EPISODE ...] off delete episodes by title or list number, audio and text with them; bare --remove asks
--yes, -y off do not ask before removing
--rebuild off rewrite feed.xml and the cover from the current settings
--check off prove the published URLs actually serve
--prune off remove episodes; needs --keep or --max-size
--keep N none keep this many newest
--max-size SIZE none keep newest episodes under this total, e.g. 800MB
--orphans off with --prune, also delete library files the feed no longer lists
--library PATH the library to act on

--remove

Deletes named episodes outright: the feed entry, audio/<slug>.mp3 and text/<slug>.md. This is the flag for “not that one”; --prune is for “keep the newest twenty”, and prune keeps the Markdown.

With no argument it prints the numbered list and asks which to remove:

$ earmark feed --remove
1  2026-08-23   0:22:14    10.4 MB  Attention Is All You Need
2  2026-08-19   0:11:02     5.2 MB  A Mathematical Theory of Communication

remove which? (numbers, ranges or titles; blank to cancel) 2

removing:
  A Mathematical Theory of Communication
    audio/a-mathematical-theory-of-communication.mp3
    text/a-mathematical-theory-of-communication.md
delete 1 episode(s) and those files? [y/N] y
removed 1 episode(s)
feed      https://filedn.com/XXXX/earmark/feed.xml

Every file that goes is named before the question, because the Markdown is the half you may have hand-edited.

An answer may mix numbers, ranges and titles: 1, 3-5, attention.

Given arguments it removes without printing the list, but still shows the titles it matched and asks to confirm:

earmark feed --remove "Attention Is All You Need"
earmark feed --remove 2 5
earmark feed --remove attention shannon --yes

An argument matches an episode by list number, then by exact title, then by any title containing it, case-insensitively – so --remove attention is enough when only one episode has that word in its title. Text that matches nothing is an error and nothing is removed. --yes skips the confirmation, which is what a script wants; with no TTY to ask, bare --remove is an error rather than a guess.

Nothing is recoverable from the library afterwards; re-publishing means running earmark publish on the original source again.

--rebuild

Rewrites feed.xml and re-normalizes the cover from the current [feed] settings. Touches no audio. Run it after changing a title, author, description, or cover image.

--check

HEADs the feed, the cover and the newest episodes and reports which of them actually serve. This is the fastest diagnosis for “the app shows nothing”, which is almost always a wrong base_url, a failure that otherwise produces no error anywhere.

--prune

Needs one of --keep or --max-size; it will not guess.

--max-size accepts a human size string such as 800MB or 2GB, and keeps the newest episodes that fit under it.

Warning--orphans deletes files

--prune alone removes episodes from the feed. Adding --orphans also deletes library files the feed no longer lists: the leftover MP3s from episodes already dropped. It only runs alongside --prune, and cover.jpg is never treated as an orphan.

Examples

earmark feed
earmark feed --remove
earmark feed --remove "Attention Is All You Need"
earmark feed --check
earmark feed --rebuild
earmark feed --prune --keep 20
earmark feed --prune --max-size 800MB
earmark feed --prune --keep 20 --orphans