Communitygithub.com

Conz-Wilts/ai-editor

Realiza ingeniería inversa del formato de video de un creador de contenido a partir de sus números reales. Obtiene un perfil de TikTok o YouTube Shorts (o enlaces pegados, también Reels de Instagram) con recuentos de vistas, Me gusta y guardados, transcribe palabra por palabra los mejores vídeos, mide el ritmo, las pausas y los rellenos, asigna cada vídeo a compases cronometrados y escribe un teardown.md desde el que alguien puede filmar, una página teardown.html de sus gráficos, movimiento y sonido, y el style.json que la habilidad style-edit utiliza para editar (por sí sola puede escribir un plan de edición como tabla y .srt). Utilízala cuando el usuario quiera analizar, desglosar o estudiar a un creador ("analiza @handle", "desglosa @handle", "desmontaje de @handle", "analiza a este creador", "qué hace que funcionen los vídeos de este creador"), pegue enlaces de TikTok, YouTube o Instagram y pregunte cuál es el patrón, o pida configurar un creator-teardown. No es para editar el propio vídeo del usuario como un creador (eso es start), no para investigar un tema ni para cortar metraje en bruto.

¿Qué es ai-editor?

Esta habilidad permite realizar una ingeniería inversa detallada del estilo de vídeo de un creador de contenido a partir de sus métricas reales. Soporta TikTok, YouTube Shorts e Instagram Reels. Su pipeline descarga y transcribe los vídeos de mayor rendimiento y un grupo de control, mide el ritmo, las pausas, los rellenos, los cortes visuales, los movimientos de cámara, los gráficos y el sonido. Finalmente genera un desglose completo (teardown.md), una página web interactiva (teardown.html) y un archivo style.json que puede ser usado por la habilidad style-edit para aplicar ese mismo estilo a otros vídeos. Es útil para cualquier desarrollador o creador que quiera comprender y replicar un formato de vídeo exitoso basándose en datos objetivos.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Conz-Wilts/ai-editor/tree/HEAD/.claude/skills/creator-teardown

Preguntar en tu IA favorita

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

Documentación

Desmontaje de Creador (Creator Teardown)

Rutas: ${CLAUDE_SKILL_DIR} es la carpeta que contiene este SKILL.md. En Windows, usa py dondequiera que estos comandos digan python3.

Cada pregunta al usuario va en el cuadro de preguntas: llama a la herramienta AskUserQuestion (2-4 opciones, la recomendada primero). Solo en un agente que no tenga esa herramienta, haz preguntas numeradas en texto.

Salida

creator-teardowns/<handle>/: teardown.md (el análisis), teardown.html (la página que el usuario ve), look.md (lo que Claude lee), style.json (cada número medido, para editar en este estilo), más los archivos por vídeo listados en ${CLAUDE_SKILL_DIR}/references/outputs.md. Un plan de edición va a edit-plans/<name>/. Si una edición coincide con este estilo: scripts/match.py (references/outputs.md "Comprobación de coincidencia").

Primero: doctor

python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" doctor

Ejecútalo antes del primer desmontaje en una sesión. Listo. significa que puedes continuar. Si imprime No listo, o el usuario pide instalar o configurar la habilidad, sigue ${CLAUDE_SKILL_DIR}/references/setup.md. La clave de ElevenLabs es opcional. Nunca la pidas en el chat: el usuario la guarda con setkey en su propio terminal.

VPY="${CLAUDE_SKILL_DIR}/scripts/run.py"; python3 "$VPY" abajo (py en Windows) ejecuta un script con el Python del entorno virtual de la herramienta donde AI_EDITOR_HOME lo coloque.

Pipeline

