Skip to content

An AI-driven platform that generates engaging, educational, and age-appropriate podcasts for children aged 6–12. By combining Large Language Models (LLMs), high-quality Text-to-Speech (TTS) technology, and curated educational content (e.g., Wikipedia), MindQuest transforms verified facts into fun, interactive audio stories.

License

Notifications You must be signed in to change notification settings

dimastatz/mindquest

Repository files navigation

🎙️ MindQuest

Automated AI-Powered Educational Content Studio for Kids (Ages 8–12)




Overview

MindQuest is a Python-based AI platform that automatically generates engaging, educational content for children aged 8–12. It combines:

  • Educational Content from WikiKids (age-appropriate information)
  • AI Script Generation using ChatGPT-4 to create engaging dialogues
  • Podcast Production with natural voice synthesis via OpenAI's TTS API
  • Mini-Book Generation in EPUB/PDF formats with structured chapters
  • Character-Based Storytelling featuring two distinct personalities:
    • Plato: A wise, calm professor who explains concepts
    • Pixel: A curious, energetic 10-year-old asking questions
🎬 Watch on YouTube


Quick Start

Installation

# Clone the repository
git clone https://github.com/yourusername/mindquest.git
cd mindquest

# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt

Interactive Studio

Run the guided CLI to create scripts, podcasts, or mini-books:

export OPENAI_API_KEY='your-key-here'
python3 -m mindquest.main

Generate Your First Podcast (Python API)

import os
from mindquest import generate_podcast, create_minibook

api_key = os.getenv("OPENAI_API_KEY")

# Generate a 5-minute English podcast about Solar System
generate_podcast(
    topic="Solar System",
    api_key=api_key,
    output_file="podcast.mp3",
    word_count=700,
    languages="en"
)

# OR generate an educational mini-book (EPUB format)
ebook_path = create_minibook(
    api_key=api_key,
    topic="Solar System",
    language="en",
    output_format="epub"
)

Results:

  • Podcast: A professional 2.5 MB MP3 file ready to listen
  • Mini-Book: An EPUB file with chapters and assessment questions

Generate in Different Languages

# Hebrew podcast about Drones
generate_podcast("Drones", api_key, "podcast_he.mp3", languages="he")

# Spanish mini-book about Ancient Egypt
create_minibook(api_key, "Ancient Egypt", language="es", output_format="epub")

# French podcast about Dinosaurs
generate_podcast("Dinosaurs", api_key, "podcast_fr.mp3", languages="fr")

# Multilingual podcast (English, Spanish, French)
generate_podcast("Space Exploration", api_key, languages="en,es,fr")

Architecture

Core Modules

mindquest/studio.py - Main production engine with:

create_script()             # Generate educational scripts from WikiKids
parse_script_segments()     # Extract character dialogues
voice_over()                # Synthesize audio from scripts
extract_character_audio()   # Generate audio for specific characters
generate_podcast()          # Complete end-to-end podcast production
create_minibook()           # Generate EPUB/PDF mini-books with chapters
_parse_minibook_markdown()  # Parse markdown into structured chapters
_create_epub_file()         # Generate EPUB files
_create_pdf_file()          # Generate PDF files

mindquest/utils/chatgpt.py - OpenAI integration:

  • Script generation via ChatGPT-4
  • Audio synthesis via OpenAI TTS API
  • Mini-book content generation via ChatGPT-4

mindquest/utils/wikikids.py - Content sourcing:

  • WikiKids API integration for age-appropriate facts
  • Information gathering and summarization

mindquest/types.py - Character profiles:

  • PLATO: Wise Professor (onyx voice - deep, calm)
  • PIXEL: Curious Child (shimmer voice - bright, energetic)

API Reference

generate_podcast()

Generate a complete educational podcast.

generate_podcast(
    topic: str,           # Educational topic (e.g., "Dinosaurs")
    api_key: str,        # OpenAI API key
    output_file: str = "podcast.mp3",  # Output MP3 file path
    word_count: int = 700,              # Script length (700 ≈ 5 mins)
    languages: str = "en"               # Language code(s)
) -> str                 # Returns path to generated podcast

Example:

path = generate_podcast("Space Exploration", api_key, "my_podcast.mp3")
print(f"Podcast saved to: {path}")

create_script()

Generate just the podcast script (without audio).

create_script(
    api_key: str,
    topic: str,
    number_of_words: int = 500
) -> str

voice_over()

Convert script to audio with character voices.

voice_over(
    api_key: str,
    script: str,
    languages: str = "en"
) -> bytes

create_minibook()

Generate an educational mini-book in EPUB or PDF format.

create_minibook(
    api_key: str,                    # OpenAI API key
    topic: str,                      # Educational topic
    language: str = "en",            # Language code (e.g., "he", "es", "fr")
    number_of_words: int = 2000,     # Target word count
    output_format: str = "epub"      # Format: "epub" or "pdf"
) -> str                             # Returns path to generated file

Example:

# Generate Hebrew EPUB about FPV Drones
file_path = create_minibook(
    api_key=api_key,
    topic="FPV Drones",
    language="he",
    output_format="epub"
)
print(f"Mini-book saved to: {file_path}")  # fpv_drones_he.epub

Quality Metrics

Test Coverage: 95.04% (57 comprehensive tests)
Code Quality: 9.93/10 Pylint score
Testing Framework: pytest with pure function tests
Type Hints: Full type annotation coverage
Error Handling: Comprehensive exception handling with descriptive messages
Pure Functions: 90%+ pure functional code (no side effects)

Running Tests

# Run all tests
python -m pytest tests/test_all.py -v

# Run with coverage report
python -m pytest tests/test_all.py --cov=mindquest --cov-report=term-missing

