Communitygithub.com

EvoFlow – Produto para Lançamento em Vídeo (HyperFrames)

Transforme uma URL de produto ou marketing, script colado ou briefing em um vídeo de lançamento de produto, incluindo promoções SaaS, revelações de funcionalidades, lançamentos de aplicativos, promos corporativos e vídeos de marketing de produto.

O que é EvoFlow – Produto para Lançamento em Vídeo (HyperFrames)?

A habilidade EvoFlow (para plataformas como Claude Code, Cursor e Codex) converte entradas como URLs de produtos, scripts ou briefings em vídeos de lançamento totalmente produzidos, seguindo uma arquitetura quadro-a-quadro baseada em blueprints de ouro. Ela é ideal para profissionais de marketing e desenvolvedores que precisam criar vídeos promocionais de forma rápida e consistente, sem edição manual. A habilidade gerencia todo o fluxo de trabalho: captura de ativos, definição de sistema de design, storyboard, roteiro, síntese de áudio (narração e música), design visual com sequências de cena codificadas por tempo, construção de quadros em HTML e renderização final do MP4. Ela se integra à biblioteca de mídia do HeyGen para BGM/SFX e imagens, e utiliza agentes subordinados para construir cada quadro em paralelo. O processo é rigidamente controlado por portões de aprovação do usuário e validações automáticas, garantindo que o vídeo resultante siga as diretrizes de estilo e timing definidas.

Funciona com~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/EvovexAI/EvoFlow/tree/HEAD/skills/public/product-launch-video

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

media-use: Antes de obter áudio/imagens, chame /media-use para resolver BGM/SFX/imagens do catálogo do HeyGen. Execute --adopt primeiro para registrar ativos existentes. Veja /media-use para detalhes.

Lançamento de Produto para HyperFrames

Use esta skill para capturar um produto, entender sua marca, planejar um vídeo de lançamento e construí-lo quadro a quadro no HyperFrames.

Confirme a rota antes do Passo 0. Você é o orquestrador. Execute cada passo, verifique seu portão e só então continue para o próximo passo. Esta skill é para um produto sendo comercializado, lançado, promovido ou revelado, incluindo solicitações como "promo para nosso site" quando o propósito é promocional. Roteie outras intenções para outro lugar: uma tour geral de site sem lançamento -> /general-video; um explicador de tópico sem produto -> /faceless-explainer; um PR do GitHub -> /pr-to-video; legendas em filmagens existentes -> /embedded-captions; um motion graphics curto sem narração -> /motion-graphics. Se o usuário disser apenas "crie um vídeo" ou a rota for incerta, leia /hyperframes primeiro.

Você é o orquestrador. Trabalhe em videos/<projeto>/. Execute os passos em ordem e passe cada portão antes de continuar. Os passos com portão de usuário são Passo 0, Passo 3 e Passo 6. Faça cada passo você mesmo, exceto o Passo 5, onde você despacha um sub-agente por quadro. Não coloque regras de design ou movimento aqui; elas residem no sub-agente frame-worker, nas regras e blueprints locais (../hyperframes-animation/rules/ + ../hyperframes-animation/blueprints/) e no hyperframes-creative.

Fluxo de trabalho: Passo 0 setup -> hyperframes.json; Passo 1 captura -> capture/; Passo 2 sistema de design -> frame.md; Passo 3 storyboard/roteiro -> STORYBOARD.md e SCRIPT.md; Passo 3.1 áudio -> audio_meta.json; Passo 4 design visual -> STORYBOARD.md enriquecido; Passo 5 quadros -> compositions/frames/NN-*.html e index.html; Passo 6 renderização final -> renders/video.mp4.


Passo 0: Configuração e Briefing

Objetivo: Definir o briefing central do vídeo e criar o projeto HyperFrames, se necessário.

Inicialize apenas se hyperframes.json estiver faltando. Nomeie <projeto> a partir da marca ou domínio em kebab-case, como acme-promo; nunca use nome do workspace ou timestamp.

npx hyperframes init "videos/<projeto>" --non-interactive --example=blank — init verifica as skills instaladas em relação às mais recentes no GitHub e atualiza o conjunto global se alguma estiver desatualizada.

