This project showcases a fully automated pipeline that converts WordPress articles into narrated audio using a combination of AI processing, cloud services, and no-code orchestration.
AI plays two essential technical roles in this system:
Text Cleaning with OpenAI
Before narration, raw HTML content is parsed and cleaned using the OpenAI API. The AI removes tags, links, code blocks, and unwanted symbols while preserving meaningful punctuation and structure. This ensures the voiceover sounds natural and professional.
Voice Generation with Google Cloud TTS
Depending on the size of the article, the voiceover is created using:
| Component | Description |
| Make.com | Orchestrates the full automation |
| OpenAI API | Cleans raw HTML and formats text for narration |
| Google Cloud TTS | Generates voiceovers (MP3/WAV) |
| Google Cloud Run | Hosts the long-form synthesis API via FastAPI |
| Google Cloud Storage | Stores audio files with public access |
| WordPress API | Fetches and updates blog posts |
| Notion API | Stores articles in a structured database |
This automation is divided into two main workflows:
Automatically save each new WordPress post into a Notion database, preserving title, link, author, date, and formatted content.
Connect WordPress to Make.com
Connect Notion to Make.com
Title
, Author
, Date
, Link
, Number
Create the Make Scenario
WordPress - Watch Posts
Router
Module: Notion - Create a Page
Module: Notion - Append Page Content
Take a post, clean the text, convert it to audio using Google Cloud TTS, and update the WordPress post with the audio player.
WordPress – Watch Post
Monitors newly published articles.
Router – Flow Split
Separates Notion logic from VoiceOver logic.
Text Parser – Clean HTML
Combines:
{{1.title}} {{1.content}} {{1.date}}
OpenAI – Advanced Text Cleanup
Google Cloud Storage – Upload .txt
wp-voiceovers
{{1.id}}.txt
{{47.result}}
(OpenAI output)Custom JS – Check file size (5000 bytes)
byteLength = input.encode('utf-8').__len__() return { "exceeds": byteLength > 5000 }
Router – Based on file size
5000 bytes → Long flow (Cloud Run API)
Google Cloud Text-to-Speech
it-IT-Chirp-HD-F
.mp3
Google Drive – Upload file
HTTP – Get public file link
GCP Cloud Storage – Final upload
WordPress – Update Post
.mp3
:
<audio controls> <source src="https://storage.googleapis.com/wp-voiceovers/{{1.id}}.mp3" type="audio/mpeg"> </audio>
Text Parser – Extra cleanup
\n
, newline characters, and invisible symbolsHTTP – Call Cloud Run API
{ "text": "{{61.text}}", "language": "it-IT", "voice": "it-IT-Wavenet-B", "filename": "{{1.id}}.wav" }
WordPress – Update Post
.wav
:
<audio controls> <source src="https://storage.googleapis.com/wp-voiceovers/{{1.id}}.wav" type="audio/mpeg"> </audio>
Email – Send notification
blueprint.json
contains the full exported Make.com scenarioAuthor: Paolo Ronco
Email: info@paoloronco.it
Project: Make.com + WordPress + GCP TTS VoiceOver + Notion DB