Skip to content

hddq/podgist

Repository files navigation

PodGist 🎧📝

PodGist is an automated tool that "listens" to your podcast habits and creates concise summaries for you. It monitors your gPodder account (or a self-hosted instance) for played episodes, automatically downloads the audio, transcribes it locally using Whisper.cpp, and generates a structured summary using Google Gemini or Ollama.

✨ Features

  • 🔄 Automated Sync: Polls gPodder.net (or your self-hosted instance) for new "play" actions (episodes you've listened to).
  • 📥 Smart Downloading: Automatically downloads the audio files for processed episodes.
  • 🔒 Privacy-First Transcription: Uses whisper.cpp to transcribe audio locally on your machine (no audio sent to the cloud for transcription).
  • 🤖 AI Summarization: Generates summaries using Google Gemini (Cloud) or Ollama (Local).
  • 🐳 Docker Ready: Easy to deploy with Docker Compose.
  • ⚙️ Highly Configurable: Customize models, prompts, and paths easily.

🚀 Getting Started

Option A: Docker (Fastest)

Get up and running without installing Python or building code.

  1. Download Files: Create a directory and save the following files into it:

  2. Configure:

    • Edit config.yaml to set your preferences (paths, models, etc.).
    • Create a .env file in the same directory with your credentials:
      GPODDER_USERNAME=your_username
      GPODDER_PASSWORD=your_password
      GEMINI_API_KEY=your_gemini_key  # Optional: Only if using Gemini
  3. Run:

    docker compose up -d

    The service will start and check for episodes every 10 minutes.

Option B: Local Python Setup (For Developers)

  1. Prerequisites:

  2. Clone & Install:

    git clone https://github.com/hddq/podgist.git
    cd podgist
    python3 -m venv venv
    source venv/bin/activate
    pip3 install -r requirements.txt
  3. Configure:

    • Copy .env.example to .env and fill in credentials.
    • Copy config.example.yaml to config.yaml.
    • Important: Edit config.yaml and set whisper.root to the path where you built whisper.cpp.
  4. Run:

    python3 main.py

📝 Customizing the Summary

You can change how the summaries are generated by editing the prompt.md file. The {transcript} placeholder will be replaced by the actual text of the episode.

About

Podcast summarizer

Topics

Resources

Stars

Watchers

Forks

Packages