Skip to content

LynchzDEV/youtube-short-printer

Repository files navigation

Stream Clipper

Automated Twitch/Kick clip processor with subtitle burning, AI-generated titles, and social media uploading.

Features

  • Multi-Platform Monitoring: Watch Twitch and Kick streamers for new clips
  • Automatic Download: Uses yt-dlp for reliable clip downloading
  • AI Transcription: Groq Whisper API for fast, free transcription
  • Subtitle Burning: FFmpeg with TikTok-style centered captions
  • AI Content Generation: OpenRouter for titles, descriptions, and hashtags
  • Job Queue: BullMQ + Redis for reliable background processing
  • Web Dashboard: Monitor clips, streamers, and processing queue

Tech Stack

  • Runtime: Bun + TypeScript
  • API: Elysia
  • Database: SQLite + Drizzle ORM
  • Queue: BullMQ + Redis
  • Video: FFmpeg + yt-dlp

Quick Start

Prerequisites

Installation

# Clone the repo
git clone <your-repo-url>
cd stream-clipper

# Install dependencies
bun install

# Copy environment file
cp .env.example .env

# Edit .env with your API keys

Configuration

Edit .env with your credentials:

# Required
TWITCH_CLIENT_ID=your_twitch_client_id
TWITCH_CLIENT_SECRET=your_twitch_client_secret
GROQ_API_KEY=your_groq_api_key

# Optional (for AI titles)
OPENROUTER_API_KEY=your_openrouter_key

Development

# Start Redis (if not running)
docker run -d -p 6379:6379 redis:alpine

# Start API server
bun run dev:api

# In another terminal, start web dashboard
bun run dev:web

Docker Deployment

# Build and start all services
docker compose up -d

# View logs
docker compose logs -f

# Stop services
docker compose down

API Endpoints

Endpoint Method Description
/api/health GET Health check
/api/stats GET Queue and system stats
/api/streamers GET/POST List/add streamers
/api/streamers/:id PATCH/DELETE Update/remove streamer
/api/streamers/:id/fetch POST Trigger manual fetch
/api/clips GET List all clips
/api/clips/:id GET/DELETE Get/delete clip
/api/clips/:id/reprocess POST Reprocess a clip
/api/queue/status GET Queue status
/api/logs GET View processing logs

Project Structure

stream-clipper/
├── apps/
│   ├── api/                 # Elysia backend
│   │   └── src/
│   │       ├── routes/      # API routes
│   │       ├── services/    # Business logic
│   │       ├── jobs/        # Queue workers
│   │       ├── db/          # Database schema
│   │       └── utils/       # Helpers
│   └── web/                 # Next.js dashboard
├── packages/
│   └── shared/              # Shared types
├── data/                    # SQLite DB & clips
├── docker-compose.yml
└── README.md

Hardware Requirements

Optimized for low-power servers (tested on i3-9100T with 12GB RAM):

  • Single clip processing at a time
  • Groq API for transcription (no local GPU needed)
  • FFmpeg with 2 threads, medium preset

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors