Skip to content

kevnoli/clipit

 
 

Repository files navigation

Clipit

Personal Twitch clip bot/service for self-hosting.

This repo is public, but it is built for my own use: one hosted instance, broadcaster sign-in through Twitch, and per-channel clip settings stored in the app.

Stack

  • FastAPI backend
  • Vue frontend
  • SQLModel + Alembic
  • Twitch OAuth per broadcaster

Local/dev flow

uv sync --group dev
cp .env.example .env
uv run alembic upgrade head

Backend:

uv run fastapi dev

Frontend:

cd frontend
pnpm install
pnpm dev

Production-style frontend build:

cd frontend
pnpm build

That writes the site into app/static/, which FastAPI serves at /. The API lives under /api.

Required env

  • TWITCH_CLIENT_ID
  • TWITCH_CLIENT_SECRET
  • APP_BASE_URL
  • SESSION_SECRET
  • SECRET_ENCRYPTION_KEY (required, separate from SESSION_SECRET)

The Twitch redirect URL should be:

{APP_BASE_URL}{TWITCH_REDIRECT_PATH}

Default callback:

/api/auth/twitch/callback

Notes

  • Each broadcaster logs in with their own Twitch account.
  • Clip creation happens with that broadcaster's own authorization.
  • Commands, thresholds, permissions, denylist, and Discord webhook are per broadcaster.
  • FastAPI docs/OpenAPI are disabled.

About

A Python-based Twitch bot that automatically generates clips based on viewer votes in chat.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 61.6%
  • Vue 18.0%
  • JavaScript 10.0%
  • CSS 9.2%
  • Other 1.2%