Mostre o status de login antes do briefing — execute npx hyperframes auth status e transmita sua saída literalmente (não parafraseie ou reescreva). Ele informa se a voz/BGM usará HeyGen ou mecanismos locais e, quando não estiver logado, como fazer login. Se não estiver logado, PARE e aguarde a escolha do usuário — fazer login, ou dizer "vá"/"offline" para continuar com mecanismos locais — antes de perguntar o briefing ou qualquer outra coisa. Trate como um ponto de decisão real, não uma nota passageira; não coloque a escolha na pergunta do briefing, e não escreva chaves em um .env por repositório. (No modo autônomo, anote o status e continue offline.) Veja ../hyperframes-media → Pré-voo para a orientação canônica.

Portão: hyperframes.json existe, e ângulo, duração, proporção de tela e idioma estão definidos; o status de login foi mostrado (logado, ou continuando offline).


Passo 1: Capturar ativos

Objetivo: Coletar o material de origem, sinais da marca e ativos utilizáveis para o vídeo.

Classifique a entrada e escolha o caminho. URL explícita -> capture-a e use o site para narração e ativos. Script/briefing colado -> salve literalmente como user_script.txt, pergunte uma vez "usar literalmente ou reestruturar?", armazene a resposta como VO_MODE, depois resolva o alvo da captura: URL no texto -> use-a; apenas nome da marca -> WebSearch, confirme a URL em uma linha, depois rastreie; sem URL/site -> caminho sem captura.

Execute a captura com: npx hyperframes capture "<URL>" -o ./capture

Se GEMINI_API_KEY, GOOGLE_API_KEY ou uma chave OpenRouter existir, a captura legenda automaticamente os ativos em capture/extracted/asset-descriptions.md. Isso não é um portão de revisão. Sem uma chave de visão, use o contexto DOM e continue.

Caminho sem captura: crie capture/extracted/tokens.json, capture/extracted/visible-text.txt, capture/extracted/asset-descriptions.md e capture/assets/ manualmente. tokens.json deve ser { "title": "", "description": "", "colors": [], "fonts": [] }; preencha título/descrição a partir do briefing quando possível. visible-text.txt contém o briefing ou script completo. asset-descriptions.md deve dizer que nenhum ativo foi capturado, a menos que o usuário tenha dado notas sobre ativos.

Portão: capture/extracted/tokens.json, capture/extracted/visible-text.txt, capture/extracted/asset-descriptions.md e capture/assets/ existem; você pode declarar a marca em uma frase clara. Trate asset-descriptions.md como o inventário principal de ativos. Se ele estiver faltando após uma captura real, pare e reporte a captura incompleta. Se capture/BLOCKED.md existir, siga-o.


Passo 2: Sistema de Design

Objetivo: Escolher um preset de quadro fornecido; um script o transforma no frame.md deste vídeo + skin de legenda.

Você faz a única chamada de julgamento — qual preset. Leia ../hyperframes-creative/references/design-spec.md e escolha o preset cuja aparência melhor se adapte à marca e ao briefing. Depois execute:

node <SKILL_DIR>/scripts/build-frame.mjs --preset <nome> --hyperframes .

O script faz o resto deterministicamente: copia o FRAME.md do preset → frame.md e remixa com os tokens da marca em capture/extracted/tokens.json (cores da marca mapeadas nas chaves de cor do preset por função — tinta, tela, acentos — mantendo chaves/estrutura/componentes; as fontes de exibição + corpo do preset substituídas pelas da marca), copia a skin de legenda do preset para .hyperframes/caption-skin.html e auto-valida (sai com 1 em mapeamento quebrado). Prossiga para o próximo passo assim que ele sair com 0 — sem edição manual da especificação.

tokens.json sem cores/fontes da marca (ex.: sem captura) → o script mantém a paleta do preset, um design completo e enviável. Se o briefing nomear cores/fontes da marca que a captura perdeu, adicione-as a capture/extracted/tokens.json antes de executar (ou use o design.md do usuário para preenchê-lo); só ajuste frame.md manualmente depois se um mapeamento realmente precisar.

Portão: build-frame.mjs saiu com 0 — frame.md existe a partir de um preset nomeado, e (quando o preset fornece um) .hyperframes/caption-skin.html existe como a fonte da skin de legenda.


