CommunityProgramación y desarrollogithub.com

editorial-short

Crea un short vertical «Fringe Lines» al estilo editorial (fondo de papel, altavoz que se transforma entre pantalla completa/tarjeta/PiP redondo, gráficos explicativos, subtítulos serif palabra por palabra, gancho + tarjeta final, SFX). Úsalo cuando te pidan crear, cambiar de estilo o arreglar un short a partir de un episodio.

¿Qué es editorial-short?

Este skill está diseñado para usuarios de agentes de IA como Claude Code, Cursor o Codex que necesiten producir clips cortos verticales de alta calidad para redes sociales a partir de episodios de Fringe Lines. Automatiza todo el flujo: desde la selección del momento (30-50 segundos con gancho fuerte, idea única y remate), pasando por la edición de audio y vídeo con eliminación de muletillas y pausas, hasta la aplicación de un estilo visual editorial muy específico inspirado en los shorts de Greg Isenberg. El skill se apoya en herramientas de línea de comandos y scripts de Python/Renunción para el renderizado, e incluye reglas estrictas de diseño como alternancia cada 3-5 segundos entre modos (pantalla completa, gráfico, tarjeta), subtítulos palabra por palabra con palabras clave en naranja cursiva, y una tarjeta final de 2 segundos. También incorpora un paso obligatorio de control de calidad mediante extracción de fotogramas y comprobación de elementos visuales, solapamientos y nivel de sonoridad (−14 LUFS). Es ideal para creadores de contenido que quieran producir consistentemente vídeos cortos atractivos sin edición manual.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/qdevery/fringe-lines-video/tree/main/.claude/skills/editorial-short

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

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

Documentación

Short editorial (Fringe Lines)

El estilo está modelado a partir de los shorts de Greg Isenberg. Aplica lo siguiente a cada short:

  • Nunca mantengas un primer plano de alguien hablando durante más de ~6 s.
  • Un cambio gráfico o de diseño aterriza cada 3–5 s.
  • Los subtítulos aparecen palabra por palabra, con algunas palabras clave en cursiva naranja.
  • Los gráficos siguen lo que se está diciendo, de modo que un gráfico aterriza en la palabra que ilustra.

0. Requisitos previos (por máquina)

  • pipeline/setup.sh instala el entorno virtual ~/.shorts-skill y los módulos de node de Remotion en ~/.cache/fringe-lines-video.
  • Las transcripciones de los episodios deben existir: work/<ep>/words-quinn.json y words-doom.json (de pipeline/transcribe_verbatim.py).
  • Código fuente de Remotion: pipeline/remotion/src/ShortV2.tsx (diseño) y Graphics.tsx (tipos de gráfico).

1. Elegir el momento (30–50 s)

  • Busca en los archivos de palabras un fragmento autónomo que tenga:
    • una frase de apertura contundente (afirmación, número o confesión);
    • una idea;
    • un remate o golpe de efecto cerca del final.
  • Buenas señales:
    • números concretos (porcentajes, cantidades en dólares, número de personas);
    • empresas o productos nombrados;
    • una opinión controvertida;
    • un experimento personal ("Dejé que Codex…").
  • Evita clips que dependan de contexto anterior ("como dije", "esa cosa").
  • Se pueden unir varios --range. Corta al final de las oraciones y comprueba que la costura no repite palabras.

2. Cortarlo

Añade una línea a work/<ep>/shorts.sh y ejecútala:

b --name short-NN --range START:END [--range ...] --replace "27=>27%" --replace "claude=>Claude"
  • build_short.py hace lo siguiente:
    • elimina muletillas, tartamudeos y pausas largas;
    • selecciona la cámara activa;
    • escribe work/<ep>/short-NN/clip.mp4 y props.json;
    • renderiza el short plano v1.
  • --replace corrige el texto de los subtítulos. Un lado derecho vacío oculta esa palabra.
    • Corrige siempre: números ("27"→"27%"), nombres de producto (Claude, Codex, Descript, GTM, SQL) y errores de transcripción de Whisper.
  • Para obtener los tiempos exactos de salida y escribir la especificación, imprímelos: python3 -c "import json;p=json.load(open('work/<ep>/short-NN/props.json'));print(' '.join(f\"{w['text']}@{w['startMs']/1000:.1f}\" for w in p['words']))"

3. Escribir la especificación de estilo: work/<ep>/short-NN/style.json

{
  "hook":  {"text": "Microsoft quiere que el *27%* de su plantilla renuncie", "end": 2.8},
  "outro": {"text": "Crecer *sin* crecer en *plantilla*", "hold": 2.0},
  "emphasis": ["microsoft", "27%", "renuncie"],
  "scenes": [
    {"at": 0.0,  "mode": "full"},
    {"at": 3.0,  "mode": "graphic", "graphic": {"type": "stat", "kicker": "Oferta de compra de Microsoft", "value": 27, "suffix": "%", "label": "de empleados a los que se ofreció un pago para *irse*"}},
    {"at": 6.2,  "mode": "card"}
  ]
}

Los tiempos están en segundos dentro del clip cortado, tomados de los tiempos de las palabras del paso 2.

