Setting Up a Morning Podcast with Codex: From a ChatGPT Briefing to Listening on an iPhone

8 min read

A daily briefing prepared with ChatGPT brings together the information you want to follow. Finding time to read it is another matter. In my case, I wanted to listen to it on my iPhone while getting ready in the morning.

Do you already use ChatGPT to prepare a briefing and want an audio version? In this article, I will explain the solution set up at home with Codex, an AI agent that can install and configure software using the access I grant it. In this project, ChatGPT writes the briefing, while Codex built the system that turns it into a podcast.

What stood out in this experience was that I did not carry out any of the technical steps myself. I provided the idea, explained the constraints and approved the key decisions. Codex handled the installation, configuration and checks entirely remotely. I did not even have to get up to touch the hardware.

Illustration: a home server produces an MP3 that can be played on an iPhone through Slack.
Conceptual illustration: speech is generated on the home server and played on the iPhone through Slack.

Context and objective

Before starting, I already had a ChatGPT task scheduled to produce a written briefing every morning at 7 a.m. I also had a Lenovo laptop running Home Assistant to manage the connected devices and automations in my home. The laptop stayed on around the clock, serving as my home server.

The table below describes the role of each device:

Hardware Purpose
Home server: Lenovo ThinkPad T470 laptop, 32 GB of RAM, 1 TB SSD Host Home Assistant and the services needed to generate the podcast
Mac Talk to Codex and follow the setup process
iPhone Listen to the audio file received in Slack, a messaging application
SanDisk Extreme USB drive already connected to the home server Store the backups needed for the migration

Here, the podcast is a private episode delivered as an MP3 file in Slack, where I can play it on my iPhone.

The objective was to reuse the existing hardware with three constraints: keep the home automation working, perform the installation remotely and allow the podcast to be produced while the Mac is switched off.

The work was organised into four stages:

  1. Prepare the infrastructure and safeguard the Home Assistant migration.
  2. Automate the process from the ChatGPT briefing to the audio file.
  3. Test the complete process and verify the result.
  4. Document the configuration to support future changes.

Preparing the infrastructure and migrating Home Assistant

The home server initially ran Home Assistant OS, the operating system dedicated to Home Assistant. To run other services alongside it, Codex suggested installing Proxmox, which allows one physical computer to host multiple virtual machines.

A virtual machine, or VM, works like a separate computer with its own operating system and applications, while using the server’s physical hardware. The setup uses two VMs:

Virtual machine Role
Home Assistant OS Keep the home automation and connections to the devices running
Debian with Docker Host n8n, the tool that coordinates automated tasks, along with speech generation and the Slack connection

Debian is the Linux operating system on this second virtual machine. Docker lets the different services run in separate environments called containers.

This arrangement separates the podcast services from the home automation while sharing the home server’s resources.

Architecture: Codex on the Mac remotely configures the home server. Proxmox hosts a Home Assistant VM and a Debian VM with the podcast services. The Mac can then remain switched off.
Infrastructure after migration. Click the diagram to enlarge it.

The migration required replacing the system on the SSD, the server’s storage drive. Before installation, Codex checked the hardware, remote access options and backups. It prepared a procedure for restoring the previous setup if something went wrong, then asked for my explicit confirmation before erasing the drive.

To perform the installation without preparing a USB stick or working at the computer itself, Codex prepared a temporary system that ran in the computer’s memory (RAM). This allowed it to work on the storage drive while retaining control over the network. An initial boot test confirmed that the connection could be re-established before the migration went ahead.

Once Proxmox was installed, Codex created the virtual machines and restored Home Assistant. It then checked the services and device availability. For example, some kitchen switches had become unavailable after the restore. Refreshing the device information from their gateway, which links them to Home Assistant, made the switches available again without reconnecting them individually.

These checks do not replace a physical test of every automation, but they go beyond simply checking access to the Home Assistant interface.

Automating the briefing-to-podcast process