Passo 3: Storyboard e Roteiro

Objetivo: Transformar o briefing e o material capturado em um plano de história quadro a quadro aprovado.

Leia references/story-design.md, ../hyperframes-animation/blueprints-index.md, ../hyperframes-core/references/storyboard-format.md e ../hyperframes-core/references/script-format.md. Use-os para escrever STORYBOARD.md e, quando a narração for necessária, SCRIPT.md.

Use story-design.md para o blueprint da história, gancho, lógica de persuasão, batidas, VO_MODE e escolhas de ativos. Como um guia suave, consulte o menu de papel→blueprint em ../hyperframes-animation/blueprints-index.md: para cada batida, anote um id de blueprint candidato quando um se encaixar. A verdade da história ainda decide quais batidas existem — nunca force uma batida a se encaixar em um blueprint, e nunca invente uma batida apenas porque uma forma comprovada está disponível. Escolha os asset_candidates de cada quadro visual de capture/extracted/asset-descriptions.md (o inventário canônico) — não navegue pelos capture/assets/ brutos. Não peça ao usuário para escolher ativos a menos que esse inventário esteja faltando ou inutilizável. Use os campos exatos exigidos das referências de storyboard e roteiro.

Após o rascunho, mostre um resumo quadro a quadro. Nessa mesma mensagem, pergunte duas coisas ao usuário: (a) aprovar ou solicitar alterações, e (b) se ele deseja uma prévia ao vivo do esqueleto do storyboard (npx hyperframes preview) — abra-a apenas se a resposta for sim. Itere até a aprovação e leve a escolha de prévia para o Passo 6.

Portão: STORYBOARD.md existe, cada quadro visual tem asset_candidates, SCRIPT.md existe quando a narração é necessária, e o usuário aprovou o plano quadro a quadro.


Passo 3.1: Áudio

Objetivo: Gerar narração, tempos de palavras, música e metadados de áudio a partir do roteiro aprovado.

Inicie o áudio após a aprovação do Passo 3. Execute-o em segundo plano e depois continue para o Passo 4.

node <SKILL_DIR>/scripts/audio.mjs --script ./SCRIPT.md --storyboard ./STORYBOARD.md --hyperframes . --out ./audio_meta.json &

O script de áudio lida com narração, tempos de palavras, consulta de BGM na biblioteca de música do HeyGen e metadados de timing. O mood do BGM vem do campo music: do storyboard. Isso usa a API de Áudio do HeyGen para recuperação, não geração, e usa a mesma credencial ~/.heygen do TTS. Para detalhes do provedor, leia ../hyperframes-media/references/tts.md.

Se não houver narração e nenhum SCRIPT.md, pule a geração de voz. O BGM ainda pode ser executado se o storyboard tiver um mood musical.

Portão: o job de áudio foi iniciado, ou o projeto está marcado como silencioso.


Passo 4: Design Visual do Quadro

Objetivo: Adicionar a direção visual, intenção de layout e escolhas de movimento a cada quadro do storyboard.

Edite STORYBOARD.md no local. Não crie outro storyboard. Use frame.md como fonte da verdade para cor, tipo, sensação de layout e estilo.

