MARCELO: an AI powered bot to automate the editing and thumbnail creation for your Youtube clips channel
This project uses machine learning (AI) to automate the management of your Youtube clips channel by clipping, editing, creating of thumbnails and uploading to your YT channel
./
folderclient_secrets.json
in the repo root.$ pip install -r requirements.txt
./backgrounds
with images .png
to be randomly selected to your thumbnaildefault_face.png
on ./assets
folder just in case the bot is not able to find a smiling face on your video. It will be used as a default face.description
and metadata
on marcelo.py:upload_video
to fit your channel infoopening.mp4
and ending.mp4
videos (MP4 encoded, 1920x1080) on assets/
dir to automatically insert an intro and ending sessions on your edited videourl | time_from | time_to | podcast | title | description | tags |
---|---|---|---|---|---|---|
https://www.youtube.com/watch?v=[VIDEO_ID] | 00:00:14 | 00:01:46 | 0 | TITLE | DESCRIPTION | tag1 tag2 tag3 tag4 |
https://www.youtube.com/watch?v=[VIDEO_ID2] | 0 | TITLE | DESCRIPTION | tag1 tag2 tag3 tag4 |
Save the spreadsheet as a csv
and place the lists/list.csv
file in the project folder
Run marcelo.py
$ python marcelo.py
It is recommended to run youtubeuploader
mannually and upload at least one video, to generate and store the authorisation file before building the container.
$ docker build -t marcelo .
$ docker run [-it] marcelo
Docker will copy all files to docker root, patch pytube bug and execute from there
lists/list.csv
(clips and cuts list) and client_secrets.json
(Youtube API v3 access) ready in the repo rootYou can run Marcelo without building the entire image after updating lists/list.csv
:
$ docker run [-it] -v "$(pwd)/lists:/app/lists" marcelo
PS: running from a container is slower than running on your physical machine. Video editing and machine learning does not perform well inside virtual environments.
This project execute is executed in 4 phases:
This bot is live, producing the clips channel of the Morning Crypto show.
This project can be found on Radicle
cypher.py
r'a\.[a-zA-Z]\s*&&\s*\([a-z]\s*=\s*a\.get\("n"\)\)\s*&&\s*'
r'\([a-z]\s*=\s*([a-zA-Z0-9$]{2,3})(\[\d+\])?\([a-z]\)'
nfunc=re.escape(function_match.group(1))),
Did you like it? Buy me a coffee
Or drop me a tip through Lightning Network: ⚡ zbd.gg/eddieoz