Communitygithub.com

clip-anything

Usar cuando el usuario quiera clips, highlights, cortos o reels extraídos de una grabación de juego, VOD de stream o una carpeta de grabaciones. Ejecuta la CLI local clip-anything: previsualiza las selecciones, renderiza clips verticales 9:16 y explica cada selección desde report.json. No es para editar un clip manualmente ni para subirlo.

¿Qué es clip-anything?

Esta habilidad permite que un agente de IA (como Claude Code, Cursor o Codex) convierta grabaciones largas de juego o streams en clips verticales destacados usando la herramienta local gratuita `clip-anything`. El agente primero ejecuta una simulación en seco para mostrar qué clips se cortarían, luego los renderiza y finalmente lee el archivo `report.json` generado para explicar por qué se eligió cada momento (basado en componentes como volumen, movimiento, reconocimiento de voz y penalización por imágenes estáticas). La habilidad funciona en macOS, Linux y Windows, sin necesidad de instalar nada más que `uvx` (o `pipx`), `ffmpeg`/`ffprobe` y un modelo opcional de Whisper para subtítulos. No sube ni comparte ningún dato; todo se procesa localmente. Es ideal para creadores de contenido que quieran automatizar la extracción de momentos destacados sin intervención manual.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shreyassaw5394/clip-anything/tree/HEAD/.cursor/skills/clip-anything

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace clip-anything?

Propósito

Convierte una grabación larga (un archivo, varios archivos o una carpeta que representa una sesión) en los N mejores clips verticales destacados usando la CLI gratuita y local clip-anything. La habilidad impulsa la herramienta, muestra lo que cortaría antes de cortar y lee el informe para que el usuario sepa por qué se eligió cada momento. Nunca sube, publica ni envía material a ningún lado; la CLI en sí misma no realiza llamadas de red excepto una descarga opcional y única del modelo Whisper que pregunta primero.

Requisitos previos

  • uvx (de uv) o pipx en PATH. La CLI es un paquete Python; uvx clip-anything la ejecuta sin instalación.
  • ffmpeg y ffprobe en PATH. La CLI sale con código 3 y una línea de instalación si faltan.
  • Una grabación a la que el usuario pueda apuntar: .mp4 .mkv .mov .m4v .ts .m2ts .mts .webm .avi .flv, o una carpeta con ellas.

Instrucciones

Trabaja desde el directorio actual del usuario. Usa las rutas exactas que el usuario dio; ponlas entre comillas. No muevas, renombres ni elimines el material de archivo. No instales nada más allá de lo que los pasos a continuación imprimen como sugerencia para que el usuario ejecute.

Flujo de trabajo

