O que derush faz?
Montagem «jump cut» automática de uma gravação falada. Faz APENAS o corte e a exportação: sem legendas. Esta skill incorpora a rubrica de retração abaixo; os scripts (fillers, prune, cut) estão no repositório.
Os vídeos ficam em $DERUSH_OUT_ROOT/<STEM>/ (padrão ~/Movies/Derush, veja derush config show).
Um áudio sozinho (m4a, mp3, wav, aiff, caf) passa pela mesma cadeia: a montagem sai em <STEM>.derush.m4a, a exportação em <STEM>.export.m4a (-14 LUFS); fcpxml, logos e visual não existem para ele.
Os três comandos
derush prep "<video>" # organiza a fonte em $DERUSH_OUT_ROOT/<STEM>/, áudio, silêncios, transcrição (qwen),
# alinhamento, euh, lacunas, controle de lacunas. ~1.5x a duração
derush words <STEM> # transcrição palavra por palavra com limites: a etapa 6 é lida aqui
derush studio # TUDO no navegador: arrastar um vídeo bruto, derush, montagem pelo
# texto, montagem ajustada proposta, renderização. Fala em uma lacuna = mantida, removível
derush edit <STEM> # montagem pelo texto: página local, riscar palavras (Supr), corrigir um
# euh/silêncio (Enter), Validar → retraction_cuts.json + restore.json
# «Propor montagem ajustada»: Claude propõe cortes (repetições,
# digressões, retomadas), em laranja, nada é cortado sem seu OK
derush render <STEM> # fusão + guarda + corte + retranscrição da saída + cuts.md
derush logos <STEM> # opcional: logos.json → <STEM>.logos.mp4, a exportação o pega se existir
derush fcpxml <STEM> # <STEM>.fcpxml, também escrito por render: timeline Resolve, clipes sobre a
# fonte inteira, uma borda puxada revela o que foi cortado
derush export <STEM> # <STEM>.reel.mp4: 1080x1920, 30 fps, -14 LUFS, pronto para postar
Logos (derush logos): $DERUSH_OUT_ROOT/<STEM>/logos.json = {"cues":[{"logo":"canva","t":14.27}]}, t lido
em derush words (instante FONTE, convertido por keep.json). Arquivos em $DERUSH_OUT_ROOT/_logos/src/<logo>.svg|png
(recortados, fundo transparente; sem arquivo, cartão de texto). Cartão branco arredondado 30% de largura, no topo à
ESQUERDA por padrão (face cam: o rosto ocupa o terço superior centralizado), 2 s, fade 0,2 s; uma lista dita
rapidamente organiza os cartões lado a lado. Controle: extrair uma imagem por cue e OLHAR. IMG_4596 (2026-10-11):
Canva ×2, Microsoft 365, Gamma, Higgsfield («Xfield» no transcript: pedir os nomes a ele, whisper não conhece metade).
derush = bin/derush do repositório. Opções de prep: --lang en,
--noise -40 (voz fraca), --min 0.3 --pad 0.08 (mais apertado), --min 0.8 --pad 0.2 (mais pausado).
Dois vídeos: executar os prep em sequência em segundo plano, ler os words enquanto isso.
O que é cortado, e quem decide
| Camada | Sinal | Quem decide |
|---|---|---|
| Silêncios | waveform, silencedetect (não as lacunas whisper, muito grosseiras) | script |
| (pré-requisito) limites reais de palavras | alinhamento forçado CTC no áudio (align_words.py) | script |
| euh / hum / hein escritos por whisper, gaguejos «je je», «et et» | timestamps de palavra (detect_fillers.py) | script |
| euh / mmh NÃO escritos (a maioria) | lacuna não silenciosa entre 2 palavras (gap_fillers.py) | script |
| falsos começos, frase retomada, «não espera», palavra abandonada, instruções ditas à câmera | leitura do transcript | VOCÊ, etapa 6 |
Diretriz principal da skill: um corte falso de conteúdo verdadeiro é o pior
erro. Na dúvida, mantém-se, e se diz em cuts.md («mantido de propósito»).
Etapa 6, a única manual: os falsos começos
Leia derush words <STEM> (palavra@início-fim, ? = limite interpolado, não alinhado) e escreva
$DERUSH_OUT_ROOT/<STEM>/retraction_cuts.json = {"retraction_cuts":[{start,end,cue_text,rationale}]}.
Rubrica: «A RUBRICA DE DETECÇÃO DE RETRAÇÃO» mais abaixo neste arquivo, com estes casos de fala espontânea:
- Falso começo «eu vou... vamos ver»: cortar «eu vou» até o início da retomada.
- Palavra reformulada «é uma coisa, uma ferramenta que»: cortar a primeira apenas se a segunda a SUBSTITUI (não se especifica).
- Frase recomeçada do zero, inclusive após um aparte: cortar a primeira tentativa inteira.
- Instruções de direção ditas à câmera («tiramos isso», «não no meu microfone, não», «mantemos»): são instruções, não conteúdo. Aplicá-las, depois cortá-las. IMG_4566: os últimos 40 segundos eram 3 falsos começos e 2 instruções.
- Não cortar: repetição de ênfase («sempre, sempre»), lista, «na verdade» que adiciona, pausa expressiva, autocorreção cômica («século XXI e XXII. Não, do XXI»).
- Limites, lidos em
words:start= meio entre o fim da última palavra mantida e o início da primeira palavra abandonada;end= início da primeira palavra mantida − 0,04 s. Para cortar até o fim:end= duração do vídeo.
Para um transcript longo (> 1000 palavras), delegar a leitura a um subagente que retorna o JSON,
depois reler seus limites contra words.
Verificar antes de renderizar (re-derivar, não reconhecer)
render faz os controles mecânicos e escreve cuts.md. O que VOCÊ relê:
- A seção diff de
cuts.md(transcript fonte → saída). Cadadeletedeve ser um corte desejado. Umreplace/insertestranho («é é é») é frequentemente um loop do whisper: retranscrever a região sozinha antes de acusar o corte. - Uma lacuna marcada FALA NA LACUNA por
gap_check(final deprep): ouvir a janela. Se for um falso começo, o corte é bom. Se for conteúdo, remover essa lacuna de_work/gap_cuts.jsonantes derender. - Um euh, um mmh CITADO é conteúdo. «os silêncios, os mmh», «sobretudo nos euh»: a palavra é o objeto da frase, permanece. Após «os», «das», «um», «sobre os» antes de um euh/mmh/hum, ouvir e remover a lacuna que o cobre. Nunca tratar «sobre os» como um falso começo: a frase termina no euh. (2026-10-27, A001_10272011_C008.)
- Transcrição: Qwen3-ASR por padrão desde 2026-11-04 (
transcribe_qwen.py,DERUSH_ASR=whisperpara voltar; qwen ausente ou falho → whisper, dito no log). Qwen escreve as gagueiras e falsos começos que whisper funde (C010: «des des trucs», «j'aurais pas mes, j'aurais pas mes, tous mes»), portanto eles aparecem emderush wordse emderush edit. Ele não escreve os euh:gap_fillers.pypermanece. Mais fraco em nomes próprios («claudito» → «claudio»). - Falso começo fundido pelo whisper: whisper pode escrever apenas uma vez uma frase dita duas vezes. IMG_4543: «je t'en mets… je vais mettre» transcrito «je vais mettre». Uma frase que soa estranha numa junção na saída = retranscrever a fonte palavra por palavra nesse ponto.
- Siglas, nomes de domínio, números: CTC alinha mal letras soletradas. IMG_4549: a lacuna
antes de «SI» (SpaceX SI) carregava o «ès». Toda lacuna que toca uma sigla ou um
.com: retranscrever a janela, e não cortá-la ao menor sinal de dúvida. Tokens com dígito («5h», «J3») são interpolados, nunca alinhados. - Sincronia:
cuts.mddá a diferença A/V. Acima de 40 ms, verificar. - Preencher a linha
Assuntodecuts.md.
A RUBRICA DE DETECÇÃO DE RETRAÇÃO
Você (o agente invocador) lê derush words <STEM> e escreve este JSON em
$DERUSH_OUT_ROOT/<STEM>/retraction_cuts.json, o arquivo que derush render lê:
Contrato de saída do detector
{
"retraction_cuts": [
{
"start": 6.4,
"end": 9.8,
"cue_text": "Scratch that",
"rationale": "Reparandum 'runs every time the user opens a file' + cue 'Scratch that'; repair 'it actually runs on session start' is kept."
}
]
}
start= onde o pensamento abandonado (reparandum) começa. Julgamento SEMÂNTICO; pode cair no meio de uma frase. Leia o tempo exato dos timestamps de palavras dederush words(veja «Ancoragem de limites» abaixo). Os tempos estão em segundos do vídeo FONTE.end= fim da deixa de retração (interregno). O reparandum + deixa são AMBOS removidos; a reparação que SEGUE é MANTIDA. Na prática,endcai no limite onde a enunciação corrigida começa.- Lista vazia
{"retraction_cuts": []}quando não há retração genuína. Chamarizes e mudanças de tópico NÃO produzem corte.
O modelo de auto-reparação (Levelt / Clark & Wasow)
[REPARANDUM] [INTERREGNUM/DELIXA] [REPARAÇÃO]
abandonado a deixa substituição
CORTAR CORTAR MANTER
O corte = reparandum + deixa. A reparação é preservada.
Teste positivo (cortar): TODOS devem valer
- O falante está invalidando conteúdo anterior (negando, deletando ou julgando errado/incoerente), E
- Ele substitui ou abandona: uma versão corrigida segue, ou o pensamento é abandonado, E
- Há um reparandum real presente no transcript para remover (uma deixa sem fala precedente para retrair → NENHUM corte; veja caso extremo abaixo).
Testes negativos (NÃO cortar): qualquer um rejeita o candidato
Estes superficialmente se assemelham a deixas mas não são retrações:
- Mudança de tópico qualificada por tempo: «esqueça o orçamento por um segundo/por agora», «oublie le budget deux secondes». O qualificador «por um segundo/por agora» (frequentemente mais um adiamento posterior como «cobriremos na próxima semana») significa que o conteúdo anterior ainda é VÁLIDO, apenas adiado. NENHUM corte.
- Escala aditiva: «na verdade é ainda melhor», «não mas espera, é ainda mais poderoso que isso». «na verdade»/«não mas» aqui SOBEM a afirmação anterior; ela ainda se mantém. NENHUM corte.
- Afirmação: «não mas é exatamente isso», «actually, that's a good point». O «não»/«actually» intensifica concordância, não correção. NENHUM corte.
- Pausa procedural: «espera, vou te mostrar» / «wait, let me show you». A fala pausa para uma demonstração; nada é retraído. NENHUM corte.
- Refinamento de nuance/escopo: «é mais sutil que isso», «enfim, é um pouco mais complicado». A afirmação anterior é qualificada/estendida, não descartada. NENHUM corte.
- Fechamento de tópico: «enfim, é complicado», «de qualquer forma». Fecha uma cadeia
sem invalidá-la. NENHUM corte. (
brefé ambíguo: apenas um corte quando é seguido por um abandono real como «bref, peu importe les critères».)
Até onde o reparandum começa?
O limite inicial é um julgamento semântico:
- Pergunte o que o falante está substituindo. O reparandum começa onde a ideia abandonada primeiro divergiu da substituição correta.
- Marcadores de reinício («je reprends», «let me start over», «não espera eu recomeço») → mais amplo reparandum: de volta ao início do trecho refeito.
- Pivôs de correção («não na verdade», «actually no», «wait no`) → estreito reparandum: apenas o predicado/cláusula imediatamente anterior.
- Regra de limite natural de tópico: nunca corte além de um assunto diferente. Uma introdução de tópico compartilhado válida que tanto a versão errada quanto a correta constroem é MANTIDA (por exemplo, uma introdução «para o projeto de instalação de som…» permanece; apenas a afirmação técnica errada após ela é cortada).
- Teste de CONFIGURAÇÃO vs ELABORAÇÃO (manter a última afirmação ainda verdadeira). Quando uma
CONFIGURAÇÃO/introdução PERMANECE verdadeira e apenas uma ELABORAÇÃO, ENUMERAÇÃO,
LISTA, ou DETALHE subsequente é abandonado, o reparandum começa na elaboração, não
na configuração. A pergunta decisiva é: «o falante está negando ESTA cláusula, ou
apenas o que veio depois dela?» Se a cláusula ainda é verdadeira após a reparação, MANTER
ela; comece o corte na primeira cláusula que a reparação invalida.
- «It uses four criteria: A, B, C, D. Anyway, never mind the criteria: what matters is X.» → a configuração «it uses four criteria» ainda é VERDADEIRA (ele usa critérios); apenas a enumeração «A, B, C, D» é abandonada. O corte começa na enumeração, NÃO em «it uses four criteria». Manter a configuração é obrigatório: cortá-la é um falso corte de conteúdo real.
- Contraste: se o falante nega a própria configuração («it uses four criteria… actually no, it uses none, it's a flat rule»), então a configuraÇÃO É o reparandum e o corte começa ali. Leia o que a reparação substitui.
- Corte mínimo / conservadorismo: quando em dúvida sobre o quanto atrás, prefira o corte MAIS ESTREITO. Deixar uma cláusula anterior ligeiramente imprecisa é muito melhor do que cortar uma frase correta.
- Reparanda multissentença: quando o pensamento abandonado abrange várias sentenças ou
linhas de
derush words, o corte cobre todas elas. - Ancoragem de limites: use os timestamps de palavras, nunca aritmética.
derush words <STEM>imprime cada palavra comoword@início-fim(?após uma palavra = o limite é interpolado, não alinhado ao som; trate-o como menos exato). Apoie-se neles:start= o meio da lacuna entre o FIM da última palavra que você mantém e o INÍCIO da primeira palavra abandonada.end= o INÍCIO da primeira palavra que você mantém (a cabeça da reparação) menos 0,04 s. O reparandum e a deixa são cortados, a cabeça da reparação nunca é tocada. Para cortar até o fim do vídeo,end= a duração do vídeo.- Deixa e cabeça da reparação na mesma frase (divididas por «mas», «é», «it's», uma vírgula, um traço): termine o corte na última palavra da deixa, não depois. Use a PRIMEIRA pontuação que segue a deixa, nunca uma vírgula posterior dentro da cláusula de reparação. Quando a deixa carrega uma vírgula final («não espera,», «scratch that,`), as palavras após ela são reparação e são MANTIDAS.
- Reparandum na cauda de uma linha e a deixa na cabeça da próxima: termine o corte no fim do reparandum em vez de avançar para também pegar a deixa. Uma breve deixa residual («não espera») é inócua; comer a cabeça da reparação é o pecado cardinal.
- Limites interpolados (
?): arredonde PARA DENTRO (veja abaixo). S
...
[truncado para tradução]