Finalist
Duckie
Duckie is an AI-powered platform that transforms scattered YouTube product reviews into a single, coherent narrated supercut.
Core trick
Gemini watches YouTube review videos, extracts timestamped strong moments, and a second agent trims and stitches the clips.
Description
Duckie is an AI-powered platform that transforms scattered YouTube product reviews into a single, coherent narrated supercut. Users submit a product query (e.g., "MacBook Pro M4 review"), and Duckie autonomously searches for reviews using Youtube Data API, understands them using Google Gemini's 3.1 Pro model, extracts the strongest moments with precise timestamps. A different agent downloads and trims the clips and stitches everything into a final video. You can interact with Duckie using Telegram! Thanks to Vercal! The result is a "reviewer documentary" that lets viewers hear directly from multiple creators and get the hand of any product without having to spend a ton of time.
README excerpt
# Duckie Hackathon starter repo with: - `apps/web`: Next.js 16 frontend with Vercel AI SDK chat UI and Gemini multimodal chat route - `apps/backend`: FastAPI skeleton managed with `uv` - `ops/`: VM deployment artifacts for systemd, nginx, and post-merge refresh Agent setup notes live in [AGENTS.md](/Users/vinay/code/duckie/AGENTS.md). ## Quick Start ### Frontend ```bash cd /srv/apps/duckie pnpm install pnpm dev:web ``` Create `apps/web/.env.local` with: ```bash GEMINI_API_KEY=... TELEGRAM_BOT_TOKEN=... TELEGRAM_WEBHOOK_SECRET_TOKEN=... TELEGRAM_BOT_USERNAME=duckie_bot DUCKIE_BACKEND_URL=http://127.0.0.1:8000 ``` ### Backend ```bash cd /srv/apps/duckie/apps/backend ~/.local/bin/uv sync ~/.local/bin/uv run uvicorn backend.api:app --reload --host 127.0.0.1 --port 8000 ``` Create `apps/backend/.env` with: ```bash APP_ENV=production APP_HOST=0.0.0.0 APP_PORT=4195 APP_ROOT_PATH= GEMINI_API_KEY=... YOUTUBE_API_KEY=... YOUTUBE_COOKIE_FILE=/absolute/path/to/cookies.txt TELEGRAM_BOT_TOKEN=... PUBLIC_APP_URL=https://duckie.hackerpod.dev ``` ### YouTube cookies If `yt-dlp` hits YouTube anti-bot checks, export a Netscape-format `cookies.txt` from a browser session that is logged into YouTube, then either: - place the file at `/srv/apps/duckie/cookies.txt`, or - set `YOUTUBE_COOKIE_FILE` to its absolute path in `apps/backend/.env` Do not commit `cookies.txt`. The repo ignores it. ## Notes - The landing page is the default Vercel deployment target. - The chat playground li