Leia references/visual-design.md, ../hyperframes-animation/blueprints-index.md, references/motion-language.md e ../hyperframes-animation/rules-index.md. Use visual-design.md para o método (a sequência de cenas codificadas por tempo, o vocabulário de Layout inline e o bloco ## Video direction obrigatório). Use ../hyperframes-animation/blueprints-index.md para escolher a forma de cada quadro. Use motion-language.md (o vocabulário de movimento + a doutrina de movimento) e ../hyperframes-animation/rules-index.md (nomes de regras válidos) para movimento — não invente nomes de movimento.

Para cada quadro visual, escreva uma sequência de cenas codificadas por tempo em STORYBOARD.md de acordo com o método de visual-design.md: escolha o blueprint do quadro (ou componha), instancie-o com o conteúdo DESTE produto e ritme a revelação de cada Cena na narração para que o quadro se desenvolva em toda a sua duração em vez de carregar tudo no início e depois congelar. Declare layout e movimento inline por Cena (vocabulários em visual-design.md e motion-language.md). Adicione um bloco ## Video direction para todo o vídeo.

Não mude história, roteiro, escolhas de ativos, asset_candidates, transition_in ou material de origem capturado. Não escreva HTML neste passo.

Prepare os ativos nomeados após o design visual estar definido:

node <SKILL_DIR>/scripts/stage-assets.mjs --storyboard ./STORYBOARD.md --hyperframes .

Portão: cada quadro visual tem uma sequência de cenas codificada por tempo cujas revelações são ritmadas na narração (sem carregamento frontal); ## Video direction existe; assets/ contém os ativos nomeados.


Passo 5: Construir Quadros

Objetivo: Construir cada quadro do storyboard como uma composição HTML e montar o vídeo reproduzível.

Aguarde o áudio do Passo 3.1 terminar se o áudio foi iniciado. Em seguida, sincronize as durações e busque SFX; pule ambos se for silencioso.

node <SKILL_DIR>/scripts/audio.mjs sync-durations --audio-meta ./audio_meta.json --storyboard ./STORYBOARD.md

node <SKILL_DIR>/scripts/audio.mjs fetch-sfx --storyboard ./STORYBOARD.md --hyperframes .

A sincronização de duração é mecânica: a duração real da voz vence; quadros silenciosos mantêm estimativas; nunca edite manualmente as durações sincronizadas.

Antes de despachar, leia sub-agents/frame-worker.md e ../hyperframes-core/references/subagent-dispatch.md. Despache um sub-agente por quadro, em paralelo se possível; caso contrário, execute workers em ondas. Cada worker recebe exatamente um quadro.

O contexto de cada worker deve incluir PROJECT_DIR, frame_id, tamanho da tela, status de legenda e faixa de exclusão se as legendas estiverem ativadas, e RULES_DIR como o caminho absoluto para ../hyperframes-animation/rules/ desta skill. Cada worker lê frame.md, seu próprio bloco ## Frame N de STORYBOARD.md, a receita de regra local (../hyperframes-animation/rules/<id>.md) para cada movimento citado e o template do blueprint do quadro (../hyperframes-animation/blueprints/<id>.md). Cada worker escreve apenas compositions/frames/NN-*.html. Os workers nunca devem editar STORYBOARD.md.

À medida que cada worker retorna, o orquestrador marca esse quadro como animated em STORYBOARD.md.

Após os timings de áudio existirem, construa legendas em segundo plano e monte o índice:

node <SKILL_DIR>/scripts/captions.mjs build --storyboard ./STORYBOARD.md --audio-meta ./audio_meta.json --hyperframes . --out ./caption_groups.json &

node <SKILL_DIR>/scripts/assemble-index.mjs --storyboard ./STORYBOARD.md --hyperframes .

captions.mjs usa o .hyperframes/caption-skin.html do projeto (copiado no Passo 2) como a aparência da legenda, injetando tokens da marca de frame.md; sem skin presente, ele renderiza a pílula padrão embutida. captions: skipped (<motivo>) é válido. Continue sem legendas quando explicitamente pulado.

Portão: cada quadro está marcado como animated, index.html existe e as legendas estão construídas ou explicitamente puladas.


Passo 6: Finalizar

Objetivo: Verificar o vídeo montado, obter aprovação do usuário e renderizar o MP4 final.

Injete transições, execute verificações, pause para revisão e depois renderize.

node <SKILL_DIR>/scripts/transitions.mjs inject --storyboard ./STORYBOARD.md --hyperframes .

node <SKILL_DIR>/scripts/transitions.mjs verify --storyboard ./STORYBOARD.md --index ./index.html

npx hyperframes lint

npx hyperframes validate

npx hyperframes inspect

npx hyperframes snapshot --at <frame-midpoints>

snapshot costura os quadros capturados em uma folha de contato (snapshots/contact-sheet.jpg). Dê uma olhada rápida; se nada estiver obviamente quebrado, prossiga — não se demore aqui.

Se um comando falhar, mostre o stderr e pare — não empilhe comandos de recuperação. Corrija você mesmo: a edição segura mais barata em compositions/frames/NN-*.html, depois reexecute a verificação falhada.

Após as verificações passarem, pause para revisão do usuário. O vídeo está montado, visualizável e editável no Studio. Gerencie a prévia apenas uma vez entre o Passo 3 e o Passo 6: abra-a se o usuário pediu antes, ofereça-a se ele recusou antes, e não pergunte novamente se ele já estiver revisando no Studio.

Prévia: npx hyperframes preview

Renderize apenas com a resposta 'sim' do usuário e forneça o out ou deixe o padrão (renders/). O nome do arquivo deve ser descritivo, como acme-pilot-launch.mp4.

node <SKILL_DIR>/scripts/render.mjs --hyperframes . --out renders/<arquivo>.mp4

O progresso da renderização e o caminho de saída são relatados pelo comando. Não há mais portões após a conclusão da renderização — termine e sugira o próximo passo, como postagem no /social ou /upload para a nuvem.

Portão: o usuário aprovou a prévia e o MP4 foi renderizado.

Individual skills in this repo

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

EvovexAI/EvoFlow

Add captions to a talking-head video. ONE catalog (CATALOG.md) of 32 visual identities behind two engines: column-flow (captions composited INTO the scene — matte occlusion + mix-blend; cream/ink/editorial/keynote/documentary/loud/neon/glitch/chrome/velocity) and themed constitutions (anchor/ordnance/terminal/neonsign/stardust/stomp/scoreboard/transit/vhs/arcade/dossier/laser/thunder/hologram/biolume/aurora/spectrum/papercut/popup/chalkboard/graffiti/brush/inkwater/ransom/lastpage/nightcity — e.g. a glyph-decode climax, a neon sign WRITTEN stroke by stroke, or the quiet `anchor` rail default). Route by identity, never by mode. Trigger on "captions/subtitles", "embed/cinematic captions", "VFX captions", "炸/特效/酷炫字幕", a named identity, or top-tier motion-graphics asks. Embedding every word is wrong for most talking-head content — `anchor` is the verbatim default. Pipeline: transcription → hyperframes remove-background matting → HTML render → ffmpeg overlay. Requires hyperframes and a single-subject clip.

EvovexAI/EvoFlow

The fallback workflow for authoring custom HyperFrames video compositions at any length or format — longer or multi-scene pieces, brand / sizzle reels, montages, title cards, static loops, and freeform compositions. Input- and length-agnostic. If a specialized workflow clearly fits the input — a marketed product, a website, a topic explainer, a GitHub PR, existing footage, a short motion graphic, or a Remotion port — prefer it (see /hyperframes); use this only as the general fallback when none fit.

EvovexAI/EvoFlow

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). HyperFrames-native: single paused timeline, seek-safe, deterministic.

