Skip to content

euglopi/PodVibe

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

48 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PodVibe.fm - AI-Powered Podcast Summarizer

Skip the fluff. Get the wisdom.
An intelligent agentic AI system that extracts the 20% of podcast content that delivers 80% of the learning value, powered by Google Gemini.

Python 3.8+ License

🎯 Overview

PodVibe.fm is a complete agentic AI system that transforms long-form YouTube podcast videos into concise, high-value summaries. Built for the Agentic AI Hackathon, it demonstrates a production-ready architecture with planning, execution, and observability components.

Key Features

  • 🧠 Agentic AI Architecture - Modular design with Planner, Executor, and Memory components
  • πŸŽ™οΈ Intelligent Summarization - Uses Google Gemini to extract the 20% of content that delivers 80% of value
  • πŸ” Semantic Keyword Extraction - Identifies 10 core concepts for quick navigation
  • ⏱️ Timestamp Navigation - Click keywords to jump to where topics are discussed
  • πŸ“Š Full Observability - Complete memory logging of all agent decisions and actions
  • 🎨 Modern UI - React frontend with Streamlit interface for development
  • πŸ”„ ReAct Pattern - Demonstrates Reasoning + Acting workflow

πŸ—οΈ Architecture

This agent follows a clean agentic AI pattern with three core modules:

User Input β†’ PLANNER β†’ EXECUTOR β†’ MEMORY
                ↓          ↓          ↓
           Sub-tasks   Tool Calls  Logging
                         ↓
                   [YouTube API]
                   [Gemini API]

Core Components

  1. Planner (src/planner.py) - Breaks down user goals into executable sub-tasks
  2. Executor (src/executor.py) - Executes tasks using appropriate tools (YouTube API, Gemini API)
  3. Memory (src/memory.py) - Logs all agent activities for full observability

For detailed architecture documentation, see ARCHITECTURE.md.

πŸš€ Quick Start

Prerequisites

  • Python 3.8+
  • Google Gemini API Key
  • YouTube API Key (Optional) - For trending videos feature

Installation

  1. Clone the repository

    git clone https://github.com/euglopi/PodVibe.fm.git
    cd PodVibe.fm
  2. Install Python dependencies

    pip install -r requirements.txt
  3. Set up environment variables

    Create a .env file in the project root:

    GEMINI_API_KEY=your-gemini-api-key-here
    YOUTUBE_API_KEY=your-youtube-api-key-here  # Optional

Running the Application

Option 1: Streamlit UI (Recommended for Testing)

cd src
streamlit run app.py

Open your browser to http://localhost:8501

Option 2: Flask API Server

cd src
python api.py

API will be available at http://localhost:8000

Available Endpoints:

  • GET /api/health - Health check
  • POST /api/summarize - Summarize a YouTube video
  • GET /api/trending - Get trending podcasts by category
  • POST /api/find-timestamp - Find where keywords are discussed
  • GET /api/models - List available Gemini models

Option 3: React Frontend

# Terminal 1: Start Flask backend
cd src
python api.py

# Terminal 2: Start React frontend
cd frontend
npm install
npm run dev

Option 4: Direct Python Usage

cd src
python youtube_summarizer.py

πŸ“– How It Works

1. Planning Phase (ReAct: Reasoning)

The Planner creates an execution plan by breaking down the summarization task:

  1. Extract video ID from YouTube URL
  2. Fetch transcript from YouTube
  3. Generate AI summary using Gemini (80/20 principle)
  4. Extract 10 semantic keywords
  5. Store results with metadata

2. Execution Phase (ReAct: Acting)

The Executor runs each task using appropriate tools:

  • URL Parser - Extracts video ID from various YouTube URL formats
  • YouTube API - Fetches transcripts with timestamps
  • Gemini API - Generates intelligent summaries focusing on high-value content
  • Keyword Extractor - Identifies core concepts using semantic analysis
  • Timestamp Finder - Locates where topics are discussed in the video

3. Memory & Observability

The Memory component logs every step:

  • User inputs
  • Execution plans
  • Task start/completion/failure events
  • Tool calls and results
  • Final outputs
  • Error details

All logs are available via API or exported to JSON files in logs/ directory.

