A FastAPI service for campaign generation, competitor research, and audio content.
Project description
Campaign Generator
Campaign Generator is a Python FastAPI application for creating content based on competitor research and user-generated audio. It provides a web interface for generating questions, summarizing text, transcribing audio, and fetching the latest news. The app uses local LLMs via Ollama and supports both Mac and Linux environments.
Features
- Audio Transcription: Upload or record audio and transcribe it using Whisper (macOS: whisper-mps, Linux: faster-whisper).
- Text Summarization: Summarize any text using local LLMs (Gemma 3 1B, GPT-OSS 20B) via Ollama.
- Question Generation: Generate questions from text using LLMs.
- Latest News: Fetch recent news on any topic.
- Modern Web UI: Beautiful interface built with Tailwind CSS.
- OS-aware: Automatically selects the best transcription backend and Ollama API endpoint for your platform.
Prerequisites
- Python 3.10+
- Homebrew (for macOS)
- pipx
- ffmpeg (for audio conversion)
- Ollama installed and running with required models (
gemma3:1b,gpt-oss:20b)
Install system dependencies (macOS)
brew install pipx
brew install ffmpeg
pipx ensurepath
source ~/.zshrc # or restart your terminal
Install with pipx
pipx install campaign-generator
Usage
Start the app with:
campaign-generator
By default, the API will run on http://localhost:8080.
Open your browser and navigate to /frontend to use the web interface:
http://localhost:8080/frontend
How It Works
- Transcription: Uses
whisper-mpson macOS andfaster-whisperon Linux for audio transcription. - LLM Integration: Connects to Ollama API for text summarization and question generation. The API endpoint is chosen automatically based on your OS.
- Templates: The web UI is served from
templates/home.html.
Development
- All source code is in the root and
routers/directory. - The entrypoint is
main.py, which runs the FastAPI app. - You can also run with Docker or Docker Compose (see
Dockerfileanddocker-compose.yml).
Build and Publish to PyPI
- Upgrade build and twine:
python -m pip install --upgrade build twine
- Build your package:
python -m build
- (Optional) Check your package:
python -m twine check dist/*
- Upload to PyPI:
python -m twine upload dist/*
After publishing, you (and others) can install globally with pipx:
pipx install campaign-generator
Troubleshooting
- If you see errors about missing templates, ensure you installed with pipx after running
pipx ensurepathand that your terminal session is up to date. - Make sure Ollama is running and the required models are pulled.
- If you see errors about ffmpeg, make sure it is installed and available in your PATH.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file campaign_generator-0.1.1.tar.gz.
File metadata
- Download URL: campaign_generator-0.1.1.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e8ab0639c23869b4792670e6b9e3eb6dda8f86a4b0eabafe76a469f217ea9cb
|
|
| MD5 |
a1212ab9542ad7b975d77bffec06218b
|
|
| BLAKE2b-256 |
b6fe25d827d71e14b60a0d958d8d2506b16ef96394fbfbf15e0247635e7440be
|
File details
Details for the file campaign_generator-0.1.1-py3-none-any.whl.
File metadata
- Download URL: campaign_generator-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ef0908bd9e82bdc3c5506b9f85de0d70059e9fd10823cec334121608b9854ea
|
|
| MD5 |
ebc4562ef7fae70b96db841a27aa33dd
|
|
| BLAKE2b-256 |
39fd9aa724d61bc604b12df0b6f567dec22a48d3dc23a215cd9b21d3ce0bdf23
|