Modo rápido (llamado por ai-editor's start, setup o style-edit)

Cuando otra habilidad necesita solo el style.json, ejecuta exactamente: Paso 1 list, los comandos del Paso 2 con --top 5 (5 más 2 de control y 2 de repuesto; enlaces pegados: todos), los cuatro del Paso 3b, luego los cuatro del Paso 3c, y para. Las preguntas del Paso 0 solo si el que lo llama no las ha hecho. Omite metrics.py, las pasadas escritas del Paso 3 y los Pasos 4-6. Unos 3 minutos por creador en un Mac de 14 núcleos (2-3 min medidos; los de repuesto añaden ~1 min como máximo), el doble en un portátil de 8 núcleos. Dilo primero.

Paso 0: Preguntar, una vez

Omite lo que el mensaje ya responda. Una llamada al cuadro de preguntas:

  1. ¿Qué creadores? El handle o los enlaces que nombró (Recomendado) / Pegaré más. Varios es normal: a la gente le gustan los subtítulos de un creador y el ritmo de otro. El estilo de cada creador es un formato.
  2. Con más de uno: ¿Qué parte de quién? Aún no estoy seguro (Recomendado): vuelve a preguntar después del Paso 3b, con el look.md de cada creador para comparar; o subtítulos, ritmo (cortes, zooms, movimiento), imágenes (gráficos, encuadre de rostro, tarjetas), sonido.

Paso 1: Obtener los vídeos

python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <handle> --platform tiktok --limit 40   # o youtube
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <name> --urls picks.txt   # enlaces pegados, uno por línea

Imprime una tabla clasificada (vistas, x mediana) y escribe videos.json; * marca 3 veces la mediana.

Instagram: list <handle> --platform instagram lee los Reels más recientes con vistas a través del inicio de sesión del usuario en instagram.com en su navegador (enviado solo a instagram.com). Sin inicio de sesión: sale con 1 y una frase; dila, o pon 6+ enlaces de Reel en picks.txt para --urls (clasificados por Me gusta; dilo).

Paso 2: Descargar y transcribir los ganadores y un grupo de control

python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/visual.py" download <handle>
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" transcribe <handle>

--top N descarga y transcribe N más 2 vídeos de control (los 2 más cercanos a la mediana; --control cambia los 2) más 2 de repuesto para la comprobación de formato (--spare), todos de la duración habitual del creador cuando haya suficientes. Enlaces pegados: todos. El valor por defecto --top 8 son 12 vídeos; --top 5, la ejecución rápida, son 9; pásalo a ambos comandos. Ambos imprimen el recuento primero. --ids <id>,<id> selecciona vídeos exactos. Los de la mediana son el control: un movimiento que aparece tanto en el vídeo de 500K como en el de 3K es un hábito del creador, no la razón por la que funcionó el de 500K. Mantén al menos 2.

Cada script de medición funciona en varios vídeos a la vez (CT_JOBS=1 lo desactiva en un portátil pequeño).

Di el tiempo primero (descarga más transcripción, unos 10 s por vídeo en un Mac de 14 núcleos). Whisper (gratuito, local) es el valor por defecto; con una clave de ElevenLabs transcribe usa Scribe, que conserva cada relleno ($0.22 por hora de audio; da el presupuesto antes de 10+ vídeos). Si los recuentos de rellenos se basan en transcripciones de Whisper, dilo en el desmontaje.

Paso 3: Medir, luego analizar

python3 "${CLAUDE_SKILL_DIR}/scripts/metrics.py" <handle>

Escribe metrics.json (PPM por tercio, pausas, rellenos, longitud de frase, yo/tú/nosotros, frases repetidas), todo a partir de las marcas de tiempo de las palabras.

Ejecuta el Paso 3b primero, para que las pasadas omitan los vídeos que format.json dejó fuera. Luego carga ${CLAUDE_SKILL_DIR}/references/analysis-framework.md y ejecuta sus pasadas. Para la pasada 1, lanza un agente video-analyst por vídeo, todos en un mismo mensaje (se ejecutan a la vez): dale a cada uno la ruta absoluta creator-teardowns/<handle>/ y un id. Cada uno devuelve un mapa de compases JSON; combínalos en las tablas. Sin herramienta de Agente, lee transcripts/<id>.timed.txt tú mismo, un vídeo a la vez. Nunca leas transcripts/<id>.json o metrics.json completos:

  1. Mapa de compases + tiempos. Cada vídeo dividido en compases etiquetados con marcas de segundo y recuentos de palabras.
  2. Perfil de voz/vocabulario. Longitud de frase, persona, comandos, frases recurrentes y los movimientos que el usuario no diría.
  3. Pasada visual. Siempre: Paso 3b. Es lo que permite al usuario editar su propio vídeo en este estilo.
  4. Eventos de tarjeta, solo cuando la pregunta cubra las tarjetas y gráficos del creador, o si se va a hacer un plan de edición. Escribe events.json con la forma indicada en ${CLAUDE_SKILL_DIR}/references/edit-plan.md. scripts/strip.py necesita ffmpeg, numpy y pillow.

No omitas los tiempos: "el gancho aterriza antes de 0:03 y dura 14 palabras, los ítems son de 8-11 s cada uno" es un formato que alguien puede filmar; "gancho, luego lista, luego cierre" no lo es.

Paso 3b: La pasada visual (medida, sin imágenes para que leas)

python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/visual.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/look.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/format_check.py" check <handle>

Luego la pasada de hoja (4 abajo), luego python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/lookpass.py" merge <handle>.

Ejecútalos después de transcribe (look.py empareja el texto OCR con las palabras habladas).

  1. visual.py: cortes y sus tipos, duración de planos, zooms, paneos y vibración.
  2. look.py: OCR 3 fotogramas por segundo y rostros YuNet: los subtítulos (lugar, tamaño, palabras, mayúsculas/minúsculas, colores, peso, entrada), encuadre de rostro, cuota de gráficos, paleta, personalidad de movimiento. Unos 40 s por vídeo.
  3. format_check.py: un estilo es UN formato, no una mezcla de todo lo que publica. Agrupa los vídeos por fotograma, rostro, subtítulos, duración de plano y duración; un grupo mayoritario de 3+ se conserva, el resto se mueve a video/left-out/ (format.json dice por qué; references/look-pass.md). Dile al usuario su primera línea cuando alguno difiera ("Usando 4 de 6: 2 parecen de un formato diferente."); si está mezclado, pide más vídeos de un tipo.
  4. La pasada de hoja: una llamada de Agente con model: "haiku" lee sheets/<id>.jpg por cada vídeo conservado (una hoja 3 x 3 cada uno, hecha por visual.py) y escribe video/<id>.look-ai.json según el prompt de lookpass.py: fuente, estilo gráfico, transiciones, lo que no es genérico. Nunca un número. Resumen exacto en references/look-pass.md. lookpass.py merge los pliega en style.json.

Luego lee look.md (menos de 48 líneas). No abras fotogramas ni hojas. Cada campo está en ${CLAUDE_SKILL_DIR}/references/look-pass.md. Los números en style.json vienen del código; nunca los edites a mano. Donde look.md y las palabras del modelo discrepen (ej. movimiento: enérgico medido, suave nombrado), gana el medido y el desmontaje dice ambos.

Sin motor OCR (doctor dice opcional): subtítulos queda sin medir y look.md lo dice. Instálalo (doctor imprime la línea) en lugar de leer las hojas tú mismo.

Paso 3c: La pasada profunda y la página

python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/graphics.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/sound.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/report.py" build <handle>

Cada measure imprime una línea de resumen y el archivo que escribió (--json imprime el bloque completo; no es necesario: look.md tiene los números). Ejecútalos después del Paso 3b (graphics.py enmascara al hablante con los rostros de look.py). Añaden cada gráfico (recortado, su tipo, dónde está, cómo entra y sale como un easing GSAP ajustado), tipos de corte y movimientos de cámara (visual.py), efectos de sonido y música, los primeros 3 segundos de cada vídeo, ganadores contra el grupo de control y un escaneo de indicios de IA en la apariencia del propio creador. Campos, métodos, techos y coste: ${CLAUDE_SKILL_DIR}/references/teardown-page.md. Después de graphics.py measure, ejecuta la pasada de tipos haiku en esa referencia (o los tipos se quedan como la suposición del código), luego sound.py y report.py.

Luego abre creator-teardowns/<handle>/teardown.html para el usuario (open en Mac, start en Windows, xdg-open en Linux) y ofrécete a publicarlo como un artifact. No leas la página ni sus imágenes tú mismo: look.md tiene los números. Dile al usuario en dos o tres líneas qué hacen diferente los ganadores (las líneas Ganadores: en look.md, con n) y cualquier indicio de IA de nivel BAN en su apariencia.

Luego pregunta en el cuadro de preguntas (la página solo muestra la evidencia; no tiene nada que marcar), una pregunta de selección múltiple: "¿Qué partes de @ debería copiar tu edición?" Opciones: subtítulos, ritmo, tipos de gráficos, movimiento de entrada, diseño, sonido (máximo 4 opciones por pregunta: divide en dos preguntas si es necesario), la descripción de cada opción una línea medida de look.md (ej. "se desliza en 0.25 s con rebasamiento"). Si hay algún indicio BAN en una parte que elijan, dilo antes de que confirmen. Guarda la respuesta:

python3 "${CLAUDE_SKILL_DIR}/scripts/editplan.py" blend <handle>-mine --from <handle> \
    --take captions,pace,graphics,entrances,layout,sound    # solo las partes elegidas

style-edit lee creator-teardowns/<handle>-mine/style.json; una parte omitida usa su valor por defecto. report.py build y editplan.py blend imprimen la habilidad del estilo (skill edit-like-<handle> -> <path>, con ai-editor instalado): dile al usuario su nombre. La retroalimentación sobre ese estilo edita esa habilidad.

Paso 3d: Varios creadores (cuando el usuario nombró más de uno)

Sigue ${CLAUDE_SKILL_DIR}/references/blend.md: Pasos 1 a 3b por creador, look.md lado a lado, luego editplan.py blend.

Paso 4: Escribir el desmontaje

Rellena ${CLAUDE_SKILL_DIR}/references/teardown-template.md en creator-teardowns/<handle>/teardown.md. Cada vídeo recibe una línea de estadísticas, transcripción textual, tabla de compases con tiempos, patrones a conservar y patrones a rechazar.

Paso 5 (opcional): Convertirlo en una habilidad

Pregunta si vale la pena conservar el formato. Si es así, sigue ${CLAUDE_SKILL_DIR}/references/skill-handoff.md (la habilidad de formato, junto con la propia habilidad del estilo).

Paso 6 (opcional): Planificar el vídeo del usuario al estilo del creador

Cuando el usuario entregue su propio vídeo, sigue ${CLAUDE_SKILL_DIR}/references/edit-plan.md. Necesita el events.json del creador de la pasada visual; no renderiza.

Si un script se detiene

mensajehacer
doctor No listo: ...sigue references/setup.md por cada línea que liste
yt-dlp no devolvió nada / analizados 0 vídeoslee la pista que imprime: actualiza yt-dlp (doctor muestra cómo), o pide enlaces de vídeo individuales y usa --urls
Perfil de Instagram falladi su frase: inicia sesión en instagram.com en Chrome, o 6+ enlaces de Reel (Paso 1 "Instagram")
... Arregla la clave, luego reejecuta (transcribe)la clave de ElevenLabs es incorrecta: el usuario la guarda de nuevo con setkey en su propio terminal, o descártala y usa Whisper
no hay vídeos en ... Ejecuta download primeroejecuta visual.py download <handle>
download falló: <ids> (salida 1)reejecuta con los --ids que imprime; si fallan de nuevo, di que la muestra es más pequeña y continúa
yt-dlp no encontradoejecuta fetch.py doctor y arregla lo que liste
algunos vídeos fallan al transcribirreintenta con --ids, luego di cuáles fallaron; nunca rellenes el hueco

Reglas estrictas

  • Números reales o nada. Cada afirmación sobre lo que funciona cita el recuento de vistas junto a ella. Nunca digas que un vídeo "se volvió viral" sin el número.
  • Solo transcripciones textuales. Nunca resumas un vídeo que no fue transcrito.
  • La estructura se copia, la voz no. Cada desmontaje indica qué rechazar.
  • Grupo de control de la mediana. Al menos dos de rendimiento medio transcritos, o el análisis no puede separar el formato de los hábitos del creador.
  • Nunca inventes una línea de transcripción, ni una estadística o cita para una tarjeta. Si la transcripción falló, reintenta con --ids, luego di que falló.
  • Nunca pidas la clave de ElevenLabs en el chat.
  • Solo números medidos en style.json. ritmo y zoom vienen de visual.py; subtítulos, rostro, gráficos y movimiento de look.py; solo palabras (look, font_match) del modelo.
  • Lee look.md, no los fotogramas. Abre un fotograma solo para resolver una pregunta que look.md no pueda responder, y di cuál. El usuario recibe teardown.html; Claude recibe look.md.
  • Ganadores contra control: di n. Nunca llames probada a una diferencia; "todos los ganadores" solo significa que no hay superposición en esta muestra.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Conz-Wilts/ai-editor

Turns one long video or podcast (a local file or a YouTube link) into the best 3-5 short vertical clips, each cut and styled in the user's profile style. Transcribes once, splits the talk into candidate clips at sentence boundaries inside the chosen length, scores every candidate in code (speech rate, loudness, laughter, numbers and names said), shows the shortlist on one page with a preview of each, then trims, cuts and style-edits each pick as its own edit. Use when the user says "clip this video", "make shorts from my podcast", "find the best clips", "cut this into TikToks", "turn this YouTube video into reels", "repurpose this long video", or drops a long video (over about 3 minutes) or a YouTube link and wants short clips. Not for editing one short take (that is start or cut), and not for measuring someone else's style (that is creator-teardown).

Conz-Wilts/ai-editor

Cuts raw talking-head footage into a clean jump cut. Takes one take or several joined (mp4 or mov, any aspect, 4K phone footage is fine), transcribes it word by word, removes retakes, false starts, fillers and dead pauses, and renders cut.mp4 at the source resolution plus words.json timed to the cut. The user approves the cut on a page with the whole transcript and every removed word struck through. Use when the user says "cut my video", "just cut it", "remove my mistakes", "cut out the retakes", "remove the pauses", "clean up this take", "jump cut this", "tighten this clip", or asks only for the cut of a raw take; start calls it for a full edit. Runs before style-edit. Not for a general request to edit a video or to make it look like a creator (that is start), not for adding captions, zooms or cards (style-edit), and not for analysing someone else's videos (creator-teardown).

Conz-Wilts/ai-editor

Generates new footage with Higgsfield and puts it on the edit's timeline. Prices every generation first, asks the user with the dollar amount (and, for their own footage, whether it may be uploaded to Higgsfield), then submits, waits, downloads into the edit's generated/ folder and adds the result to the timeline's Generated track. Covers motion transfer on a clip of the user's video (their moves onto a character or styled look), b-roll from a sentence (text to video), a still brought to life (image to video) and stills for cards (text to image). Use when the user says "generate b-roll", "make a shot of", "AI b-roll", "generate a clip", "use Higgsfield", "motion transfer", "put my moves on", "restyle this part with AI", or asks for footage they did not film. Not for animated diagrams or motion graphics (motion), not for real screenshots and logos (overlays, logo-pack), and not for the cut (cut).

Conz-Wilts/ai-editor

For the editor's maintainers. Turns what users corrected into lasting fixes in this repo, for every user, enforced by code and tests rather than notes. Reads the suggestions users marked "would help everyone" (~/.ai-video-editor/suggestions.jsonl), taste rules said twice (taste.py report), preview corrections (edits/*/corrections.jsonl), review-page notes (*/review.json) and open GitHub issues labelled feedback; groups repeats; for each item the maintainer accepts, writes the general rule into PRINCIPLES.md and the skill that owns it, adds or tightens the check that enforces it, adds a test that fails before and passes after, and runs the full test set. Use when the maintainer says "improve the editor", "turn feedback into fixes", "process suggestions", "what are users complaining about", "go through the feedback issues". Not for one user's own preferences (that is taste), and not for editing a video.

Skills relacionados