An easy to use self-hosted clipping tool.
Clip videos from popular websites like YouTube, then share with friends!
- Download videos from a very broad range of websites to your own personal website.
- Sharing a URL from The Clipping Project bypasses upload size limits on sites like Discord.
- Self-hosted -- no one else can remove or delete the videos you clip.
- No frills -- share only the portion of the video you choose without any additional UI. No need to link your friends to someone else's website.
- Authentication -- clipping utilities are available to just you, but clips you save can be shared with anyone who has a link.
- Various tools for creating and previewing video clips
demo1-2023-01-01_15.28.20.mp4
demo2-2023-01-01_15.32.47.mp4
demo3-2023-01-01_15.15.18.mp4
The Clipping Project may be installed either via Docker or by running each service independently (local).
Make sure Docker is installed and the Docker service is running.
Simply run the following command:
docker run -t -i -p 4190:4190 -p 4191:4191 -v ~/Videos:/app/api/videos christophergeiger3/the-clipping-project:latest
Then navigate to http://localhost:4191.
By default the owner username is admin
and the owner password is admin
(this can be changed).
The -v ~/Videos:/app/api/videos
saves clips to the ~/Videos
directory on your PC -- you can change ~/Videos
to whatever folder you'd like.
Environment variables may also be passed through the docker run
command, e.g.
docker run -t -i -e OWNER_PASSWORD='hunter2' -p 4190:4190 -p 4191:4191 christophergeiger3/the-clipping-project:latest
Install mongodb, then start the mongod service:
sudo systemctl start mongod.service
Install yt-dlp:
wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
chmod a+rx /usr/local/bin/yt-dlp
Install volta:
curl https://get.volta.sh | bash
Install the nestjs CLI:
npm install -g @nestjs/cli
Install volta:
curl https://get.volta.sh | bash
Build the app api:
cd api
npm install
cp .env.example .env
npm run build
Launch the app api:
npm run start:prod
Open a new terminal and build the web front-end:
cd web
yarn
cp .env.example .env
yarn build
yarn global add serve
Launch the web front-end:
PORT=4191; serve -s build -l ${PORT}
Launch the app API:
cd api
npm install
npm run start:debug
Open a new terminal and launch the web front-end:
cd web
yarn
yarn start
TCP ships with a .env.example
file which gives an example of some configuration options you can tweak, such as the port the API that TCP's API will run on (API_PORT
) and the port that TCP's web client will run on (WEB_PORT
).
To configure TCP, copy the example env file to .env
in the same directory:
cp .env.example .env
then edit the new .env
file as you see fit.
If you're running docker, you may need to rebuild your docker images once you've made changes:
docker compose build
If you're running a local build (no docker), then you'll work with two .env
files, api/.env
and web/.env
, and can ignore the .env
file in the root of the the-clipping-project
directory.
To access the docs for TCP's API, navigate to the /api
route of your API's URL (default: http://localhost:4190/api).
TCP's API is self-documented by Swagger/OpenAPI through NestJS, and comes with a built-in tool for building HTTP queries quickly and easily.
TCP is built with NestJS, MUI, Vite, and React.
YT-DLP is the special sauce TCP uses to download and save video clips.
Leave no question unasked! Feel free to drop any feedback or thoughts under the issues tab.
If TCP isn't what you're looking for, that's okay! Here are some other utilities which might have the functionality you want: