@intelli-ia/easyedit 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/LICENSE +21 -0
- package/README.md +25 -2
- package/bin/easyedit.mjs +6 -0
- package/package.json +12 -4
- package/payload/.easyedit/Spec.md +82 -0
- package/payload/.easyedit/TOOLS.md +113 -0
- package/payload/.easyedit/templates/Spec.md +125 -0
- package/payload/claude-section.md +5 -0
- package/payload/skills/easyedit-build/SKILL.md +78 -0
- package/payload/skills/easyedit-destaques/SKILL.md +49 -0
- package/payload/skills/easyedit-interviewer/SKILL.md +54 -0
- package/payload/skills/easyedit-legendas/SKILL.md +28 -0
- package/payload/skills/easyedit-log/SKILL.md +46 -0
- package/payload/skills/easyedit-log/scripts/campo.mjs +24 -0
- package/payload/skills/easyedit-log/scripts/registrar.mjs +34 -0
- package/payload/skills/easyedit-novo/SKILL.md +48 -0
- package/payload/skills/easyedit-novo/scripts/novo_video.mjs +43 -0
- package/payload/skills/easyedit-progress/SKILL.md +27 -0
- package/payload/skills/easyedit-progress/scripts/progress.mjs +39 -0
- package/payload/skills/easyedit-ritmo/SKILL.md +42 -0
- package/payload/skills/easyedit-ritmo/scripts/pausas.mjs +73 -0
- package/payload/skills/easyedit-setup/SKILL.md +31 -0
- package/payload/skills/easyedit-split-broll/SKILL.md +37 -0
- package/payload/skills/easyedit-takes/SKILL.md +52 -0
- package/payload/skills/easyedit-takes/scripts/takes.mjs +73 -0
- package/payload/skills/easyedit-vertical-trafego/SKILL.md +55 -0
- package/payload/skills/easyedit-vertical-trafego/references/playbook.md +37 -0
- package/payload/skills/easyedit-zonas-seguras/SKILL.md +73 -0
- package/payload/skills/easyedit-zonas-seguras/references/zonas.md +18 -0
- package/payload/skills/easyedit-zonas-seguras/scripts/detectar.swift +37 -0
- package/payload/skills/easyedit-zonas-seguras/scripts/verificar_zonas.mjs +159 -0
- package/payload/skills/easyedit-zonas-seguras/scripts/zonas.mjs +37 -0
- package/src/cli.mjs +45 -0
- package/src/delegar.mjs +10 -0
- package/src/doctor.mjs +56 -0
- package/src/install.mjs +62 -0
- package/src/paths.mjs +10 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.2.0
|
|
4
|
+
- Suporte a Windows (e Linux): `doctor` funciona com `npx.cmd`, mostra o sistema e como instalar cada dependência por sistema.
|
|
5
|
+
- Verificador de zonas seguras: sem detecção automática (Windows/Linux), gera folhas de revisão visual com as zonas em vermelho e exige a conferência; `--manual 1` força o modo; `EASYEDIT_DETECTOR` aceita um detector externo.
|
|
6
|
+
- `TOOLS.md` agora é neutro quanto a sistema e caminhos.
|
|
7
|
+
- CI no GitHub Actions em ubuntu, macOS e Windows (Node 22 e 24).
|
|
8
|
+
|
|
9
|
+
## 0.1.0
|
|
10
|
+
- Primeira versão: `install`, `update`, `doctor`, `novo`, `progress`.
|
|
11
|
+
- 13 skills `easyedit-*`, contrato `.easyedit/Spec.md` e template de spec.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Intelli
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
-
#
|
|
1
|
+
# EasyEdit
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Especificação, entrevista e acompanhamento de edição de vídeo (HyperFrames) em forma de skills para agentes de código.
|
|
4
|
+
|
|
5
|
+
## Instalar a CLI
|
|
6
|
+
npm install --global @intelli-ia/easyedit
|
|
7
|
+
# desenvolvimento: npm link nesta pasta
|
|
8
|
+
|
|
9
|
+
## Usar num projeto
|
|
10
|
+
cd meu-projeto-de-video
|
|
11
|
+
easyedit install # skills em .claude/skills, contrato em .easyedit/, seção no CLAUDE.md
|
|
12
|
+
easyedit doctor # confere Node, FFmpeg, HyperFrames, whisper
|
|
13
|
+
easyedit update # atualiza; preserva specs e .easyedit/TOOLS.md
|
|
14
|
+
|
|
15
|
+
Depois abra uma sessão nova do agente e use `/easyedit-novo` → `/easyedit-interviewer` → `/easyedit-build`.
|
|
16
|
+
|
|
17
|
+
## Requisitos
|
|
18
|
+
Node 22+, FFmpeg no `PATH` e HyperFrames no projeto (`npm i -D hyperframes`). Whisper.cpp (ou Parakeet) para transcrição. `easyedit doctor` diz o que falta e como instalar no seu sistema.
|
|
19
|
+
|
|
20
|
+
| | macOS | Windows |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| CLI e skills | ✔ | ✔ |
|
|
23
|
+
| FFmpeg | `brew install ffmpeg` | `winget install Gyan.FFmpeg` |
|
|
24
|
+
| Detecção automática de rosto nas zonas seguras | ✔ (Vision) | revisão visual de folhas de contato (obrigatória no gate); `EASYEDIT_DETECTOR` aceita um detector próprio |
|
|
25
|
+
| Render | mais rápido (Apple Silicon) | ✔ |
|
|
26
|
+
O EasyEdit espera a estrutura `clientes/<cliente>/{raw,assets,projects,output}`.
|
package/bin/easyedit.mjs
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intelli-ia/easyedit",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
}
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Especificação, entrevista e acompanhamento de edição de vídeo com HyperFrames, em forma de skills para agentes.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": { "type": "git", "url": "git+https://github.com/intelli-ia/easyedit.git" },
|
|
7
|
+
"homepage": "https://github.com/intelli-ia/easyedit#readme",
|
|
8
|
+
"bugs": { "url": "https://github.com/intelli-ia/easyedit/issues" },
|
|
9
|
+
"type": "module",
|
|
10
|
+
"bin": { "easyedit": "bin/easyedit.mjs" },
|
|
11
|
+
"files": ["LICENSE", "bin", "src", "payload", "CHANGELOG.md", "README.md"],
|
|
12
|
+
"engines": { "node": ">=22" },
|
|
13
|
+
"scripts": { "test": "node --test test/*.test.mjs" }
|
|
14
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# EasyEdit · Contrato da especificação de vídeo
|
|
2
|
+
|
|
3
|
+
Regras comuns a todas as skills `easyedit-*`. Cada vídeo é um projeto isolado e tem **um único** `spec.md`, em `clientes/<cliente>/projects/<AAAA-MM-slug>/spec.md`. Ele é a fonte normativa do que foi especificado, implementado e alterado. Não crie `plan.md`, `tasks.md` nem outros relatórios paralelos.
|
|
4
|
+
|
|
5
|
+
O template está em `.easyedit/templates/Spec.md`. As ferramentas disponíveis estão em `.easyedit/TOOLS.md`.
|
|
6
|
+
|
|
7
|
+
## Vertical
|
|
8
|
+
|
|
9
|
+
O campo `Vertical` do cabeçalho define o playbook: `trafego-meta` (criativo para anúncio na Meta, skill `easyedit-vertical-trafego`), `reels` (ainda sem playbook próprio) ou `a definir`.
|
|
10
|
+
|
|
11
|
+
## Gravações do vídeo
|
|
12
|
+
|
|
13
|
+
Todas as gravações de um criativo ficam em `clientes/<cliente>/raw/<AAAA-MM-slug>/`. `easyedit-takes` ordena (nome numerado, depois data de criação), transcreve, resolve refações e entrega a sequência ao restante do fluxo.
|
|
14
|
+
|
|
15
|
+
## Estados
|
|
16
|
+
|
|
17
|
+
O estado fica no campo `Status` do cabeçalho do `spec.md`. Não há pastas de estado, porque o projeto já é a unidade.
|
|
18
|
+
|
|
19
|
+
| Status | Significa | Quem avança |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| `Draft` | Entrevista em andamento. | `easyedit-novo`, `easyedit-interviewer` |
|
|
22
|
+
| `Defined` | Ato I completo e aprovado pela pessoa (`Definition Gate: Passed`). | `easyedit-interviewer` |
|
|
23
|
+
| `In Progress` | Ato II em execução. | `easyedit-build` |
|
|
24
|
+
| `Review` | Render gerado e aguardando validação do cliente (`Delivery Gate: Pending`). | `easyedit-build` |
|
|
25
|
+
| `Completed` | Entregue e aprovado (`Delivery Gate: Passed`). | `easyedit-build` |
|
|
26
|
+
|
|
27
|
+
Mudança pedida depois de `Defined` é uma entrada no Registro de mudanças (Ato III). Quando altera o escopo, o Ato I também é editado e o `Definition Gate` volta a `Pending`.
|
|
28
|
+
|
|
29
|
+
## Três atos
|
|
30
|
+
|
|
31
|
+
1. **Ato I · Especificação:** o que o vídeo deve ser.
|
|
32
|
+
2. **Ato II · Implementação:** como e com o quê foi feito, tarefas e evidências.
|
|
33
|
+
3. **Ato III · Registro:** mudanças (adicionado, ajustado, alterado, removido), feedbacks e entrega.
|
|
34
|
+
|
|
35
|
+
## IDs
|
|
36
|
+
|
|
37
|
+
Nunca reutilize nem renumere. `RV-001` requisito de vídeo · `AC-001` critério de aceite · `T-001` tarefa · `CH-001` mudança · `FB-001` feedback.
|
|
38
|
+
|
|
39
|
+
Cada `RV` precisa de pelo menos um `AC` que declare `Cobre: RV-xxx`. Cada tarefa aponta os `RV` que entrega.
|
|
40
|
+
|
|
41
|
+
## Contrato de perguntas (uma por vez)
|
|
42
|
+
|
|
43
|
+
Usado por toda skill com `Modo de interação: perguntas`. As perguntas são feitas **uma por vez**: faça a pergunta, espere a resposta, grave, reavalie e só então faça a próxima. Nunca envie uma lista de perguntas.
|
|
44
|
+
|
|
45
|
+
**Formato fixo de cada pergunta**
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Pergunta N · <tema curto>
|
|
49
|
+
<a pergunta, em uma ou duas frases, com o contexto que a pessoa precisa para decidir>
|
|
50
|
+
|
|
51
|
+
1. <opção técnica> (sugestão)
|
|
52
|
+
2. <opção técnica>
|
|
53
|
+
3. <opção técnica>
|
|
54
|
+
4. Gerar outras opções
|
|
55
|
+
5. Avançar sem responder
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
- **1 a 3:** respostas técnicas reais e distintas, com os efeitos relevantes (custo, risco, resultado) em poucas palavras. Marque com `(sugestão)` a que você recomenda, em regra a primeira.
|
|
59
|
+
- **4 · Gerar outras opções:** descarte as três e proponha três novas, diferentes das anteriores, no mesmo formato. Pode ser pedido mais de uma vez.
|
|
60
|
+
- **5 · Avançar sem responder:** a pessoa adia a decisão. Se houver sugestão, aplique-a e registre em `Suposições` do spec como default aceito. Se não houver default seguro (oferta, CTA, destino), registre o item como pendência na seção 8 e siga adiante; **o spec não passa para `Defined` com pendência aberta**.
|
|
61
|
+
- **Resposta livre:** a pessoa pode responder com um texto no lugar de um número. Trate-o como uma opção nova e confirme o entendimento em uma linha.
|
|
62
|
+
- **Sem pergunta aberta:** quando não houver opções técnicas plausíveis (por exemplo, o nome da oferta), faça a pergunta com opções de exemplo ou formatos de resposta, mantendo 4 e 5.
|
|
63
|
+
|
|
64
|
+
**Regras**
|
|
65
|
+
|
|
66
|
+
- Pergunte só o que muda o resultado: formato, mensagem, estilo, entrega (a duração do vídeo é livre e não é perguntada). Não repita o que já está no `CLAUDE.md` do cliente nem no `spec.md`, e não repita pergunta respondida.
|
|
67
|
+
- Ordene as perguntas pelo impacto: primeiro as que bloqueiam o trabalho seguinte (ordem dos takes, autorização de modelo), depois objetivo, oferta, público e CTA, depois estilo.
|
|
68
|
+
- Registre apenas respostas confirmadas. Nunca invente.
|
|
69
|
+
- Reavalie o spec depois de cada resposta; feche a entrevista quando as seções 1 a 7 estiverem preenchidas.
|
|
70
|
+
- Aprovações (de plano, de spec, de descarte) usam o mesmo formato: `1. Aprovar (sugestão)`, `2. Ajustar` e `3. Refazer`, mais 4 e 5.
|
|
71
|
+
- **Nunca peça permissão para iniciar uma etapa.** A skill começa assim que é acionada ou chamada por outra. Perguntas servem para decisões e para ações sensíveis, não para "posso começar?".
|
|
72
|
+
|
|
73
|
+
## Handoff entre skills
|
|
74
|
+
|
|
75
|
+
Anuncie `Transição automática: $origem → $destino — motivo — resultado esperado` e carregue a skill de destino sem pedir confirmação, inclusive para iniciar a entrevista. Ações sensíveis (apagar arquivos, sobrescrever render aprovado, publicar) exigem autorização específica.
|
|
76
|
+
|
|
77
|
+
## Regras de projeto
|
|
78
|
+
|
|
79
|
+
- Nunca edite `raw/`. Insumos novos entram em `assets/` do cliente.
|
|
80
|
+
- Renders finais vão para `clientes/<cliente>/output/` com o nome `<slug>-vN.mp4`. Não sobrescreva uma versão enviada ao cliente: gere `vN+1`.
|
|
81
|
+
- Toda mudança de arquivo de composição durante `In Progress` é registrada com `easyedit-log` (script `registrar.mjs`).
|
|
82
|
+
- Pergunte antes de baixar modelos grandes, instalar pacotes ou iniciar Docker.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# EasyEdit · Ferramentas de edição de vídeo
|
|
2
|
+
|
|
3
|
+
Referência das ferramentas usadas neste repositório. É o equivalente do `STACK.md` do Specsfy: as skills do EasyEdit leem este arquivo para saber **o que existe, para que serve e como invocar**.
|
|
4
|
+
|
|
5
|
+
Levantado com `npx hyperframes doctor` e `--help` de cada comando. Este arquivo é criado uma vez pelo `easyedit install` e não é sobrescrito no `update`: ajuste-o à sua máquina. Para ver o que está instalado agora, rode `easyedit doctor`.
|
|
6
|
+
|
|
7
|
+
**Sistemas:** macOS e Windows são suportados. No macOS o verificador de zonas seguras detecta rostos automaticamente (Vision); no Windows (e Linux) ele gera folhas de revisão visual e a camada declarada (`elementos.json`) continua exata.
|
|
8
|
+
|
|
9
|
+
## 1. Motor principal: HyperFrames
|
|
10
|
+
|
|
11
|
+
| Item | Valor |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| O que é | Framework open-source (Apache-2.0) da HeyGen que transforma HTML + CSS + animações em vídeo determinístico. Inspirado no Remotion, mas com HTML puro em vez de React. |
|
|
14
|
+
| Versão instalada | `hyperframes@0.8.141` (devDependency do repositório; chamar com `npx hyperframes …`) |
|
|
15
|
+
| Fontes | https://github.com/heygen-com/hyperframes · https://hyperframes.heygen.com (Quick start, Catalog) |
|
|
16
|
+
| Princípio | A composição é um `index.html`. O tempo é declarado com `data-*`; a animação precisa ser *seekable* (pausada e controlada por timeline). O renderizador posiciona cada frame no Chrome headless e o FFmpeg codifica. Mesma entrada produz os mesmos frames. |
|
|
17
|
+
| Atributos-chave | `data-composition-id`, `data-start`, `data-duration`, `data-track-index`, `class="clip"`. Timelines GSAP registradas em `window.__timelines`. |
|
|
18
|
+
| Pacotes internos | `core` (parser, linter, runtime, adapters) · `engine` (captura Puppeteer + FFmpeg) · `producer` (captura, encode, mix de áudio) · `studio` · `player` · `shader-transitions` · `aws-lambda` |
|
|
19
|
+
| Extras | Catálogo de blocos e componentes (~400: transições, overlays, legendas, gráficos, mapas) · `frame.md` (camada de design system para vídeo) · Studio (editor no navegador e app desktop) |
|
|
20
|
+
|
|
21
|
+
### Comandos da CLI (agrupados pelo uso no fluxo)
|
|
22
|
+
|
|
23
|
+
| Etapa | Comando | Função |
|
|
24
|
+
| --- | --- | --- |
|
|
25
|
+
| Criar | `init <nome>` | Cria o projeto. |
|
|
26
|
+
| Criar | `add <bloco>` · `catalog` | Instala ou busca blocos e componentes do registro. |
|
|
27
|
+
| Criar | `capture <url>` | Captura um site como material de vídeo. |
|
|
28
|
+
| Insumos | `transcribe <arquivo>` | Transcrição com timestamp por palavra. Também importa `.json`, `.srt` e `.vtt`, e exporta com `--to srt\|vtt`. |
|
|
29
|
+
| Insumos | `beats` | Detecta batidas da música e grava `beats/<áudio>.json`. |
|
|
30
|
+
| Insumos | `tts` | Gera fala local (Kokoro-82M). |
|
|
31
|
+
| Insumos | `remove-background` | Remove o fundo de vídeo ou imagem (saída transparente). |
|
|
32
|
+
| Insumos | `models install parakeet` | Baixa modelos on-device. |
|
|
33
|
+
| Insumos | `normalize-audio` | Iguala o loudness (LUFS) entre dois clipes. |
|
|
34
|
+
| Insumos | `media-treatment` | Aplica tratamentos determinísticos a um elemento de mídia. |
|
|
35
|
+
| Validar | `lint` | Erros comuns de composição. |
|
|
36
|
+
| Validar | `check` | Gate único: lint + validação de runtime + inspeção de layout. `validate`, `inspect` e `layout` são aliases antigos. |
|
|
37
|
+
| Validar | `snapshot` | PNGs de frames-chave. |
|
|
38
|
+
| Validar | `keyframes` | Diagnóstico de keyframes (onion-shot). |
|
|
39
|
+
| Validar | `compare` | Folha comparativa de variantes. |
|
|
40
|
+
| Validar | `grade-compare` | Compara color grades num frame. |
|
|
41
|
+
| Inspecionar | `info` · `compositions` · `timeline [--json]` | Metadados, lista de composições, trilhas e clipes. |
|
|
42
|
+
| Histórico | `history` | Lista, desfaz e restaura mudanças registradas. |
|
|
43
|
+
| Rever | `preview` | Studio com live reload. |
|
|
44
|
+
| Rever | `present` | Modo apresentação (decks). |
|
|
45
|
+
| Entregar | `render` | Veja a tabela abaixo. |
|
|
46
|
+
| Entregar | `publish` | Sobe para uma URL estável (privada por padrão). |
|
|
47
|
+
| Entregar | `cloud` · `lambda` · `cloudrun` | Render remoto: HeyGen Cloud, AWS Lambda e Google Cloud Run. |
|
|
48
|
+
| Ambiente | `doctor` · `browser` · `upgrade` · `skills` · `clean` · `benchmark` | Diagnóstico, gestão do Chrome, atualizações e limpeza. |
|
|
49
|
+
|
|
50
|
+
### `render`: opções que importam
|
|
51
|
+
|
|
52
|
+
| Opção | Efeito |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| `-o`, `--output` | Caminho de saída (padrão `renders/<nome>.mp4`). **No EasyEdit, o destino é `clientes/<cliente>/output/`.** |
|
|
55
|
+
| `-f`, `--fps` | 24, 25, 30, 50, 60 (e racionais como `30000/1001`). Padrão: o `data-fps` da raiz, senão 30. |
|
|
56
|
+
| `-q`, `--quality` | `draft` · `looks` (padrão, CRF 16) · `delivery` (alta). |
|
|
57
|
+
| `--format` | `mp4` (padrão) · `webm` e `mov` (com transparência) · `gif` · `png-sequence` · `hls`. |
|
|
58
|
+
| `-w`, `--workers` | Chromes paralelos. Cada um usa cerca de 256 MB de RAM. |
|
|
59
|
+
| `--docker` | Render determinístico em container. |
|
|
60
|
+
| `--strict`, `--strict-all` | Falha em erros de lint (ou também em avisos). |
|
|
61
|
+
| `--variables`, `--variables-file` | Injeta variáveis na composição (ótimo para lotes por cliente). |
|
|
62
|
+
| `-c`, `--composition` | Renderiza uma composição específica. |
|
|
63
|
+
| `--video-frame-format png` | Use em gravações de tela ou de UI sensíveis a cor. |
|
|
64
|
+
| `--crf`, `--video-bitrate`, `--gpu`, `--hdr`/`--sdr` | Ajuste fino de codificação. |
|
|
65
|
+
|
|
66
|
+
## 2. Skills HyperFrames instaladas (`~/.claude/skills`)
|
|
67
|
+
|
|
68
|
+
Instaladas globalmente. Atualizar com `npx hyperframes skills update`.
|
|
69
|
+
|
|
70
|
+
| Skill | Quando usar |
|
|
71
|
+
| --- | --- |
|
|
72
|
+
| `hyperframes` | **Porta de entrada obrigatória.** Roteia o pedido para o workflow certo e retoma o estado do projeto. |
|
|
73
|
+
| `hyperframes-core` | Contrato da composição: estrutura, `data-*`, trilhas, sub-composições, variáveis, regras de determinismo. Ler antes de escrever HTML. |
|
|
74
|
+
| `hyperframes-cli` | Loop de desenvolvimento e diagnóstico de falhas de build ou render. |
|
|
75
|
+
| `hyperframes-animation` | Regras de movimento, blueprints de cena, transições e os 7 adapters (GSAP padrão, Lottie, Three.js, Anime.js, CSS, WAAPI, TypeGPU). |
|
|
76
|
+
| `hyperframes-keyframes` | Punch-in, zoom, reframe, Ken Burns e câmera. |
|
|
77
|
+
| `hyperframes-creative` | Direção criativa: paletas, tipografia, narração, beats, `frame.md` e `design.md`. |
|
|
78
|
+
| `hyperframes-audio` | Mix de áudio: fade, ganho, ducking, EQ, compressor e reverb. |
|
|
79
|
+
| `hyperframes-registry` | Buscar e instalar blocos do catálogo **antes** de construir um efeito do zero. |
|
|
80
|
+
| `hyperframes-studio` | Trabalho no Studio: se o pedido exige mudança, plano e storyboard, layout da timeline e zonas seguras de legenda. |
|
|
81
|
+
| `media-use` | Resolve BGM, SFX, imagem, ícone, logo, voz e LUT para arquivo local com registro. Também faz TTS, transcrição, legendas e remoção de fundo. |
|
|
82
|
+
| `talking-head-recut` | Overlays gráficos (títulos, lower-thirds, citações, PiP) sobre talking-head, entrevista ou podcast. O vídeo-base não é alterado. |
|
|
83
|
+
|
|
84
|
+
Workflows que o roteador instala sob demanda, ainda não presentes na máquina: `/embedded-captions`, `/general-video`, `/motion-graphics`, `/faceless-explainer`, `/product-launch-video`, `/pr-to-video`, `/music-to-video`, `/slideshow`, `/remotion-to-hyperframes`.
|
|
85
|
+
|
|
86
|
+
## 3. Ferramentas de sistema
|
|
87
|
+
|
|
88
|
+
| Ferramenta | Versão / caminho | Papel no pipeline |
|
|
89
|
+
| --- | --- | --- |
|
|
90
|
+
| Node.js | ≥ 22 | Roda a CLI e os scripts. |
|
|
91
|
+
| FFmpeg / FFprobe | no `PATH` (macOS: `brew install ffmpeg` · Windows: `winget install Gyan.FFmpeg` ou `choco install ffmpeg`) | Codifica o vídeo, faz mux e mix de áudio, corte, conversão e extração de frames. O FFprobe lê metadados (duração, fps, codec, resolução) dos arquivos brutos. |
|
|
92
|
+
| Chrome headless-shell | baixado e gerenciado por `hyperframes browser` (cache do usuário) | Renderiza cada frame da composição. Gerenciado por `hyperframes browser`. |
|
|
93
|
+
| whisper.cpp (`whisper-cli`) | no `PATH` (macOS: `brew install whisper-cpp` · Windows: binário do release do whisper.cpp, ou use o Parakeet) | Transcrição local. Modelos: `tiny.en`, `base.en`, `small.en` (padrão), `medium.en`, `large-v3`. Os `.en` são só inglês; **para português use `-l pt` com `large-v3`** ou o Parakeet. |
|
|
94
|
+
| Parakeet (opcional) | `hyperframes models install parakeet` | Alternativa de ASR, mais rápida e precisa. Com `--engine auto` ela é preferida quando instalada e cobre o idioma. |
|
|
95
|
+
| GSAP | embutido via adapter | Biblioteca de animação em JavaScript: movimento, easing e timelines. Fica pausada e é controlada por seek. |
|
|
96
|
+
| Docker | opcional; só para `--docker` | Render determinístico opcional (`--docker`). |
|
|
97
|
+
| Kokoro TTS | **não instalado** (opcional) | Voz local. `pip install kokoro-onnx soundfile`. |
|
|
98
|
+
| MusicGen | **não instalado** (opcional) | Música local. `pip install transformers torch soundfile numpy`. |
|
|
99
|
+
| yt-dlp | não instalado | Não faz parte do fluxo atual. |
|
|
100
|
+
|
|
101
|
+
## 4. Convenções do repositório que o EasyEdit herda
|
|
102
|
+
|
|
103
|
+
- Clientes ficam em `clientes/<cliente>/` (kebab-case). Projetos de vídeo: `projects/AAAA-MM-<slug>/`.
|
|
104
|
+
- `raw/` é somente leitura. Renders finais vão para `output/`. Assets reutilizáveis ficam em `assets/`.
|
|
105
|
+
- Ciclo: `init` → insumos (`transcribe`, `beats` etc.) → `lint`/`check` → `snapshot`/`preview` → `render`.
|
|
106
|
+
|
|
107
|
+
## 5. Fontes consultadas
|
|
108
|
+
|
|
109
|
+
- https://github.com/heygen-com/hyperframes (README)
|
|
110
|
+
- https://hyperframes.heygen.com (landing)
|
|
111
|
+
- Saída local de `hyperframes --help`, `render --help`, `transcribe --help` e `doctor`
|
|
112
|
+
- Notícias de lançamento: https://www.noqta.tn/en/blog/heygen-hyperframes-html-to-mp4-ai-agent-video-2026 · https://themenonlab.blog/blog/heygen-hyperframes-video-as-code
|
|
113
|
+
- whisper.cpp: https://huggingface.co/datasets/echodict/whisper.cpp/blob/main/examples/cli/README.md
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# {{TITULO}}
|
|
2
|
+
|
|
3
|
+
| Campo | Valor |
|
|
4
|
+
| --- | --- |
|
|
5
|
+
| ID | VID-{{SLUG}} |
|
|
6
|
+
| Slug | {{SLUG}} |
|
|
7
|
+
| Cliente | {{CLIENTE}} |
|
|
8
|
+
| Vertical | {{VERTICAL}} |
|
|
9
|
+
| Status | Draft |
|
|
10
|
+
| Definition Gate | Pending |
|
|
11
|
+
| Delivery Gate | Pending |
|
|
12
|
+
| Criado em | {{DATA}} |
|
|
13
|
+
| Atualizado em | {{DATA}} |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Ato I · Especificação
|
|
18
|
+
|
|
19
|
+
## 1. Objetivo
|
|
20
|
+
|
|
21
|
+
- **Mensagem central:** <!-- o que o espectador deve entender ou sentir -->
|
|
22
|
+
- **Ator (público):** <!-- quem assiste -->
|
|
23
|
+
- **Resultado esperado:** <!-- ação ou percepção desejada -->
|
|
24
|
+
- **Tipo de vídeo:** <!-- legenda em vídeo existente · overlays em talking-head · motion graphic · explicativo · outro -->
|
|
25
|
+
|
|
26
|
+
## 2. Plataforma e formato
|
|
27
|
+
|
|
28
|
+
- **Plataformas:** <!-- Reels/TikTok/Shorts · YouTube · site -->
|
|
29
|
+
- **Resolução e proporção:** <!-- 1080x1920 (9:16) · 1920x1080 (16:9) · 1080x1080 -->
|
|
30
|
+
- **FPS:** <!-- 30 · 60 -->
|
|
31
|
+
- **Duração:** livre (sem meta ou limite); registre aqui a duração final depois do render.
|
|
32
|
+
|
|
33
|
+
## 3. Insumos
|
|
34
|
+
|
|
35
|
+
| Insumo | Caminho | Observação |
|
|
36
|
+
| --- | --- | --- |
|
|
37
|
+
| Gravações (takes) | `../../raw/{{SLUG}}/` | Várias gravações do mesmo criativo; ordem definida por `easyedit-takes`. |
|
|
38
|
+
| Imagens e b-roll | `../../assets/…` | |
|
|
39
|
+
| Música | `../../assets/music/…` | |
|
|
40
|
+
| Fontes e marca | `../../assets/fonts/`, `../../assets/brand/` | |
|
|
41
|
+
|
|
42
|
+
Takes (preenchido por `easyedit-takes`):
|
|
43
|
+
|
|
44
|
+
| Ordem | Arquivo | Duração | Uso |
|
|
45
|
+
| --- | --- | --- | --- |
|
|
46
|
+
|
|
47
|
+
## 4. Estrutura e roteiro
|
|
48
|
+
|
|
49
|
+
| Cena | Tempo | Conteúdo (fala/texto) | Visual |
|
|
50
|
+
| --- | --- | --- | --- |
|
|
51
|
+
| 1 | 0:00–0:03 | | |
|
|
52
|
+
|
|
53
|
+
## 5. Estilo
|
|
54
|
+
|
|
55
|
+
- **Marca:** <!-- cores, logo, tom (ver CLAUDE.md do cliente) -->
|
|
56
|
+
- **Legendas:** <!-- estilo, posição, destaque de palavras, idioma -->
|
|
57
|
+
- **Motion:** <!-- ritmo, transições, intensidade -->
|
|
58
|
+
- **Áudio:** <!-- música, volume, ducking sobre a voz, SFX -->
|
|
59
|
+
|
|
60
|
+
## 6. Requisitos de vídeo
|
|
61
|
+
|
|
62
|
+
| ID | Requisito (verificável) | Prioridade |
|
|
63
|
+
| --- | --- | --- |
|
|
64
|
+
| RV-001 | | Must |
|
|
65
|
+
|
|
66
|
+
## 7. Critérios de aceite
|
|
67
|
+
|
|
68
|
+
| ID | Cobre | Critério (Given/When/Then ou checagem observável) |
|
|
69
|
+
| --- | --- | --- |
|
|
70
|
+
| AC-001 | RV-001 | |
|
|
71
|
+
|
|
72
|
+
## 8. Fora de escopo e suposições
|
|
73
|
+
|
|
74
|
+
- **Fora de escopo:**
|
|
75
|
+
- **Suposições** (defaults reversíveis aceitos na entrevista):
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
# Ato II · Implementação
|
|
80
|
+
|
|
81
|
+
## 9. Plano técnico
|
|
82
|
+
|
|
83
|
+
- **Workflow HyperFrames:** <!-- /embedded-captions · /talking-head-recut · /general-video · /motion-graphics … -->
|
|
84
|
+
- **Skills e ferramentas:** <!-- ver .easyedit/TOOLS.md -->
|
|
85
|
+
- **Pasta do projeto:** `.`
|
|
86
|
+
- **Comando de render:** <!-- npx hyperframes render -o ../../output/{{SLUG}}-v1.mp4 -f 30 -q delivery -->
|
|
87
|
+
|
|
88
|
+
## 10. Tarefas
|
|
89
|
+
|
|
90
|
+
| ID | Tarefa | Entrega | Status |
|
|
91
|
+
| --- | --- | --- | --- |
|
|
92
|
+
| T-001 | | RV-001 | Pending |
|
|
93
|
+
|
|
94
|
+
Status das tarefas: `Pending` · `Doing` · `Done` · `Dropped`.
|
|
95
|
+
|
|
96
|
+
## 11. Evidências
|
|
97
|
+
|
|
98
|
+
| Etapa | Comando | Resultado | Data |
|
|
99
|
+
| --- | --- | --- | --- |
|
|
100
|
+
| lint/check | `npx hyperframes check` | | |
|
|
101
|
+
| snapshot | `npx hyperframes snapshot` | | |
|
|
102
|
+
| render | `npx hyperframes render …` | | |
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
# Ato III · Registro
|
|
107
|
+
|
|
108
|
+
## 12. Registro de mudanças
|
|
109
|
+
|
|
110
|
+
Tipos: `adicionado` · `ajustado` · `alterado` · `removido`. Origem: `interno` · `cliente`.
|
|
111
|
+
|
|
112
|
+
<!-- easyedit:changes -->
|
|
113
|
+
| ID | Data | Tipo | O que mudou | Motivo | Origem | Afeta |
|
|
114
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
115
|
+
<!-- /easyedit:changes -->
|
|
116
|
+
|
|
117
|
+
## 13. Feedbacks
|
|
118
|
+
|
|
119
|
+
| ID | Data | Quem | Feedback | Resolvido em |
|
|
120
|
+
| --- | --- | --- | --- | --- |
|
|
121
|
+
|
|
122
|
+
## 14. Entrega
|
|
123
|
+
|
|
124
|
+
| Versão | Arquivo | Data | Enviado a | Status |
|
|
125
|
+
| --- | --- | --- | --- | --- |
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
## EasyEdit (especificação e acompanhamento por vídeo)
|
|
2
|
+
Cada vídeo tem um `projects/<AAAA-MM-slug>/spec.md` (fonte única: especificado → implementado → alterado). Contrato em `.easyedit/Spec.md`, ferramentas em `.easyedit/TOOLS.md`, skills em `.claude/skills/easyedit-*`.
|
|
3
|
+
Gravações do vídeo: `clientes/<cliente>/raw/<AAAA-MM-slug>/` (vários arquivos; `/easyedit-takes` ordena e junta). Verticais: `trafego-meta` (`/easyedit-vertical-trafego`); `reels` pendente. Apoio: `/easyedit-ritmo`, `/easyedit-destaques`, `/easyedit-split-broll`, `/easyedit-legendas`, `/easyedit-zonas-seguras`.
|
|
4
|
+
Fluxo: `/easyedit-novo` → `/easyedit-interviewer` (Draft→Defined) → `/easyedit-build` (In Progress→Review→Completed). Mudanças: `/easyedit-log`. Panorama: `/easyedit-progress`.
|
|
5
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: easyedit-build
|
|
3
|
+
description: "Use quando o spec.md do vídeo está Defined (ou In Progress) e o usuário pede para montar, editar, ajustar, corrigir ou renderizar o vídeo. Planeja o Ato II, executa com as skills e a CLI do HyperFrames, valida, renderiza para output/ e mantém tarefas, evidências e registro de mudanças. Sem spec Defined, use easyedit-interviewer."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Montar e renderizar o vídeo
|
|
7
|
+
|
|
8
|
+
## Preparação obrigatória
|
|
9
|
+
|
|
10
|
+
Antes de executar esta skill, carregue `$easyedit-setup`. Confirme que o `spec.md` está em `Defined`, `In Progress` ou `Review` (ajuste pedido pelo cliente). Se estiver em `Draft`, anuncie `Transição automática: $easyedit-build → $easyedit-interviewer` e retome depois.
|
|
11
|
+
|
|
12
|
+
## Modo de interação
|
|
13
|
+
|
|
14
|
+
Modo de interação: `sem perguntas`. Dúvida que muda o resultado volta para `$easyedit-interviewer`. Perguntas só para ações sensíveis (instalar pacote, baixar modelo, iniciar Docker, sobrescrever render).
|
|
15
|
+
|
|
16
|
+
## Planejar (Ato II)
|
|
17
|
+
|
|
18
|
+
1. Escolha o workflow HyperFrames pela seção 1 do spec: legendas em vídeo existente → `/embedded-captions`; overlays em talking-head → `/talking-head-recut`; motion curto → `/motion-graphics`; demais → `/general-video`. Em caso de dúvida, comece por `/hyperframes`, que roteia. Registre a escolha na seção 9.
|
|
19
|
+
2. Quebre o trabalho em tarefas `T-001…` na seção 10, cada uma apontando os `RV` que entrega.
|
|
20
|
+
3. Marque `Status: In Progress`:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
node .claude/skills/easyedit-log/scripts/campo.mjs <spec.md> Status "In Progress"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Executar
|
|
27
|
+
|
|
28
|
+
Se `Vertical` for `trafego-meta`, siga a ordem de trabalho de `$easyedit-vertical-trafego` (takes → ritmo → destaques → tela dividida e legendas → áudio → zonas seguras → render por variante). Com mais de um arquivo em `raw/<slug>/`, comece sempre por `$easyedit-takes`, depois `$easyedit-ritmo`, antes de qualquer legenda ou destaque, porque eles dependem da linha do tempo final.
|
|
29
|
+
|
|
30
|
+
Carregue as skills conforme a necessidade; os papéis estão em `.easyedit/TOOLS.md`:
|
|
31
|
+
|
|
32
|
+
| Necessidade | Skill ou comando |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| Estrutura da composição, `data-*`, trilhas | `/hyperframes-core` |
|
|
35
|
+
| Transcrição, legendas, TTS, BGM, SFX, logo | `/media-use`, `npx hyperframes transcribe` |
|
|
36
|
+
| Movimento, transições | `/hyperframes-animation`, `/hyperframes-keyframes` |
|
|
37
|
+
| Efeito nomeado (glitch, grain, gráfico) | `/hyperframes-registry` **antes** de construir à mão |
|
|
38
|
+
| Paleta, tipografia, `frame.md` | `/hyperframes-creative` |
|
|
39
|
+
| Mix de áudio | `/hyperframes-audio` |
|
|
40
|
+
| Loop de CLI e falhas | `/hyperframes-cli` |
|
|
41
|
+
| Várias gravações de um mesmo vídeo | `$easyedit-takes` |
|
|
42
|
+
| Pausas e respiros | `$easyedit-ritmo` |
|
|
43
|
+
| Palavras-chave e inserções | `$easyedit-destaques` |
|
|
44
|
+
| Tela dividida com b-roll | `$easyedit-split-broll` |
|
|
45
|
+
| Legendas de vertical | `$easyedit-legendas` |
|
|
46
|
+
| Zonas cinzentas da Meta | `$easyedit-zonas-seguras` |
|
|
47
|
+
|
|
48
|
+
Durante o trabalho:
|
|
49
|
+
- Leia a marca em `clientes/<cliente>/CLAUDE.md` e aplique-a. Faça referência a `assets/` por caminho relativo.
|
|
50
|
+
- Marque cada tarefa `Doing` → `Done` na seção 10 ao concluir.
|
|
51
|
+
- Cada mudança de escopo ou de execução (adicionar cena, trocar música, remover trecho, ajustar timing) gera um registro com `$easyedit-log`.
|
|
52
|
+
|
|
53
|
+
## Validar e renderizar
|
|
54
|
+
|
|
55
|
+
1. `npx hyperframes check` (lint, runtime e layout). Corrija até passar.
|
|
56
|
+
2. Em vídeo 9:16 de vertical (tráfego/Reels), rode as três verificações de `$easyedit-zonas-seguras` (inclui `verificar_zonas.mjs` num render `-q draft`) e corrija até **0 erros**. Sem detecção automática (Windows/Linux), o gate inclui a **revisão visual das folhas** que o verificador gera, com o resultado registrado em Evidências.
|
|
57
|
+
3. `npx hyperframes snapshot` e confira os frames-chave contra os `AC`. Veja os PNGs antes de declarar pronto.
|
|
58
|
+
4. Renderize para a saída do cliente, sem sobrescrever versões anteriores:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npx hyperframes render -o ../../output/<slug>-vN.mp4 -f <fps> -q delivery
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
5. Confira o arquivo com `ffprobe` (resolução e fps) contra a seção 2 e registre a duração final; a duração não tem limite nem meta.
|
|
65
|
+
6. Rode `verificar_zonas.mjs` também sobre o render final (`delivery`) quando for vertical, e confirme 0 erros (e a revisão visual das folhas, em Windows/Linux).
|
|
66
|
+
7. Registre as evidências na seção 11 (comando, resultado, data) e a versão na seção 14.
|
|
67
|
+
8. Marque `Status: Review` e `Delivery Gate: Pending`. Informe o caminho do render e quais `AC` foram verificados, e quais não puderam ser.
|
|
68
|
+
|
|
69
|
+
## Feedback e fechamento
|
|
70
|
+
|
|
71
|
+
- Feedback do cliente: registre em 13 (`FB-xxx`), crie as mudanças correspondentes com `$easyedit-log` e gere `vN+1`. Volte `Status` para `In Progress` e depois para `Review`.
|
|
72
|
+
- Aprovação do cliente: `Delivery Gate: Passed`, `Status: Completed`. Acrescente o aprendizado reutilizável ao `CLAUDE.md` do cliente (regras, preferências, histórico).
|
|
73
|
+
|
|
74
|
+
## Limites
|
|
75
|
+
|
|
76
|
+
- Nunca edite `raw/`. Nunca apague um render já enviado.
|
|
77
|
+
- Não declare `Completed` sem aprovação do cliente informada pelo usuário.
|
|
78
|
+
- Não diga que um `AC` passou sem ter visto a evidência.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: easyedit-destaques
|
|
3
|
+
description: "Use para analisar a transcrição e o tema do vídeo e decidir em quais palavras ou frases marcantes inserir um reforço visual: imagem, vídeo curto em tela cheia, legenda especial, ícone, zoom ou SFX. Produz um plano de destaques para aprovação antes de montar. Não monta a composição; execução fica com easyedit-build."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Planejar destaques sobre a fala
|
|
7
|
+
|
|
8
|
+
## Preparação obrigatória
|
|
9
|
+
|
|
10
|
+
Antes de executar esta skill, carregue `$easyedit-setup`. Use a transcrição já remapeada pelo `$easyedit-ritmo` (`transcript.cut.json`) quando houver corte; senão `transcript.json`.
|
|
11
|
+
|
|
12
|
+
## Modo de interação
|
|
13
|
+
|
|
14
|
+
Modo de interação: `perguntas`, uma única pergunta de aprovação do plano, no formato do `Contrato de perguntas (uma por vez)` de `.easyedit/Spec.md`: 1. Aprovar (sugestão), 2. Ajustar itens, 3. Refazer o plano, 4. Gerar outras abordagens, 5. Avançar sem aprovar (aplica o plano como rascunho).
|
|
15
|
+
|
|
16
|
+
## Passos
|
|
17
|
+
|
|
18
|
+
1. Leia a transcrição inteira, o tema (seção 1 do spec), a marca do cliente e o inventário de `assets/broll/`, `assets/images/`.
|
|
19
|
+
2. Identifique as **palavras-âncora**: aquelas que carregam o argumento ou o gancho. Procure:
|
|
20
|
+
- números, preços, prazos e porcentagens;
|
|
21
|
+
- benefício principal, dor, objeção e prova ("garantia", "sem mensalidade", "aprovados");
|
|
22
|
+
- nome do produto, do cliente ou do lugar;
|
|
23
|
+
- verbos de ação e CTA ("matricule", "clique", "garanta");
|
|
24
|
+
- palavras de contraste ou virada ("mas", "só que", "na verdade").
|
|
25
|
+
3. Para cada âncora escolha **uma** ação e justifique em poucas palavras:
|
|
26
|
+
|
|
27
|
+
| Ação | Quando |
|
|
28
|
+
| --- | --- |
|
|
29
|
+
| Imagem (pop-in) | Substantivo concreto: lugar, objeto, pessoa. |
|
|
30
|
+
| Vídeo curto em tela cheia (0,8–2 s) | Cena ou prova que ilustra a frase inteira. |
|
|
31
|
+
| Legenda especial | Número, preço, palavra de impacto: maior, cor da marca, animação própria. |
|
|
32
|
+
| Ícone | Conceito abstrato ou lista (check, cifrão, relógio, escudo). |
|
|
33
|
+
| Zoom / punch-in | Ênfase na fala sem ilustração disponível (`/hyperframes-keyframes`). |
|
|
34
|
+
| SFX | Acompanha a ação de maior impacto, nunca todas. |
|
|
35
|
+
|
|
36
|
+
4. Respeite o **teto de densidade** da vertical (tráfego: um destaque a cada 2–4 s; Reels: a cada 3–5 s) e evite ações iguais seguidas. A primeira ação deve cair nos primeiros 3 s (gancho).
|
|
37
|
+
5. Procure o material em `assets/` primeiro; se faltar, liste o que precisa ser pedido ao cliente ou gerado com `/media-use`. Não use logo ou imagem de terceiros sem origem.
|
|
38
|
+
6. Apresente o plano em tabela, com tempos da linha do tempo final:
|
|
39
|
+
|
|
40
|
+
| # | Tempo | Palavra/frase | Ação | Material | Motivo |
|
|
41
|
+
| --- | --- | --- | --- | --- | --- |
|
|
42
|
+
|
|
43
|
+
Grave o plano no spec (seção 4, coluna Visual, e tarefas na seção 10) e em `destaques.json` na pasta do projeto. Peça aprovação ou ajustes; cada ajuste vira entrada do `$easyedit-log`.
|
|
44
|
+
|
|
45
|
+
## Limites
|
|
46
|
+
|
|
47
|
+
- Todo elemento visual (imagem, ícone, legenda especial, rosto em vídeo curto) obedece às zonas de `$easyedit-zonas-seguras` e entra em `elementos.json`.
|
|
48
|
+
- Não invente afirmações: o destaque reforça o que foi dito, nunca acrescenta promessa.
|
|
49
|
+
- Imagem ou vídeo ainda inexistente não entra no plano como "pronto".
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: easyedit-interviewer
|
|
3
|
+
description: "Use quando um vídeo precisa de entrevista para definir como deve ser: objetivo, público, formato, insumos, roteiro, estilo, requisitos e critérios de aceite; ou quando o cliente pedir uma mudança no escopo depois da definição. Preenche o Ato I do spec.md com respostas confirmadas e promove Draft para Defined. Não executa edição de vídeo nem renderiza; para isso use easyedit-build."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Entrevistar para especificar o vídeo
|
|
7
|
+
|
|
8
|
+
## Preparação obrigatória
|
|
9
|
+
|
|
10
|
+
Antes de executar esta skill, carregue `$easyedit-setup`. Não prossiga se o vídeo não tiver `spec.md`; nesse caso use `$easyedit-novo`.
|
|
11
|
+
|
|
12
|
+
## Modo de interação
|
|
13
|
+
|
|
14
|
+
Modo de interação: `perguntas`. Aplique o `Contrato de perguntas (uma por vez)` de `.easyedit/Spec.md`: uma pergunta por vez, em múltipla escolha de 1 a 5 (1–3 opções técnicas, 4 gerar outras opções, 5 avançar sem responder).
|
|
15
|
+
|
|
16
|
+
**Inicie a entrevista imediatamente** ao ser acionada, sem perguntar se pode começar.
|
|
17
|
+
|
|
18
|
+
## Conduzir a entrevista
|
|
19
|
+
|
|
20
|
+
1. Leia o spec e o `CLAUDE.md` do cliente. Tudo que já estiver respondido ali deve ser reaproveitado, nunca perguntado de novo.
|
|
21
|
+
2. Se o campo `Vertical` for `trafego-meta`, anuncie `Transição automática: $easyedit-interviewer → $easyedit-vertical-trafego` para aplicar as perguntas e os padrões da vertical, e retome aqui. Se houver gravações em `raw/<slug>/` e ainda não existir `takes.json`, carregue `$easyedit-takes` para inventariar e entender a sequência, e use isso na seção 4.
|
|
22
|
+
3. Siga as seções do Ato I, escolhendo a **única** lacuna que mais muda o resultado e fazendo uma pergunta por vez. Temas por seção:
|
|
23
|
+
|
|
24
|
+
| Seção | Perguntas típicas |
|
|
25
|
+
| --- | --- |
|
|
26
|
+
| 1 Objetivo | Qual a mensagem? Quem assiste? O que a pessoa deve fazer depois? É legenda em vídeo existente, overlays, motion ou vídeo novo? |
|
|
27
|
+
| 2 Formato | Plataforma, proporção e fps. Não pergunte meta de duração: ela é livre; só registre a duração final. |
|
|
28
|
+
| 3 Insumos | Qual vídeo bruto em `raw/`? Há b-roll, música, logo e fontes em `assets/`? O que falta pedir ao cliente? |
|
|
29
|
+
| 4 Roteiro | Cenas e tempos; o que é fala e o que é texto na tela. |
|
|
30
|
+
| 5 Estilo | Legenda (estilo, posição, destaque), ritmo do motion, música e volume. |
|
|
31
|
+
| 6–7 | Derive `RV` verificáveis e `AC` a partir das respostas; confirme com a pessoa. |
|
|
32
|
+
|
|
33
|
+
4. Depois de cada resposta, grave **só o que foi confirmado** na seção correspondente. Registre defaults aceitos em `Suposições`.
|
|
34
|
+
5. Verifique ferramentas: se algo pedido exigir uma capacidade ausente (por exemplo voz TTS, música gerada ou Docker), diga isso consultando `.easyedit/TOOLS.md` e ofereça alternativa.
|
|
35
|
+
6. Quando as seções 1 a 8 estiverem preenchidas, sem placeholders, e cada `RV` tiver pelo menos um `AC`, mostre um resumo e peça a aprovação explícita.
|
|
36
|
+
7. Com a aprovação:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
node .claude/skills/easyedit-log/scripts/campo.mjs <spec.md> "Definition Gate" Passed
|
|
40
|
+
node .claude/skills/easyedit-log/scripts/campo.mjs <spec.md> Status Defined
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Anuncie `Transição automática: $easyedit-interviewer → $easyedit-build — motivo: spec Defined — resultado esperado: Ato II planejado e executado`.
|
|
44
|
+
|
|
45
|
+
## Mudança de escopo depois de `Defined`
|
|
46
|
+
|
|
47
|
+
Edite o Ato I, volte `Definition Gate` para `Pending`, registre a mudança com `$easyedit-log` (origem `cliente` ou `interno`) e repita o fechamento. Mudança que só afeta a execução (ajuste fino de timing, por exemplo) não reabre o gate: use apenas `$easyedit-log`.
|
|
48
|
+
|
|
49
|
+
## Limites
|
|
50
|
+
|
|
51
|
+
- Não invente respostas, métricas de marca ou textos do cliente.
|
|
52
|
+
- Não edite o Ato II nem render aqui.
|
|
53
|
+
- Não pergunte duas vezes a mesma coisa e não envie mais de uma pergunta por mensagem.
|
|
54
|
+
- Não peça permissão para começar nem para chamar outra skill.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: easyedit-legendas
|
|
3
|
+
description: "Use para criar legendas palavra a palavra com destaque em vídeo vertical para Reels ou anúncio da Meta, com estilo definido pela vertical e posição dentro da área útil. Parte da transcrição com timestamps. Para legenda simples sem estilo de vertical, o workflow /embedded-captions do HyperFrames também serve; para ícones/imagens sobre palavras use easyedit-destaques."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Legendas para vertical
|
|
7
|
+
|
|
8
|
+
## Preparação obrigatória
|
|
9
|
+
|
|
10
|
+
Antes de executar esta skill, carregue `$easyedit-setup` e `$easyedit-zonas-seguras`.
|
|
11
|
+
|
|
12
|
+
## Modo de interação
|
|
13
|
+
|
|
14
|
+
Modo de interação: `sem perguntas`. O estilo vem da seção 5 do spec e do `CLAUDE.md` do cliente.
|
|
15
|
+
|
|
16
|
+
## Passos
|
|
17
|
+
|
|
18
|
+
1. Use `transcript.cut.json` (após `$easyedit-ritmo`) ou `transcript.json`. Corrija erros de transcrição óbvios (nomes próprios, marca) com a pessoa, nunca por suposição.
|
|
19
|
+
2. Agrupe em blocos de 2–4 palavras, quebrando em pausas e fim de frase. Idioma e acentuação como na fala.
|
|
20
|
+
3. Posicione o bloco na **área útil**, no terço inferior dela (y ≈ 900–1200 px), centralizado, com largura máxima menor que a área útil em x. Nada pode entrar no rodapé de 35%.
|
|
21
|
+
4. Estilo base: fonte da marca em `assets/fonts/` (ex.: Poppins 700), caixa alta opcional, contorno ou fundo com contraste de pelo menos 4,5:1, palavra atual em cor de destaque da marca.
|
|
22
|
+
5. A **legenda especial** das âncoras de `$easyedit-destaques` (números, preço, palavra de impacto) usa tamanho maior, cor própria e entrada animada; é exceção, não regra.
|
|
23
|
+
6. Valide com `$easyedit-zonas-seguras` (registre a faixa da legenda em `elementos.json`) e `npx hyperframes check`; registre com `$easyedit-log`.
|
|
24
|
+
|
|
25
|
+
## Limites
|
|
26
|
+
|
|
27
|
+
- Legenda nunca cobre rosto, produto ou o CTA.
|
|
28
|
+
- Não use mais de duas linhas por bloco.
|