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
Set your ClickUp API key and team ID in your environment variables:
export CLICKUP_API_KEY=your_clickup_api_key
export CLICKUP_TEAM_ID=your_clickup_team_id
env | grep CLICKUP # to verify they are set
When you start the app for the first time, the following folders will be created in the directory you run the command from:
research output/: Stores research results generated from RSS feeds.question output/: Stores generated questions.audio output/: Stores uploaded audio files.transcripts output/: Stores transcriptions of audio files.content generation output/: Stores generated content.review output/: Stores reviewed content.challenge output/: Stores any challenges encountered.
Because of this behavior, it's recommended to run the app from a dedicated project directory.
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
http://localhost:8080/frontend/chat # for RAG chat interface
http://localhost:8080/docs # for API docs
http://localhost:8080/graph-viewer # for visualization of the RAG graph
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
Metadata
Release files for campaign-generator 0.1.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| campaign_generator-0.1.9.tar.gz | 24.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| campaign_generator-0.1.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 54.3 kB
Release files / campaign_generator-0.1.9.tar.gz
| Download URL | campaign_generator-0.1.9.tar.gz |
|---|---|
| Size | 24.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
00ec265d53b34d6a54987943ab53b36eaeaa219ea2aa66f46b80980d39f29fbc
|
|
BLAKE2b-256 checksum How to use checksums |
80e083039ad118aa1cf6d751eb0397c2fa4347a320b1691c15aff00d0bfca852
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|
Release files / campaign_generator-0.1.9-py3-none-any.whl
| Download URL | campaign_generator-0.1.9-py3-none-any.whl |
|---|---|
| Size | 29.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
57a0930426561f50de676c05ab7ee78fca1ec81b381616cbb87509cc86d4dd44
|
|
BLAKE2b-256 checksum How to use checksums |
bd53179e43a770d34d861ddc0cd4fea2a065059a59a7c35bb2e7ecc30f0fb48a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|