To retrieve the briefing even when my Mac is switched off, we chose a private Slack channel called brief-du-matin. This conversation space, accessible only to authorised members, connects ChatGPT to the server.

A small program on the server, called the Slack relay, watches for new text in this channel. It then triggers the n8n workflow: the automated sequence of steps needed to produce the audio file.

The process works as follows:

  1. The ChatGPT task starts at 7 a.m., prepares the briefing and posts the text in Slack.
  2. The Slack relay detects the day’s briefing.
  3. The n8n workflow starts speech synthesis to turn the text into spoken words, then creates the MP3 audio file.
  4. The MP3 is uploaded to the same Slack channel for listening on the iPhone.
ChatGPT starts the briefing at 7 a.m.; Slack receives the text; the home server runs the relay, n8n and Piper; the MP3 returns to Slack for playback on the iPhone. Internet is required; the Mac is not involved.
The complete briefing workflow. Speech is generated locally, while ChatGPT and Slack operate online. Click to enlarge.

Choosing text-to-speech: Piper and Kokoro

Piper and Kokoro are two text-to-speech tools: they turn written text into speech using a computer-generated voice. Both can run directly on the server with locally installed voice models. This means I do not need to record myself reading the briefing into a microphone.

Codex installed both tools and prepared a French audio sample with each. Of those samples, I preferred the Piper voice and chose it for the podcast. Codex then configured the workflow to use it and convert the audio to MP3.

Day-to-day operation

The relay keeps track of processed briefings to avoid posting the same episode more than once. It monitors the channel during the morning, without any daily action on my part.

Speech synthesis runs on the home server. ChatGPT and Slack are online services, so an Internet connection is still required. The Mac is used to manage the setup but has no role in producing the daily podcast.

Testing the complete process and validating the result

Once everything was configured, I requested a complete test, from the ChatGPT task through to playback in Slack. Codex triggered the existing task and monitored the process until the MP3 arrived.

The following results were measured during this test:

Measure Result
Length of the podcast Approximately 9 minutes and 9 seconds
Audio generation time Approximately 62 seconds
Time from text publication to MP3 delivery in Slack Approximately 97 seconds

The file was checked and playback was tested in Slack. The Mac was on to trigger the test and observe its progress, but it did not transfer the text, generate the speech or upload the MP3.

This first test confirmed that the complete process worked. At that stage, the scheduled morning run and reliability over several days still needed to be observed. The 7 a.m. start time is when briefing preparation begins; the audio file arrives later, once the writing and speech synthesis are complete.

Documentation and preparation for future changes

A setup of this kind needs to remain understandable and maintainable. I therefore asked Codex to centralise the documentation in a private GitHub repository called home, a place to store files and keep a history of changes.

The documentation covers the home server’s architecture, reference configurations, the podcast workflow, and backup and recovery procedures. Passwords and access keys are stored separately.

The repository can gradually be expanded to cover the other devices in the house and their configurations. It will also help with changes such as choosing a different voice or adding a service, without having to work out how the installation was built.

Responsibilities and lessons from the project

My involvement in this setup focused on decisions and authorisations. Codex handled the technical implementation.

My involvement Work carried out by Codex
Define the need and constraints Inspect the hardware and propose the architecture
Authorise the migration and SSD erasure Prepare backups, install Proxmox and restore Home Assistant
Sign in to services and approve access Configure Slack, the relay and the audio workflow
Listen to the samples and choose Piper Install text-to-speech and produce the MP3
Request a complete test and documentation Carry out the checks and document the solution on GitHub

Codex also helped resolve problems along the way, including booting remotely and restoring access to devices after the migration.

This autonomy still depends on the tools and access available. Future work on the home server may require someone to be there, particularly if a fault prevents network access.

The same computer now runs both the home automation and the audio generation services. I have received a first podcast in Slack and have a documented setup to build on.

For another practical project carried out with Codex: From StretchTap to an AI Skills Workflow: From Idea to Apple Submission.

Leave a comment