Blog
  • Login

  • Login
  • Register
  • Blog

  • Articles
  • fr
  • de

Transforming Your Voice into a Blog Post with GPT and Meteor

on April 13, 2025

๐ŸŽฏ Project Overview

This project combines several modern tools to streamline creative output:

  • โš› Meteor.js โ€“ for the real-time frontend chat application
  • ๐Ÿง  OpenAI APIs โ€“ Whisper for transcription and GPT-4 for content generation
  • ๐Ÿ’ง Uniflow โ€“ an open-source automation engine
  • ๐ŸŒ Darkwood API โ€“ for article publication

Whether you're a developer, content creator, or automation enthusiast, this setup shows how voice-driven content creation can integrate into a complete publishing workflow.

๐Ÿ”ง Part 1 โ€“ Building the Meteor Application

The first step was to create a Meteor-based chat app that actively listens to your microphone ๐ŸŽค and sends the audio to OpenAI for processing. The application was inspired by classic tutorials like Meteor's Todo example, but extended to support modern voice-to-text workflows.

๐Ÿš€ Setup Instructions

curl https://install.meteor.com/ | sh
meteor create vocal-chat-app
cd vocal-chat-app
meteor npm install react react-dom react-mic axios

Additional Meteor packages:

meteor add static-html react-meteor-data

๐ŸŽค Capturing and Transcribing Voice

Using react-mic, the app provides a simple "Record" and "Stop" button to capture voice input. Once the audio is captured, it is sent to OpenAI's Whisper API for transcription. This provides a text base that is used for content generation.

โœ Article Generation with GPT-4

The transcript is passed into a GPT-4o prompt like this:

"Write me a blog post about no-life geek developers who eat pizza ๐Ÿ• and drink beer ๐Ÿบ to finish their project before tomorrow's deadline ๐Ÿ’€."

The result is a complete article formatted in Markdown or HTML, ready to be displayed inside the chat interface. The layout is styled in CSS to match a minimal chat UI, with messages from the user and AI clearly distinguished.

๐Ÿ” Part 2 โ€“ Publishing the Article Automatically

Once the article is generated, the second phase is about automation: pushing the content live without needing a CMS or manual intervention.

๐Ÿงฉ The Uniflow Workflow

The Uniflow workflow is structured into three blocks:

  1. Text input โ€“ the article body is pasted into a text block.
  2. Title generation โ€“ a GPT-4 call generates a SEO-optimized title from the article.
  3. API publishing โ€“ two HTTP requests are made to the Darkwood API:
    • First: create an Article
    • Second: create an ArticleTranslation using the IRI returned by the first call

๐Ÿงฌ Example JavaScript Logic Using Axios

let token = null;
let rawTitle = aiTitle.value;
let slug = rawTitle
  .toLowerCase()
  .normalize("NFD")
  .replace(/[\u0300-\u036f]/g, "")
  .replace(/\s+/g, "-")
  .replace(/[^a-z0-9\-]/g, "");

// Step 1 โ€“ Authenticate
axios.post('http://api.darkwood.localhost:8092/auth', {
  email: 'darkwood',
  password: 'darkwood'
}, {
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
})
.then(function(authResponse) {
  token = authResponse.data.token;

  // Step 2 โ€“ Create Article
  return axios.post('http://api.darkwood.localhost:8092/api/articles', {
    tags: [],
    comments: []
  }, {
    headers: {
      'Authorization': 'Bearer ' + token,
      'Content-Type': 'application/ld+json',
      'Accept': 'application/ld+json'
    }
  });
})
.then(function(articleResponse) {
  const articleIri = articleResponse.data['@id'];

  // Step 3 โ€“ Create ArticleTranslation
  return axios.post('http://api.darkwood.localhost:8092/api/article_translations', {
    locale: "fr",
    article: articleIri,
    title: rawTitle,
    slug: slug,
    content: article_content,
    imageName: "",
    active: true
  }, {
    headers: {
      'Authorization': 'Bearer ' + token,
      'Content-Type': 'application/ld+json',
      'Accept': 'application/ld+json'
    }
  });
})
.then(function(translationResponse) {
  console.log("โœ… Article and translation published successfully!");
})
.catch(function(error) {
  console.error("โŒ Publication error:", error);
});

โœ… What This Project Demonstrates

This project brings together:

  • ๐ŸŽค Voice as input
  • โœจ AI as a creative assistant
  • โš™ Automation as a publishing engine

It's a powerful setup for any developer or solo creator who wants to move faster and reduce manual steps in the publishing pipeline.

๐Ÿ“ข Learn More

๐Ÿงช Source code avalaible on Github https://github.com/matyo91/vocal-chat-app

If you're interested in creating your own automation tools, or want to build end-to-end workflows like this one, I've created a full training to help you get started:

👉 Check out my Bonzai automation course

Thanks for reading,
and keep building ๐Ÿ”ง โ€” your ideas deserve to be automated.

  • Sitemap - Hello - Blog - Apps - Photos - Contact - - - - - Legal mentions - Darkwood 2025, all rights reserved