Corta automáticamente clips de video a partir de subtítulos o timecodes definidos en un JSON.
Project description
🎬 Clipkly
Clipkly es una herramienta en Python para cortar automáticamente clips desde dos versiones de un mismo video (horizontal y vertical), usando un archivo .json con los timecodes de los mejores momentos.
Soporta desfase (--offset) cuando el video vertical empieza en un punto diferente al horizontal (por ejemplo, por edición o plataformas como TikTok).
🚀 Uso rápido
python clipkly.py --offset 403.025 --vertical video_v.mp4
Esto generará clips desde:
video_v.mp4(con offset aplicado) → enclips/vertical/
Si también incluyes --horizontal, generará clips desde video_h.mp4 (sin offset) → en clips/horizontal/.
🧾 Formato del archivo clips.json
[
{
"start": "01:46:31.760",
"end": "01:47:17.199",
"slug": "titulo_del_video",
"titulo": "titulo del video optimizado para SEO",
"descripcion": "breve descripción del contenido del clip",
"feeling": "sentimiento del clip",
"category" : "categoria del clip"
}
]
🧠 Puedes generar este archivo a partir de los subtítulos de YouTube (ver más abajo).
📥 Cómo obtener los subtítulos (.srt):
- Ve a https://www.downloadyoutubesubtitles.com/es
- Pega el enlace del video de YouTube
- Descarga el archivo en formato
.srt(idealmente en español) - Abre Google AI Studio
- Usa este prompt:
Estos son los subtítulos de la transmisión, puede darme la lista de los mejores momentos para sacar los clips, también en formato JSON:
{
"start": "01:46:31.760",
"end": "01:47:17.199",
"slug": "titulo_del_video",
"titulo": "titulo del video optimizado para seo",
"description": "descripción o sinapsis del video",
"feeling": "sentimiento del clip",
"category" : " categoria del clip"
}
⚙️ Argumentos del script
python clipkly.py [opciones]
| Opción | Descripción |
|---|---|
--offset |
Offset en segundos solo para el video vertical (default: 0.0) |
--horizontal |
Ruta al video horizontal (opcional) |
--vertical |
Ruta al video vertical (opcional) |
--json |
Ruta al archivo JSON con los timecodes (default: clips.json) |
--filter |
Filtra los clips por categoría (inspiracional, tips, etc.) |
--duracion |
Filtra clips por duración: muy_corto, ideal, largo, muy_largo |
--dry-run |
Muestra los comandos sin ejecutarlos |
--version, -v |
Muestra la versión del script |
📁 Estructura generada
📁 clips/
├── 📁 horizontal/ ← Clips del video horizontal (sin offset)
├── 📁 vertical/ ← Clips del video vertical (con offset)
└── 📄 estado_clips.xlsx ← Archivo Excel con metadatos editoriales
Este Excel incluye:
- duración del clip en segundos (
duracion_segundos) - duración en formato
min:seg(duracion_mmss) - clasificación automática:
muy_corto: hasta 30sideal: entre 31s y 90slargo: entre 91s y 179smuy_largo: más de 3 minutos
📦 Requisitos
- Python 3.7+
ffmpeginstalado y en el PATH- Ejecutar:
pip install -r requirements.txtpara instalar dependencias
Dependencias mínimas:
pandas
tqdm
openpyxl
💡 Funcionalidades
- ✂️ Corta clips precisos con FFmpeg sin recodificar (
-c copy) - 🕒 Aplica offset únicamente al video vertical
- 📁 Genera carpetas separadas para cada versión (
clips/horizontalyclips/vertical) - 🧼 Limpia automáticamente los nombres de archivo
- 🧠 Exporta Excel para planeación editorial (
estado_clips.xlsx) - 🔍 Filtros por duración y categoría
- 🔄 Modo
--dry-runpara validar sin ejecutar - 🧾 Modo CLI personalizable
🖥️ Alias útil en consola
Powershell:
Set-Alias clipkly python ./clipkly.py
Linux/Bash:
alias clipkly='python ./clipkly.py'
Entonces puedes correr:
clipkly --offset 3.25 --vertical video_v.mp4
📌 Ejemplo completo
python clipkly.py --offset 403.025 --horizontal video_h.mp4 --vertical video_v.mp4 --json clips.json --duracion ideal
🔜 Próximas mejoras sugeridas
- 🎞️ Subtítulos quemados en los clips
- 📸 Generación de miniaturas automáticas
- 🌐 Interfaz gráfica simple con Gradio
- 📊 Dashboard para gestión de clips y publicaciones
- ☁️ Integración con plataformas como Notion o Google Sheets
🙌 Créditos
Este proyecto fue creado por Julian Dario Luna Patiño, ingeniero de software, arquitecto de soluciones en la nube y creador de contenido en TryCatch.tv.
clipkly nació como una herramienta práctica para automatizar la creación de clips a partir de transmisiones en vivo, especialmente útil para quienes trabajan con contenido en plataformas como YouTube, TikTok e Instagram.
Contacto: judlup@trycatch.tv
✨ Dedicado con cariño a Nikol Daniela ❤️
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clipkly-0.1.0.tar.gz.
File metadata
- Download URL: clipkly-0.1.0.tar.gz
- Upload date:
- Size: 6.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff1e710b473778a5403bb7422d2416ced0029a919f0b6adbf68b303df6f8b732
|
|
| MD5 |
764f8bd6ec200fb63063e1a690751fc7
|
|
| BLAKE2b-256 |
1383d12f8fb500ffcb1aeceb2135434df177e343272d6fa7c2a01a560083a1a0
|
File details
Details for the file clipkly-0.1.0-py3-none-any.whl.
File metadata
- Download URL: clipkly-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d27ecb71ea35182b42b0e5b35a3d7c19ae45c05bed3357978398efcce16e9481
|
|
| MD5 |
c2a8c76112e61edb515e37384b9bbb7f
|
|
| BLAKE2b-256 |
c717492e82a23e8ab2d49e4d7b688207f6abb5106631f6b552149ee1b3ca8587
|