Automatic Podcast PUblisher, aka appu, is a toolkit for podcast edition and publishing.
While running the Entre Dev y Ops podcast, the authors found interesting to start building a set of tools to make this easier. We hope this might help anyone else.
Currently we start preparing every episode by writing a simple script we store in a shared Drive folder.
We record it using some videoconferencing tool, then we convert the video file to an audio track we store.
We also have an S3 bucket and CDN configured to serve the audio files and the RSS feed. After we published the audio file, we also publish a new article about it in our blog.
Finally, using the tools here, and our own podcast configuration file, we have most of this automated, so the mistakes are the less and we can publish sooner.
You'll need the following:
- Docker, for Windows and Mac, you should use Docker Desktop.
- Publishing infrastructure based on an online storage, and a CDN with invalidation features (currently only AWS S3 and CloudFront are supported.)
- Valid credentials for uploading the episodes' audio files and the RSS feed and then invalidating them on the CDN.
We recommend to use some secure online storage for your podcast configuration and specific details. It's also interesting for sharing the publishing process within teams.
While appu accepts using local files as master copies, we recommend to have them online. HTTP/HTTPS and S3 sources are currently supported.
The following are some environment variables you'll need to specify to have this running.
export PODCAST_YAML=/path/to/your/podcast.yaml
export DRIVE_CREDENTIALS_FILE=/path/to/your/drive_credentials.json
export AWS_PROFILE=appu
The following command creates the episode configuration file, with the publishing details for this episode calculated.
./epidator mypodcast-XX.master.mp3 > mypodcast-XX.yaml
docker build -t ghcr.io/edyo/appu:local appu/.
./appu mypodcast-XX.yaml ghcr.io/edyo/appu:local /keybase/team/edyo/appu.credentials
./feedupdater http://my.podcast.com/podcast/feed.xml mypodcast-XX.yaml > new_feed.xml
./uploader new_feed.xml feed.xml mypodcast-XX.yaml
First argument is the name of the XML file with the new episode entry. The second argument is the bucket key to upload the file to. The Third argument is the episode configuration file.
This converts a video file to an audio file.
ffmpeg -i recording.mp4 mypodcast-XX.master.mp3
This converts a two part video recording into a single audio file.
ffmpeg -i first_recording.mp4 mypodcast-XX.1.master.mp3
ffmpeg -i second_recording.mp4 mypodcast-XX.2.master.mp3
ffmpeg -i "concat:mypodcast-XX.1.master.mp3|mypodcast-XX.2.master.mp3" -acodec copy mypodcast-XX.master.mp3
So far we are planning for three versions for the toolkit: