Skip to main content

Show-agnostic audio production pipeline: markdown script to podcast-ready MP3 via ElevenLabs

Project description

xil-pipeline

Show-agnostic audio production pipeline that turns a markdown script into a podcast-ready MP3 via the ElevenLabs API.

A project.json file sets the show name; every script derives file paths from it via a shared slug. The pipeline parses scripts, generates TTS voices and SFX, assembles a rough master, exports isolated WAV layers for DAW mixing, and produces a final master MP3. Supporting utilities handle voice discovery, SFX generation, stem migration on script revisions, stale cleanup, and Studio import/export. All API-calling scripts support --dry-run to preview costs before spending quota.

Installation

pip install xil-pipeline            # core dependencies
pip install xil-pipeline[all]       # all optional backends (Google GenAI, gTTS, Ollama)
pip install xil-pipeline[dev]       # development and testing

Quick Start

# Scaffold a new project workspace
xil-init my-show --show "My Podcast"
cd my-show

# Scan the sample script (pre-flight check)
xil-scan scripts/sample_S01E01.md

# Parse into structured JSON
xil-parse scripts/sample_S01E01.md --episode S01E01

# Preview TTS character cost (no API calls)
xil-produce --episode S01E01 --dry-run

# Generate voice and SFX stems (requires ELEVENLABS_API_KEY)
xil-produce --episode S01E01

# Export DAW layers for mixing in Audacity
xil-daw --episode S01E01

# Produce final master MP3
xil-master --episode S01E01

Pipeline Stages

Command Script Description
xil-init xil_init Scaffold a new project workspace
xil-scan XILP000 Pre-flight script scanner
xil-parse XILP001 Markdown script parser
xil-produce XILP002 Voice + SFX generation (ElevenLabs API)
xil-assemble XILP003 Two-pass audio assembly
xil-studio XILP004 ElevenLabs Studio project onboarding
xil-daw XILP005 DAW layer export (4 WAVs for Audacity)
xil-cues XILP006 Sound cues sheet ingester
xil-migrate XILP007 Stem migrator for script revisions
xil-cleanup XILP008 Stale stem cleanup
xil-regen XILP009 Reverse script generator
xil-import XILP010 ElevenLabs Studio export importer
xil-master XILP011 Final master MP3 export

Utilities

Command Script Description
xil-voices XILU001 Voice discovery and audition
xil-sfx XILU002 Standalone SFX generation
xil-csv-join XILU003 CSV + SFX/cast annotation
xil-sample XILU004 Voice sample generator
xil-sfx-lib XILU005 SFX library discovery
xil-splice XILU006 Parsed JSON splice utility

Configuration

  • project.json -- show name (derives all file paths via slug)
  • speakers.json -- speaker names the parser recognizes (optional, built-in defaults for THE 413)
  • cast_<slug>_<TAG>.json -- voice assignments, speaker settings
  • sfx_<slug>_<TAG>.json -- sound effect mappings and API parameters

All scripts accept --show to override the show name. Resolution order: --show flag > project.json > default "sample".

Environment

  • Python 3.12+
  • ElevenLabs API key via ELEVENLABS_API_KEY environment variable
  • ffmpeg required for audio processing (pydub dependency)

Development

git clone <repo-url>
cd xil-pipeline
pip install -e ".[all,dev]"
pytest tests/ -v

License

AGPL-3.0 — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xil_pipeline-0.1.0.tar.gz (206.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xil_pipeline-0.1.0-py3-none-any.whl (123.3 kB view details)

Uploaded Python 3

File details

Details for the file xil_pipeline-0.1.0.tar.gz.

File metadata

  • Download URL: xil_pipeline-0.1.0.tar.gz
  • Upload date:
  • Size: 206.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for xil_pipeline-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0301b6b63ca9b5667e4d189fda27f0e2a18cfd7160c178ae870c619bf0ed5231
MD5 809e82bdbad05abf513c226e4e1bda04
BLAKE2b-256 108e12de8d39f88b62ac357c5981419922b3503fdcd233903cdf06e426e65592

See more details on using hashes here.

Provenance

The following attestation bundles were made for xil_pipeline-0.1.0.tar.gz:

Publisher: publish.yml on xilcmd/xil-pipeline

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xil_pipeline-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: xil_pipeline-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 123.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for xil_pipeline-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 95bc8fc9f021a877474c36465b6844f3f5dd93610c6493b66a36e9d95366f525
MD5 786b5cfa5f94bc9991f52557356a325d
BLAKE2b-256 c46ae554e75708ec18b57488d6ea0c9a6e39aa63e2c5fdba0214f2333ba98786

See more details on using hashes here.

Provenance

The following attestation bundles were made for xil_pipeline-0.1.0-py3-none-any.whl:

Publisher: publish.yml on xilcmd/xil-pipeline

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page