@praeko/studio 0.1.0 → 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 CHANGED
@@ -1,15 +1,30 @@
1
1
  # Changelog
2
2
 
3
- Segue [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/) e [SemVer](https://semver.org/lang/pt-BR/). Na série 0.x uma mudança incompatível pode sair em versão menor, sempre registrada aqui.
3
+ Follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and [SemVer](https://semver.org/). In the 0.x series a breaking change may ship in a minor version, always recorded here.
4
+
5
+ ## [0.2.0] - unreleased
6
+
7
+ **Breaking: everything is English now.** The 0.1.0 surface was Portuguese; this is day 0 with almost no users, so the rename is done at once. No Portuguese alias is kept.
8
+
9
+ - **Commands:** `novo→new`, `voz→voice` (`saldo→balance`, `vozes→voices`, `conta listar|adicionar→account list|add`, `config chave→config key`), `compilar→compile`, `corte→cut`, `prever→preview`, `capa→cover`, `folha→contact-sheet`, `checar→check`, `pacote→package`, `agendar→schedule`, `postar→post`, `fila→queue` (`list|run|cancel|install|remove`), `conta→account` (`connect|status`), `licencas→licenses`.
10
+ - **Flags:** `--titulo→--title`, `--longo→--long`, `--qualidade→--quality` (`rascunho→draft`), `--voz→--voice`, `--alinhador→--aligner`, `--sem-failover→--no-failover`, `--de/--ate→--from/--to`, `--abertura→--hook`, `--motor→--engine`, `--escala→--scale`, `--quando→--when`, `--redes→--networks`, `--enviar→--send`, `--canais→--channels`, `--chave→--key`, `--aceitar→--accept`, `--sem-instalar→--no-install`, `--de-env→--from-env`, `--simular→--dry-run`, `--voz-id→--voice-id`.
11
+ - **Project files:** `marca.json→brand.json`, `vozes.json→voices.json`, `episodios/→episodes/`, `episodio.yaml→episode.yaml`, `roteiro.txt→script.txt`, `palavras.json|ts→words.json|ts`, `voz.mp3→voice.mp3`, `publicacao.json→publication.json`, `textos.md→texts.md`, `agendamento.json→schedule.json`, and every YAML/JSON key (full table: `docs/studio-ingles.md` of the repository).
12
+ - **Environment:** `PRAEKO_STUDIO_LANG→PRAEKO_LANG`, `PRAEKO_STUDIO_SEM_AVISO→PRAEKO_STUDIO_NO_NOTICE`, `PRAEKO_SEGREDOS→PRAEKO_SECRETS`, `PRAEKO_SEM_CHAVEIRO→PRAEKO_NO_KEYCHAIN`, `~/.config/praeko/segredos.json→secrets.json`.
13
+ - **New:** `praeko studio migrate [--dry-run]` converts a 0.1.0 project in place (renames files and folders, rewrites keys, updates the TSX imports, `package.json` and the agent instruction blocks; backup in `.studio-backup/`, report at the end). It is the only code that still knows the Portuguese names.
14
+ - **New:** `--lang pt` / `PRAEKO_LANG=pt` prints the common messages in Brazilian Portuguese; the default is English everywhere (help, errors, `doctor`, the agent skill, the project templates).
15
+ - **New:** `--engine hyperframes` renders the video **and** the cover with HyperFrames; nothing from Remotion is used then.
16
+ - The agent skill and the `AGENTS.md`/`CLAUDE.md`/`GEMINI.md` blocks are English by default (`--lang pt` available, using the new command names); block markers are `praeko-studio:start`/`end`.
17
+ - All packages are TypeScript (strict); `@praeko/studio-core` and `@praeko/studio-kit` ship `.d.ts` files whose import specifiers resolve for consumers.
18
+ - Library API renamed in `@praeko/studio-core` and `@praeko/studio-kit` (see their CHANGELOGs); the old names are gone.
4
19
 
5
20
  ## [0.1.0] - 2026-11-07
6
21
 
7
- Primeira versão publicada. O Praeko Studio nasceu dentro de um projeto de divulgação e foi extraído para qualquer pessoa usar com o seu próprio agente de código.
22
+ First published version. Praeko Studio was born inside a promotion project and was extracted for anyone to use with their own coding agent.
8
23
 
9
- - Comando `praeko-studio` (também por `praeko studio …`, pelo `@praeko/cli`): `init`, `novo`, `voz`, `compilar`, `corte`, `prever`, `render`, `capa`, `folha`, `checar`, `pacote`, `agendar`, e os novos `doctor`, `licencas`, `skill install` e `docs`.
10
- - `init` cria projetos que dependem de pacotes publicados por semver (`@praeko/studio-core`, `@praeko/studio-kit`); `--dev <studio>` mantém o modo por caminho local para quem contribui.
11
- - `skill install` grava as instruções para Claude Code, Codex, Gemini CLI, Cursor, opencode, Cline e Windsurf (pt-BR e en), com a regra de dois passos para publicar por MCP, o envio de arquivo local (`create_media_upload`) e a declaração de IA.
12
- - Voz: `vozes.json` por projeto e por usuário (sem ids de ninguém no pacote); chaves por variável de ambiente, cofre do macOS ou arquivo `~/.config/praeko/segredos.json` (permissão 600); a chave do Praeko é a mesma da `praeko` CLI.
13
- - Publicação padrão pelo Praeko (`--via praeko`); `links` do `marca.json` virou opcional; `publicacao.json` ganhou `ia.sintetico` (conferido por `checar` e `pacote`; vai ao YouTube como `containsSyntheticMedia` na publicação direta).
14
- - Remotion **não é MIT**: veja `LICENSES.md` e `praeko studio licencas`.
15
- - Removido: o alias `bardo`, o serviço antigo do cofre e `~/.config/bardo`. `fila instalar/remover` (launchd) só existe no macOS.
24
+ - `praeko-studio` command (also through `praeko studio …`, by `@praeko/cli`): `init`, `new`, `voice`, `compile`, `cut`, `preview`, `render`, `cover`, `contact-sheet`, `check`, `package`, `schedule`, plus the new `doctor`, `licenses`, `skill install` and `docs` (named in Portuguese in that release).
25
+ - `init` creates projects that depend on published packages by semver (`@praeko/studio-core`, `@praeko/studio-kit`); `--dev <studio>` keeps the local-path mode for contributors.
26
+ - `skill install` writes the instructions for Claude Code, Codex, Gemini CLI, Cursor, opencode, Cline and Windsurf (pt-BR and en), with the two-step rule for publishing through MCP, the local file upload (`create_media_upload`) and the AI disclosure.
27
+ - Voice: per-project and per-user voices file (no one's ids in the package); keys through an environment variable, the macOS keychain or a secrets file (600 permission); the Praeko key is the same as the `praeko` CLI's.
28
+ - Default publishing through Praeko (`--via praeko`); the brand `links` became optional; the publication file gained the AI disclosure (checked by `check` and `package`; sent to YouTube as `containsSyntheticMedia` in direct publishing).
29
+ - Remotion is **not MIT**: see `LICENSES.md` and `praeko studio licenses`.
30
+ - Removed: the `bardo` alias, the old keychain service and `~/.config/bardo`. `queue install/remove` (launchd) only exists on macOS.
package/LICENSES.md CHANGED
@@ -1,38 +1,36 @@
1
- # Licenças do Praeko Studio / Licenses
1
+ # Praeko Studio licenses
2
2
 
3
- Conferido em 07/11/2026 (verified on 2026-11-07). Este arquivo não é aconselhamento jurídico; vale o texto de cada fornecedor.
3
+ Verified on 2026-11-07. This file is not legal advice; each vendor's own text prevails.
4
4
 
5
- ## O código do Praeko Studio
6
- Os pacotes `@praeko/studio`, `@praeko/studio-core` e `@praeko/studio-kit` são **MIT** (ver `LICENSE`, Copyright (c) 2026 Marcone Santos), como `@praeko/sdk` e `@praeko/cli`. Os efeitos sonoros (`pop`, `ding`, `thump`, `whoosh`) e o `avatar.png` do modelo de projeto foram criados para o Studio (sons sintetizados por `scripts/gerar-sfx.mjs`, sem amostras de terceiros) e seguem a mesma licença MIT. O pacote não traz fontes, músicas, imagens de banco nem arte de terceiros.
5
+ ## Praeko Studio's code
6
+ The packages `@praeko/studio`, `@praeko/studio-core` and `@praeko/studio-kit` are **MIT** (see `LICENSE`, Copyright (c) 2026 Marcone Santos), like `@praeko/sdk` and `@praeko/cli`. The sound effects (`pop`, `ding`, `thump`, `whoosh`) and the `avatar.png` of the project template were created for Studio (sounds synthesized by `scripts/generate-sfx.mjs`, with no third-party samples) and follow the same MIT license. The package ships no fonts, music, stock images or third-party art.
7
7
 
8
- ## Aviso que você precisa ver (Remotion NÃO é MIT)
9
- > **Remotion.** O Remotion é *source-available*, não open source. É **grátis** para pessoas físicas, organizações sem fins lucrativos, avaliação e empresas com **até 3 funcionários** (uso comercial incluído). Empresas com **4 ou mais pessoas** precisam da **Company License** (remotion.pro/license). Quem instala e roda o Remotion é **você**: a licença é sua, não do Praeko. O Remotion também vende planos para quem **automatiza renders por programa ou agente** (Creators, Automators); o FAQ deles não diz expressamente se um agente local que roda `remotion render` entra: **pergunte ao Remotion** antes de usar em escala. O Praeko Studio não copia nem modifica código do Remotion: usa-o como dependência (peer) instalada por você.
10
- >
11
- > **Remotion** is source-available, not open source. Free for individuals, non-profits, evaluation and companies of up to 3 employees (commercial use included); companies of 4+ need the Company License (remotion.pro/license). You install and run Remotion, so the license is yours. They also sell plans for programmatic/agent-driven rendering; their FAQ does not say whether a local agent running `remotion render` counts: ask Remotion before using at scale. Praeko Studio does not copy or modify Remotion code; it uses it as a dependency you install.
8
+ ## Notice you need to see (Remotion is NOT MIT)
9
+ > **Remotion.** Remotion is *source-available*, not open source. It is **free** for individuals, non-profits, evaluation and companies with **up to 3 employees** (commercial use included). Companies with **4 or more people** need the **Company License** (remotion.pro/license). You install and run Remotion, so the license is **yours**, not Praeko's. Remotion also sells plans for those who **automate renders by program or agent** (Creators, Automators); their FAQ does not expressly say whether a local agent running `remotion render` counts: **ask Remotion** before using at scale. Praeko Studio does not copy or modify Remotion code: it uses it as a dependency (peer) that you install.
12
10
 
13
- Este aviso aparece no `README`, na instalação (`praeko studio init`), em `praeko studio doctor` e em `praeko studio licencas` (`--aceitar` registra a leitura em `~/.config/praeko/studio/licencas.json`).
11
+ This notice appears in the `README`, at install time (`praeko studio init`), in `praeko studio doctor` and in `praeko studio licenses` (`--accept` records that you read it in `~/.config/praeko/studio/licenses.json`).
14
12
 
15
- **Capas** são renderizadas com `remotion still`, mesmo com `--motor hyperframes`: hoje não existe projeto 100% livre de Remotion. Uma capa sem Remotion está no roteiro de trabalho (`docs/studio-produto.md`, item 9) e não foi prometida.
13
+ **Engines.** Remotion is the default engine for videos **and** covers. With `--engine hyperframes` (or `"engine": "hyperframes"` in `brand.json`) the video **and** the cover are rendered by HyperFrames and nothing from Remotion is used, so a project that only uses HyperFrames does not need a Remotion license. Scenes or covers written as TSX (`component:`) only exist in Remotion.
16
14
 
17
- **Não prometemos "grátis para sempre":** as condições do Remotion podem mudar (a própria página avisa que a licença muda no Remotion 5.0). Reveja a licença ao subir de versão.
15
+ **We do not promise "free forever":** Remotion's conditions may change (their own page warns that the license changes in Remotion 5.0). Review the license when you upgrade.
18
16
 
19
- ## Dependências de terceiros
20
- | Componente | Onde | Licença | Fonte |
17
+ ## Third-party dependencies
18
+ | Component | Where | License | Source |
21
19
  |---|---|---|---|
22
- | `remotion`, `@remotion/cli` (4.0.539) | instalados no **projeto** do usuário (peer de core/kit) | Remotion License (ver acima), não MIT | remotion.pro/license; github.com/remotion-dev/remotion (LICENSE.md) |
23
- | `react`, `react-dom` (19.2.3) | projeto do usuário (peer) | MIT | package.json de cada pacote |
24
- | `@praeko/studio-core`, `-kit` | projeto do usuário | MIT | LICENSE |
25
- | `yaml` (2.9.1) | embutido no bundle de `@praeko/studio` | ISC | package.json |
26
- | `@elevenlabs/elevenlabs-js` (2.x) | dependência de `@praeko/studio` | MIT | package.json |
27
- | `hyperframes` (0.9.13, motor opcional) | baixado por `npx` na primeira vez que você usa `--motor hyperframes` | Apache-2.0 | github.com/heygen-com/hyperframes |
28
- | `typescript`, `esbuild`, `@types/*` | só desenvolvimento/build | Apache-2.0 / MIT | package.json |
29
- | ffmpeg / ffprobe | você instala | LGPL ou GPL, conforme a compilação | ffmpeg.org/legal.html |
30
- | Chrome Headless Shell / Chromium | o Remotion baixa no primeiro render | licenças do Chromium/Google | remotion.dev/docs/miscellaneous/chrome-headless-shell |
31
-
32
- ## Serviços e modelos (você contrata)
33
- - **ElevenLabs**: seus termos e seu plano (clonagem de voz só com direito sobre a voz). A chave é sua; o Studio nunca a imprime.
34
- - **VoiceStudio local** (opcional): o modelo OmniVoice é **CC-BY-NC (uso não comercial)**. Não é padrão em nenhuma configuração do Studio e **não deve ser usado em conteúdo monetizado**. Confira a licença de qualquer modelo local que usar.
35
- - **YouTube, Instagram, TikTok**: termos e regras de conteúdo sintético de cada rede (veja `praeko studio docs publicar`).
36
-
37
- ## Fontes e mídia
38
- Nenhuma fonte é distribuída. O modelo de projeto usa fontes do sistema (`Arial Black`, `Menlo`) que o `doctor` confere; troque-as no `marca.json` por fontes abertas (OFL) se quiser que o vídeo saia igual em todos os sistemas. Música, imagens e clipes que você adicionar são responsabilidade sua (direitos e licenças).
20
+ | `remotion`, `@remotion/cli` (4.0.539) | installed in the user's **project** (peer of core/kit) | Remotion License (see above), not MIT | remotion.pro/license; github.com/remotion-dev/remotion (LICENSE.md) |
21
+ | `react`, `react-dom` (19.2.3) | user's project (peer) | MIT | each package's package.json |
22
+ | `@praeko/studio-core`, `-kit` | user's project | MIT | LICENSE |
23
+ | `yaml` (2.9.1) | embedded in the `@praeko/studio` bundle | ISC | package.json |
24
+ | `@elevenlabs/elevenlabs-js` (2.x) | dependency of `@praeko/studio` | MIT | package.json |
25
+ | `hyperframes` (0.9.13, optional engine) | downloaded by `npx` the first time you use `--engine hyperframes` | Apache-2.0 | github.com/heygen-com/hyperframes |
26
+ | `typescript`, `esbuild`, `@types/*` | development/build only | Apache-2.0 / MIT | package.json |
27
+ | ffmpeg / ffprobe | you install | LGPL or GPL, depending on the build | ffmpeg.org/legal.html |
28
+ | Chrome Headless Shell / Chromium | Remotion downloads it on the first render | Chromium/Google licenses | remotion.dev/docs/miscellaneous/chrome-headless-shell |
29
+
30
+ ## Services and models (you sign up)
31
+ - **ElevenLabs**: its terms and your plan (voice cloning only with rights over the voice). The key is yours; Studio never prints it.
32
+ - **Local VoiceStudio** (optional): the OmniVoice model is **CC-BY-NC (non-commercial use)**. It is not the default in any Studio configuration and **must not be used in monetized content**. Check the license of any local model you use.
33
+ - **YouTube, Instagram, TikTok**: each network's terms and synthetic-content rules (see `praeko studio docs publish`).
34
+
35
+ ## Fonts and media
36
+ No font is distributed. The project template uses system fonts (`Arial Black`, `Menlo`) that `doctor` checks; swap them in `brand.json` for open fonts (OFL) if you want the video to look the same on every system. Music, images and clips you add are your responsibility (rights and licenses).
package/README.md CHANGED
@@ -1,15 +1,13 @@
1
1
  # @praeko/studio
2
2
 
3
- Praeko Studio faz vídeos curtos (9:16) e longos (16:9) a partir de um roteiro: voz, legenda palavra a palavra, cenas, capa e textos de publicação. Você opera com o **seu próprio agente de código** (Claude Code, Codex, Gemini CLI, Cursor, opencode…) na **sua máquina**: o agente escreve o roteiro e o `episodio.yaml`, roda os comandos e, só depois do seu sim, publica pelo [Praeko](https://praeko.app/docs). Voz, render e agente são por sua conta; o Studio não chama nenhum modelo de linguagem e nenhum roteiro seu sai da máquina até você publicar.
3
+ Praeko Studio makes short (9:16) and long (16:9) videos from a script: voice, word-by-word captions, scenes, cover and publishing texts. You operate it with **your own coding agent** (Claude Code, Codex, Gemini CLI, Cursor, opencode…) on **your machine**: the agent writes the script and `episode.yaml`, runs the commands and, only after your yes, publishes through [Praeko](https://praeko.app/docs). Voice, render and agent are at your own cost; Studio calls no language model and none of your scripts leaves the machine until you publish.
4
4
 
5
- > **Licenças.** O código do Praeko Studio é MIT. O **Remotion** (motor padrão, necessário para capas) **não é MIT**: grátis para pessoas, organizações sem fins lucrativos e empresas de até 3 funcionários; empresas com 4 ou mais pessoas precisam da Company License ([remotion.pro/license](https://www.remotion.pro/license)). A licença é de quem instala e roda o Remotion. O HyperFrames (`--motor hyperframes`) é Apache-2.0. Detalhes: [LICENSES.md](./LICENSES.md) ou `praeko studio licencas`.
6
- >
7
- > **Licenses.** Praeko Studio's own code is MIT. **Remotion** (the default engine, required for covers) is **not MIT**: free for individuals, non-profits and companies of up to 3 employees; companies of 4+ need the Company License. The license is yours as the person installing and running it. HyperFrames (`--motor hyperframes`) is Apache-2.0. See [LICENSES.md](./LICENSES.md).
5
+ > **Licenses.** Praeko Studio's own code is MIT. **Remotion** (the default engine for videos and covers) is **not MIT**: free for individuals, non-profits and companies of up to 3 employees; companies with 4 or more people need the Company License ([remotion.pro/license](https://www.remotion.pro/license)). The license belongs to whoever installs and runs Remotion. HyperFrames (`--engine hyperframes`, which renders the video and the cover with nothing from Remotion) is Apache-2.0. Details: [LICENSES.md](./LICENSES.md) or `praeko studio licenses`.
8
6
 
9
- ## Requisitos
10
- Node 22 ou mais novo, `ffmpeg` e `ffprobe` no PATH, e um Chrome (o Remotion baixa o Chrome Headless Shell sozinho no primeiro render; precisa de internet nesse momento). macOS e Linux são suportados; Windows é melhor esforço e não foi testado. `praeko studio doctor` confere tudo.
7
+ ## Requirements
8
+ Node 22 or newer, `ffmpeg` and `ffprobe` on the PATH, and a Chrome (Remotion downloads the Chrome Headless Shell on its own at the first render; it needs internet at that moment). macOS and Linux are supported; Windows is best effort and untested. `praeko studio doctor` checks everything.
11
9
 
12
- ## Instalar
10
+ ## Install
13
11
  ```sh
14
12
  # npm
15
13
  npm install -g @praeko/studio
@@ -19,25 +17,28 @@ yarn global add @praeko/studio
19
17
  pnpm add -g @praeko/studio
20
18
  # bun
21
19
  bun add -g @praeko/studio
22
- # sem instalar
23
- npx @praeko/studio init meu-canal
20
+ # without installing
21
+ npx @praeko/studio init my-channel
24
22
  ```
25
- Também funciona por `praeko studio <comando>` quando o `@praeko/cli` está instalado (ele entrega ao Studio).
23
+ It also works as `praeko studio <command>` when `@praeko/cli` is installed (it hands over to Studio).
26
24
 
27
- ## Primeiro vídeo
25
+ ## First video
28
26
  ```sh
29
- praeko-studio init meu-canal --nome "Meu Canal" --agent claude # projeto + instruções para o seu agente
30
- cd meu-canal
27
+ praeko-studio init my-channel --name "My Channel" --agent claude # project + instructions for your agent
28
+ cd my-channel
31
29
  praeko-studio doctor
32
- praeko-studio novo meu-primeiro --titulo "Meu primeiro vídeo"
33
- praeko-studio voz meu-primeiro --qualidade rascunho # voz estimada e muda: grátis, sem rede
34
- praeko-studio checar meu-primeiro
35
- praeko-studio render meu-primeiro && praeko-studio folha meu-primeiro && praeko-studio capa meu-primeiro && praeko-studio pacote meu-primeiro
30
+ praeko-studio new my-first --title "My first video"
31
+ praeko-studio voice my-first --quality draft # estimated, silent voice: free, no network
32
+ praeko-studio check my-first
33
+ praeko-studio render my-first && praeko-studio contact-sheet my-first && praeko-studio cover my-first && praeko-studio package my-first
36
34
  ```
37
- Abra o seu agente na pasta do projeto e peça o vídeo: as instruções (`CLAUDE.md`/`AGENTS.md`/`GEMINI.md`/`.cursor/rules`…) já estão lá (`praeko studio skill install --agent all` regrava). Documentação da versão instalada: `praeko studio docs`.
35
+ Open your agent in the project folder and ask for the video: the instructions (`CLAUDE.md`/`AGENTS.md`/`GEMINI.md`/`.cursor/rules`…) are already there (`praeko studio skill install --agent all` rewrites them). Docs of the installed version: `praeko studio docs`.
38
36
 
39
- ## Publicar
40
- `praeko studio agendar <slug> --via praeko --quando "dd/mm hh:mm"` só simula; `--enviar` publica de verdade. Pelo MCP do Praeko o envio do arquivo local usa `create_media_upload` e a publicação é sempre em dois passos (prévia e código de confirmação). Declare conteúdo de IA em `publicacao.json` (`"ia": { "sintetico": true }`). Veja `praeko studio docs publicar`.
37
+ ## Publish
38
+ `praeko studio schedule <slug> --via praeko --when "dd/mm hh:mm"` only simulates; `--send` really publishes. Through the Praeko MCP the upload of the local file uses `create_media_upload` and publishing is always in two steps (preview and confirmation code). Declare AI content in `publication.json` (`"ai": { "synthetic": true }`). See `praeko studio docs publish`.
41
39
 
42
- ## Licença
43
- MIT (o código deste pacote). Veja também [LICENSES.md](./LICENSES.md).
40
+ ## Upgrading from 0.1.0
41
+ 0.2.0 is English only (commands, flags, files, keys). Convert an existing project once: `praeko studio migrate --dry-run`, then `praeko studio migrate` (backup in `.studio-backup/`, report at the end).
42
+
43
+ ## License
44
+ MIT (the code of this package). See also [LICENSES.md](./LICENSES.md).