Extract YouTube Clips in Seconds
ClipNinja is a modern web application that lets you extract specific clips from YouTube videos by simply pasting a YouTube URL and selecting a start and end time. With a sleek, responsive UI and fast server-side processing, you can preview and download your favorite moments in just a few clicks.
- 🎯 Easy Clip Selection: Paste a YouTube URL, set start and end times, and clip!
- ⚡ Server-Side Processing: Uses
ytdl-coreandfluent-ffmpegfor fast, reliable video trimming. - 👀 Preview & Download: Instantly preview your clip and download it.
- 🖤 Modern UI: Dark theme, glassmorphism, smooth animations, and gradient accents.
- 📱 Responsive Design: Works beautifully on desktop, tablet, and mobile.
- Frontend: Next.js (App Router), React.js, Tailwind CSS, Framer Motion, ShadCN UI
- Backend: Next.js Server Actions & Route Handlers, Node.js runtime
- Video Processing:
ytdl-core,fluent-ffmpeg
- Node.js (v18.18.0 or newer recommended)
- npm or yarn
- FFmpeg (required for video processing)
- macOS:
brew install ffmpeg - Windows: Download from FFmpeg.org and add to PATH
- Linux:
sudo apt update && sudo apt install ffmpeg - Verify installation with:
ffmpeg -version
- macOS:
# Clone the repository
git clone <repository-url>
cd ClipNinja-master
# Install dependencies
npm install
# or
yarn installnpm run dev
# or
yarn dev- The app will be available at http://localhost:9002
src/
app/
page.tsx # Home page
how-it-works/page.tsx # How It Works page
faq/page.tsx # FAQ page
actions.ts # Server Actions (video processing)
clips/[filename]/route.ts # Route Handler for serving clips
components/
ui/ # ShadCN UI & custom UI
layout/ # Header, Footer, etc.
lib/ # Utility functions
public/ # Static assets (images, SVGs)
- FFmpeg Dependency: Must be installed and in your system's PATH.
- Temporary Files: Clips are stored in your system's temp directory (e.g.,
/tmp). For production, consider a more robust file management strategy. - YouTube Terms: Use responsibly and respect YouTube's Terms of Service.
Contributions are welcome! Please open an issue or submit a pull request.
Built with ❤️ by Debashish