# Full validation (formatting, linting, tests)
./run.sh -local

Example Workflows

Workflow 1: Generate English Podcast

from mindquest import generate_podcast
import os

api_key = os.getenv("OPENAI_API_KEY")
generate_podcast("The Water Cycle", api_key, "water_cycle.mp3")

Workflow 2: Extract Character Audio

from mindquest import create_script, extract_character_audio
import os

api_key = os.getenv("OPENAI_API_KEY")

# Create script
script = create_script(api_key, "Ancient Rome", 600)

# Generate only Plato's audio
plato_audio = extract_character_audio(script, "Plato", api_key)

with open("plato_only.mp3", "wb") as f:
    f.write(plato_audio)

Workflow 3: Custom Language with Specific Word Count

from mindquest import generate_podcast
import os

api_key = os.getenv("OPENAI_API_KEY")

# 3-minute French podcast (~420 words at 140 wpm)
generate_podcast(
    topic="Marie Curie",
    api_key=api_key,
    output_file="marie_curie_fr.mp3",
    word_count=420,
    languages="fr"
)

Workflow 4: Generate Multi-Format Educational Content

from mindquest import generate_podcast, create_minibook
import os

api_key = os.getenv("OPENAI_API_KEY")
topic = "The Water Cycle"
language = "es"  # Spanish

# Generate podcast for listening
podcast_path = generate_podcast(
    topic=topic,
    api_key=api_key,
    output_file="water_cycle_podcast.mp3",
    languages=language
)

# Generate mini-book for reading
ebook_path = create_minibook(
    api_key=api_key,
    topic=topic,
    language=language,
    output_format="epub"
)

print(f"Podcast: {podcast_path}")
print(f"E-Book: {ebook_path}")

Technology Stack

Component Technology
Language Python 3.9+
LLM OpenAI ChatGPT-4
TTS OpenAI TTS API
Content WikiKids
Testing pytest, pytest-cov
Code Quality pylint, black, type hints
E-Book Format ebooklib, EPUB/PDF
Package Manager pip

File Structure

mindquest/
├── __init__.py              # Package exports
├── studio.py               # Main production engine (all functionality)
├── types.py                # Character profile definitions
└── utils/
    ├── __init__.py
    ├── chatgpt.py          # OpenAI API integration
    └── wikikids.py         # WikiKids content sourcing

tests/
└── test_all.py             # 37 comprehensive tests

docs/
├── requirements.md         # Original requirements
└── series/                 # Example podcast content

requirements.txt            # Project dependencies
README.md                   # This file

Dependencies

  • openai ≥1.0.0 - OpenAI API client
  • requests ≥2.31.0 - HTTP library for WikiKids
  • beautifulsoup4 ≥4.12.0 - HTML parsing for content extraction
  • ebooklib ≥0.18 - EPUB file generation
  • pypub ≥1.1.0 - Additional EPUB support
  • pytest ≥7.4.0 - Testing framework
  • pytest-cov ≥4.1.0 - Coverage reporting
  • black - Code formatting
  • pylint - Code linting

Environment Setup

Set OpenAI API Key

# macOS/Linux
export OPENAI_API_KEY=your_actual_key_here

# Windows (PowerShell)
$env:OPENAI_API_KEY="your_actual_key_here"

Verify Installation

python -c "from mindquest import generate_podcast; print('✅ MindQuest ready!')"

Features

Automatic Content Generation

  • End-to-end pipeline from topic to podcast MP3 or e-book
  • No manual script writing required
  • Real-time progress feedback

🎙️ Podcast Production

  • Character-based dialogue generation
  • Natural voice synthesis with distinct voices
  • Multi-segment audio composition
  • Export to MP3 format

📖 Mini-Book Generation

  • Structured chapters (7-10 per book)
  • Assessment questions (3 per chapter)
  • EPUB and PDF format support
  • Table of contents with chapter organization

🎭 Character-Based Learning

  • Two distinct characters with different personalities
  • Natural dialogue flow for engagement
  • Character-specific voices (Plato: calm/explanatory, Pixel: energetic/curious)

🌍 Multilingual Support

  • English, Spanish, French, German, Hebrew, Arabic, and more
  • Language parameter for both podcasts and mini-books
  • Compatible with OpenAI's TTS and GPT language support

📚 Educational Content

  • WikiKids integration for age-appropriate information
  • Factual, verified content sources
  • Context-aware script and mini-book generation

🔧 Production-Grade Quality

  • 95%+ test coverage (57 tests)
  • 9.93/10 code quality score
  • Full error handling and validation
  • Type hints throughout codebase
  • Pure functional programming paradigm

Roadmap

  • Add support for multiple voice options per character
  • Implement audio concatenation for proper multi-segment synthesis
  • Add subtitle/transcript generation
  • Support for custom character profiles
  • Batch podcast generation API
  • Web UI for podcast creation
  • Distribution to podcast platforms (Spotify, Apple Podcasts)

Contributing

Contributions welcome! Please ensure:

  1. All tests pass: python -m pytest tests/test_all.py
  2. Coverage maintained: >95%
  3. Code formatted: black mindquest/
  4. Linting passes: pylint mindquest/

License

MIT License - See LICENSE file for details


Acknowledgments

  • WikiKids API - Educational content source
  • OpenAI - ChatGPT and TTS APIs
  • Children's Learning Research - Pedagogical principles

About

An AI-driven platform that generates engaging, educational, and age-appropriate podcasts for children aged 6–12. By combining Large Language Models (LLMs), high-quality Text-to-Speech (TTS) technology, and curated educational content (e.g., Wikipedia), MindQuest transforms verified facts into fun, interactive audio stories.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published