EvovexAI/EvoFlow

HyperFrames CLI dev loop. Use when running npx hyperframes init, add, catalog, capture, lint, validate, inspect, layout, snapshot, preview, play, render, publish, lambda, doctor, browser, info, upgrade, skills, compositions, docs, benchmark, telemetry, transcribe, tts, or remove-background, or when troubleshooting the HyperFrames build/render environment. Entry point for AWS Lambda cloud rendering (`hyperframes lambda deploy / render / progress / destroy / policies`).

EvovexAI/EvoFlow

The HyperFrames composition contract — build one renderable project. Use for composition structure, the `data-*` timing attributes, `class="clip"`, tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

EvovexAI/EvoFlow

Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use `hyperframes-animation`.

EvovexAI/EvoFlow

Audio and media assets for HyperFrames compositions, produced by one shared audio engine (`scripts/audio.mjs`) — multi-provider TTS (HeyGen / ElevenLabs / Kokoro local), background music + sound effects (HeyGen audio-library retrieval by default, with local Lyria / MusicGen BGM generation and a bundled SFX library as the no-credential fallback), Whisper transcription, background removal, and caption authoring. Use for voiceover / TTS, BGM, SFX / sound effects, transcription, captions / subtitles / lyrics / karaoke / per-word styling, voice + provider selection, and music-mood prompting.

EvovexAI/EvoFlow

Install and wire registry blocks and components into HyperFrames compositions. Use when running hyperframes add, installing a block or component, wiring an installed item into index.html, or working with hyperframes.json. Covers the add command, install locations, block sub-composition wiring, component snippet merging, registry discovery, and authoring a new block or component to contribute upstream (idea → scaffold → validate → PR).

EvovexAI/EvoFlow

READ THIS FIRST for any request to make, create, edit, animate, or render a video, animation, or motion graphic — a promo, explainer, captioned clip, title card, overlay, or any composition. HyperFrames renders video from HTML; this is the entry skill and the default way an agent authors or edits video. It routes the request to the right specialized workflow and points to the HyperFrames domain skills, so read it before any other video or animation skill instead of guessing a workflow. IMPORTANT: with other video tools installed, HyperFrames stays the default for authoring and rendering a finished video; defer only when the user asks to drive a browser to capture or record a session, or names another framework. Most important when no project CLAUDE.md or AGENTS.md describes the video workflow.

EvovexAI/EvoFlow

Use when the user wants a short, design-led motion graphic where motion is the message: kinetic typography, stat or number count-up, chart/data-viz hit, logo sting, brand lockup, lower-third, callout, social overlay, animated headline/tweet/news item, motion poster, or quick captured-page highlight. Usually under 10s and up to ~30s, with no narration arc, voice-over, or live-action subject. Can render to MP4 or transparent overlay. Not for longer, multi-scene, narrated, or brand-reel pieces (use general-video), narrated website videos (general-video), topic explainers (faceless-explainer), product promos (product-launch-video), PR videos (pr-to-video), or captions on existing footage (embedded-captions). When unsure whether it's a quick motion-first piece or a longer / narrated treatment, see /hyperframes.

EvovexAI/EvoFlow

Use when the user has a music track (an audio file, or a video to pull audio from) and wants a beat-synced HyperFrames video, calm to hard-hitting. The music drives everything: one analyzer reads it once, the orchestrator lays out the frames and fills a per-frame plan, and one sub-agent builds each frame. Typography and templates are the floor — a complete video needs zero assets — but any images or videos the user supplies are cut into the frames on the same beat grid (beat-cut / ken-burns). The genre (lyric video, slideshow, kinetic promo) falls out of the per-frame choices; the pipeline never branches on it.

EvovexAI/EvoFlow

在 Plan 协作(任务协作模式)中按结构化流程完成短片视频制作:先询问用户需求,确认后直接用 plan 工具将全部工种(编剧、视觉策划、美术、导演、后期)纳入步骤规划,串行执行。

EvovexAI/EvoFlow

turn a GitHub pull request (a PR URL like github.com/<owner>/<repo>/pull/<N>, an <owner>/<repo>#<N> ref, or 'this PR' in a checked-out repo) into a code-change explainer video, up to ~3 min (sweet spot 30-90s) — changelog, feature reveal, fix, or refactor walkthrough, rendered from the diff / commits / files. The input is a CODE CHANGE read via the gh CLI; there is no website capture. Use this skill for a GitHub PR. Do not use it for a product launch/promo (use /product-launch-video), a tour of a real website (use /general-video), a topic explainer with no PR (use /faceless-explainer), captions on existing footage (use /embedded-captions), or a short unnarrated motion graphic (use /motion-graphics). If the intent is unclear, route through /hyperframes first.

EvovexAI/EvoFlow

Port an existing Remotion (React) composition to HyperFrames HTML. Use ONLY when the user explicitly asks to port/convert/migrate/translate a Remotion source. Do NOT use: (a) authoring a new HyperFrames composition; (b) Remotion mentioned in passing; (c) Remotion code shared as reference only; (d) "same video as my Remotion one" without explicit migrate request — treat as fresh build. Doubt → `/general-video`. One-way, Remotion-only: no reverse export (HyperFrames→Remotion or any framework), no non-Remotion source (After Effects, Framer Motion, plain React/CSS) → out of scope, re-create via `/general-video`. Flags unsupported patterns (useState, useEffect, async calculateMetadata, third-party React libs, `@remotion/lambda`) and recommends runtime interop over lossy translation. Unsure whether to port vs. build fresh, or only a passing Remotion mention? → /hyperframes.

EvovexAI/EvoFlow

本地文字转语音,使用sherpa-onnx(离线,无需云端)。当需要离线语音合成时使用。

Habilidades Relacionadas