Reglas que mantienen la coherencia:

  • Estructura:
    • La escena 0 siempre es full, con un hook de 4–8 palabras que termina en ~2.5–3 s.
    • Expresa la afirmación; no resumas el clip.
  • Ritmo:
    • Alterna modos como full → graphic → card → graphic → card … con 3–6 gráficos en un short de 40 s.
    • Vuelve a usar full para una reacción o risa contundente en la segunda mitad.
  • Tiempos:
    • Inicia cada gráfico 0.1–0.3 s antes de la palabra que ilustra, y mantenlo visible 2.5–5 s.
    • Dos gráficos pueden sucederse directamente, p.ej., una tarjeta de $20 y luego una de $100.
  • Énfasis: elige 10–18 palabras clave: números, nombres y las palabras del remate. La coincidencia distingue mayúsculas de minúsculas e ignora la puntuación.
  • Acentos: en cualquier campo de texto, *palabra* se renderiza en cursiva naranja. Usa una o dos por cadena.
  • Outro: una tarjeta final de 2 s con una línea corta que replantee la conclusión, o una pregunta al espectador.
  • Honestidad:
    • Los números en pantalla deben coincidir con lo dicho en el programa.
    • Los gráficos son esquemáticos: usa lines con formas, nunca ejes o valores inventados.
    • Atenúa con "aproximadamente" o "~" cuando el hablante lo haga.

Tipos de gráfico (Graphics.tsx):

tipocamposuso para
statkicker, prefix, value (número, cuenta ascendente), decimals, suffix, labelun número destacado
peoplekicker, value (cadena), label, filled (0–1)número de personas / proporción de personas
lineskicker, series: [{label, shape: up|flat|down}], captiontendencia frente a tendencia
quotetext, by?el remate, dicho en pantalla
headlinesource, title, highlightnoticias, anuncios, un "veredicto"
listtitle, items[]pasos, productos, lo que salió mal

Si se necesita un nuevo tipo de gráfico, agrégalo a Graphics.tsx y a su tipo unión. Mantén el estilo de tarjeta: tarjeta blanca o de tinta, radio de 36px, entrada elástica y una animación que se ejecute en su marco local f.

4. Renderizar

~/.shorts-skill/bin/python pipeline/style_short.py --ep <ep> --name short-NN --spec work/<ep>/short-NN/style.json
  • El seguimiento facial (pipeline/face_track.py, YuNet) se calcula una vez y se guarda en caché en short-NN/faces.json. Mantiene el PiP redondo y la tarjeta centrados en la cara; borra el archivo si el clip se vuelve a cortar.
  • Los efectos de sonido se sintetizan: un whoosh en cada cambio de escena y un pop cuando aterriza un gráfico. Se mezclan a --sfx-db -20.
  • Sonoridad: −14 LUFS.
  • Salida: out/shorts/<ep>-short-NN-v2.mp4.

5. QA (siempre, antes de informar)

Extrae fotogramas y míralos:

for t in 1.5 5 10 15 20 25 30 35 40; do ffmpeg -v error -y -ss $t -i out/shorts/<ep>-short-NN-v2.mp4 -frames:v 1 -vf scale=270:-1 /tmp/q_$t.png; done

Comprueba cada uno de los siguientes puntos:

  • Gancho: legible y que no cubra la cara.
  • Gráficos: no se superponen con el bloque de subtítulos, que se sitúa en y≈1340–1600. Ningún texto se desborda de una tarjeta. Los valores de estadísticas largos como "+$500K" se reducen automáticamente.
  • PiP: la cara está centrada en el círculo.
  • Subtítulos: sin * sueltos; las palabras clave se renderizan en naranja.
  • Sonoridad: ffmpeg -i out.mp4 -af ebur128 -f null - 2>&1 | grep " I:" marca aproximadamente −14.

Informa al usuario:

  • De qué trata el short y su duración.
  • Cualquier número que deba verificar.
  • Si queda algún lenguaje explícito.

Individual skills in this repo

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

carousel

Make a Fringe Lines image carousel (Instagram/LinkedIn, 1080x1350 PNG slides + PDF) — photo slides with big condensed caps headlines and accent words, large-type text-only slides, chart/screenshot slides, explainer-graphic slides and a follow CTA. Use when asked for a carousel, slide post, or "swipe" post from an episode or a topic.

engaging-monologue

Make a 16:9 FringeLines "engaging monologue" video from a solo talking-head take — jump cuts with punch-ins, the speaker shrinking into a portrait picture-in-picture while serif kinetic text, diagrams (pyramid stack, compare, roadmap, steps, big stat) and b-roll cards build on a paper canvas, plus callout cards, lower thirds, chips, a CTA pill and a green end card, all synced word by word to the speech. Use for YouTube explainers, solo commentary, newsletter-to-video and "one idea, told well" pieces.

infographic

Make a single-image editorial infographic (1080x1350) that explains one idea at a glance — two-tone headline, one-sentence dek, a hero visual with 2–4 numbered callouts and leader lines, an optional side note, a three-column "why it matters" row with icons, byline and sources. Use for "explain X in one graphic" posts about a company move, a framework, an architecture or a trend; the PNG can also be a carousel slide.

podcast-intro

Build the cold open for a long-form Fringe Lines episode — a 35–60 s highlight reel of the episode's best lines with explainer-graphic cutaways, keyword captions, whip transitions + SFX, ending on a title card with the topic list. Use when making or revising the intro of a full episode.

Skills relacionados