For detailed technical explanation, see EXPLANATION.md.

🎯 Hackathon Requirements

βœ… Google Gemini API Integration - Core AI engine for intelligent summarization
βœ… Agentic Architecture - Modular design with Planner, Executor, and Memory
βœ… ReAct Pattern - Reasoning + Acting workflow demonstrated
βœ… Tool Integration - YouTube Transcript API + Gemini API
βœ… Full Observability - Complete memory logging of all agent decisions
βœ… Complete Documentation - Architecture, explanation, and demo included

πŸ“ Project Structure

PodVibe.fm/
β”œβ”€β”€ src/                          # Backend source code
β”‚   β”œβ”€β”€ planner.py               # Planning module
β”‚   β”œβ”€β”€ executor.py              # Execution module
β”‚   β”œβ”€β”€ memory.py                # Memory/observability module
β”‚   β”œβ”€β”€ youtube_summarizer.py   # Main agent orchestrator
β”‚   β”œβ”€β”€ api.py                   # Flask REST API
β”‚   β”œβ”€β”€ app.py                   # Streamlit UI
β”‚   └── trending.py              # Trending videos API
β”‚
β”œβ”€β”€ frontend/                     # React frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ pages/              # Page components
β”‚   β”‚   β”‚   β”œβ”€β”€ Home.tsx        # Landing page
β”‚   β”‚   β”‚   β”œβ”€β”€ Browse.tsx      # Browse trending
β”‚   β”‚   β”‚   └── Player.tsx      # Video player
β”‚   β”‚   └── components/         # UI components
β”‚   └── package.json
β”‚
β”œβ”€β”€ logs/                         # Memory logs (auto-generated)
β”œβ”€β”€ podcasts_out/                 # Saved summaries
β”‚
β”œβ”€β”€ ARCHITECTURE.md              # System architecture documentation
β”œβ”€β”€ EXPLANATION.md               # Technical explanation
β”œβ”€β”€ DEMO.md                      # Demo video link
β”œβ”€β”€ README.md                    # This file
└── requirements.txt             # Python dependencies

πŸ”§ Configuration

Environment Variables

Variable Required Description
GEMINI_API_KEY Yes Google Gemini API key for summarization
YOUTUBE_API_KEY No YouTube Data API key for trending videos (falls back to sample data)

Summary Types

The system supports three summary types:

  • comprehensive - Detailed summary with full context (default)
  • brief - Concise 2-3 paragraph summary
  • key_points - Bulleted list of main takeaways

πŸ“Š API Usage Examples

Summarize a Video

curl -X POST http://localhost:8000/api/summarize \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=VIDEO_ID"}'

Find Keyword Timestamp

curl -X POST http://localhost:8000/api/find-timestamp \
  -H "Content-Type: application/json" \
  -d '{
    "video_id": "VIDEO_ID",
    "keyword": "artificial intelligence"
  }'

Get Trending Podcasts

curl http://localhost:8000/api/trending

πŸ§ͺ Testing

Manual Testing

  1. Streamlit UI - Interactive testing with visual feedback
  2. Flask API - Test endpoints with curl or Postman
  3. Direct Python - Run python src/youtube_summarizer.py

Test Scenarios

  • βœ… Valid YouTube URLs with transcripts
  • βœ… Invalid URLs (error handling)
  • βœ… Videos without transcripts
  • βœ… Different summary types
  • βœ… Keyword extraction accuracy
  • βœ… Memory logging completeness

πŸ“š Documentation

🀝 Contributing

This is a hackathon submission. For questions or feedback, please open an issue.

πŸ“„ License

See LICENSE file for details.

πŸ™ Acknowledgments

  • Google Gemini - Powerful AI for intelligent summarization
  • YouTube Transcript API - Reliable transcript fetching
  • Agentic AI Hackathon - Inspiration and framework

Built with ❀️ for the Agentic AI Hackathon

Skip the fluff. Get the wisdom.

About

Skip the fluff. Get the wisdom. AI extracts the 80/20 value from any podcast.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 46.0%
  • Python 33.7%
  • JavaScript 8.5%
  • CSS 7.1%
  • Shell 4.1%
  • HTML 0.6%