(Usa los pasos en orden; un paso que no se pueda completar se informa, no se omite.)

  1. Verifica las herramientas. Ejecuta command -v uvx || command -v pipx y command -v ffmpeg && command -v ffprobe. Si faltan tanto uvx como pipx, imprime y detente: curl -LsSf https://astral.sh/uv/install.sh | sh (macOS/Linux) o winget install astral-sh.uv (Windows). Si falta ffmpeg, imprime y detente: brew install ffmpeg / sudo apt install ffmpeg / winget install Gyan.FFmpeg. Usa pipx run clip-anything donde este archivo diga uvx clip-anything si solo existe pipx.
  2. Resuelve la entrada. Si el usuario nombró un archivo o carpeta, úsalo. Si dijo "mi grabación" sin ruta, busca archivos de video en el directorio actual (busca las extensiones anteriores, la más nueva primero). Pregunta solo cuando haya varias entradas plausibles o ninguna; de lo contrario, continúa y di qué ruta se usó. Una carpeta se pasa tal cual: la CLI la trata como una sola sesión.
  3. Simulación en seco primero, siempre. Ejecuta uvx clip-anything "<entrada>" --dry-run --json 2>/dev/null (agrega --count N si el usuario nombró un número). Analiza el JSON de stdout. Muestra una tabla breve: rango, inicio a fin como mm:ss, duración_s, puntuación, título si está presente, y el componente principal de components. Si clips está vacío, dilo claramente y lee warnings (una advertencia below_floor significa que nada superó la barra de acción) antes de sugerir --min-score 0 o un valor más bajo.
  4. Renderiza. A menos que el usuario solo haya pedido una vista previa, ejecuta uvx clip-anything "<entrada>" con las mismas opciones, sin --dry-run y --json, para que se muestre la interfaz de progreso. Agrega --yes solo si el usuario dijo que quiere subtítulos y aceptó la descarga única del modelo; de lo contrario, deja que la CLI pregunte. Informa la carpeta de salida (./clips por defecto, o --out).
  5. Explica las selecciones. Lee clips/report.json (lee el archivo, o python3 -I -c sobre él). Para cada clip ok da una línea: el lapso de tiempo, la puntuación y qué señales lo determinaron (components: volumen sobre la línea base, ataques de audio, movimiento, concordancia audio/movimiento, penalización de cuadros estáticos, bonificación de voz cuando está presente). Menciona layout cuando sea facecam y captions cuando sea verdadero. Enumera cada entrada en warnings en palabras simples; la herramienta se degrada en voz alta y el usuario debería escucharlo.
  6. Ofrece las opciones de ajuste, una línea cada una, solo las que se adapten a lo que el usuario vio:
    • --count N más o menos clips (es un máximo; las sesiones silenciosas devuelven menos)
    • --min-score 0.3 baja la barra de acción; --min-score 0 clasifica el archivo contra sí mismo
    • --min 20 --max 60 límites de duración del clip en segundos
    • --crop center recorte central estático en lugar de seguir la acción
    • --no-captions nunca incrustar subtítulos; --facecam off sin pila de cámara web
    • --vision reordenamiento y títulos locales con Ollama (experimental; solo habla con 127.0.0.1:11434)
    • --force sobrescribe clips de la última ejecución; --no-cache ignora el análisis en caché Una nueva ejecución con diferentes opciones toma segundos porque el análisis se almacena en caché junto al video.
  7. Divulgación. Cuando haya subtítulos o títulos, di una vez: los subtítulos son transcripción automática (faster-whisper, local) y los títulos provienen de un modelo de visión local; ambos pueden ser incorrectos y deben verificarse antes de publicar.

Ejemplos

  • "Crea 5 cortos de la transmisión de anoche, está en ~/Videos/obs/" → paso 1, pasa la carpeta, --count 5 simulación en seco, muestra la tabla, renderiza, explica.
  • "¿Por qué eligió una pantalla de carga?" → abre report.json, muestra los components de ese clip (un valor alto de card significa que la penalización de cuadros estáticos se activó pero los ataques fuertes aún ganaron), sugiere --min-score 0.6 o un w_card más alto en un --config TOML.
  • "Solo muéstrame lo que cortaría, no renderices" → pasos 1 a 3 solamente.

Limitaciones

  • Los momentos basados en transcripción (un chiste sin acción) obtienen puntuación baja por diseño; la herramienta clasifica la acción, el habla es una bonificación.
  • La barra de acción se calibró en dos juegos; un juego no visto puede devolver menos clips de los solicitados. Dilo en lugar de forzar clips con --min-score 0 sin que se pida.
  • Las fuentes 1080p60 se analizan aproximadamente a 100 s por hora; un archivo de varias horas es una espera, no un bloqueo.
  • La habilidad no edita clips, elige miniaturas ni publica en ningún lado. La publicación es un paso del usuario.

Solución de problemas

  • Salida 2: entrada incorrecta (ruta faltante, archivo no compatible, carpeta sin videos). Muestra el mensaje de la CLI.
  • Salida 3: ffmpeg o ffprobe faltantes. Imprime la línea de instalación para el sistema operativo del usuario desde el paso 1.
  • Salida 1: no se renderizó nada. Lee warnings en el JSON de la simulación en seco; generalmente below_floor.
  • Subtítulos escritos como archivo adjunto .ass en lugar de incrustados: la compilación de ffmpeg no tiene libass (fórmula estándar de Homebrew). Una compilación ffmpeg-full en PATH lo soluciona; todo lo demás sigue funcionando.
  • --vision no tuvo efecto: Ollama no se está ejecutando o no tiene un modelo de visión; la ejecución continúa solo con acción y deja una advertencia.

Skills relacionados