@danhachuel/thunderbolt 0.2.13

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.
@@ -0,0 +1,513 @@
1
+ # Manual de Instalação — Thunderbolt UI
2
+
3
+ Este manual descreve a instalação local da UI Thunderbolt, baseada no MoneyPrinterTurbo, utilizando o pacote npm `@danhachuel/thunderbolt`. O fluxo recomendado instala automaticamente o ambiente Python, as dependências da aplicação, as dependências do MoneyPrinterTurbo, o Streamlit e o suporte FFmpeg através de `imageio-ffmpeg`.
4
+
5
+ > **Versão deste manual:** 0.2.13
6
+ > **Pacote npm:** `@danhachuel/thunderbolt`
7
+ > **Porta padrão da UI:** `localhost:3030`
8
+ > **Repositório:** [github.com/DanHachuel/thunderbolt](https://github.com/DanHachuel/thunderbolt)
9
+
10
+ ## 1. O que será instalado
11
+
12
+ A instalação assistida cria um ambiente local separado para evitar misturar as dependências do Thunderbolt com outros projectos Python.
13
+
14
+ | Componente | Local ou comportamento padrão |
15
+ |---|---|
16
+ | Python | Python 3.11 ou superior já instalado no sistema |
17
+ | Ambiente virtual | `~/.thunderbolt/.venv` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\.venv`) |
18
+ | MoneyPrinterTurbo | `~/.thunderbolt/MoneyPrinterTurbo` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\MoneyPrinterTurbo`) |
19
+ | Storage Thunderbolt | `~/.thunderbolt/storage` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\storage`) |
20
+ | Dependências Thunderbolt | Instaladas a partir do `requirements.txt` incluído no pacote |
21
+ | Dependências MoneyPrinterTurbo | Instaladas a partir do `requirements.txt` do repositório oficial |
22
+ | Streamlit | Instalado como dependência Python |
23
+ | FFmpeg | Disponibilizado pelo pacote Python `imageio-ffmpeg` |
24
+ | Porta da aplicação | `3030`, configurável com `THUNDERBOLT_PORT` |
25
+
26
+ A aplicação não instala drivers de GPU, Docker, modelos Whisper ou credenciais externas. As chaves de API do MoneyPrinterTurbo são configuradas na aba **Configurações** e sincronizadas com o `config.toml` do clone local.
27
+
28
+ O MoneyPrinterTurbo declara Python 3.11 ou superior como requisito e documenta a instalação com `uv` ou com `venv + pip`. A aplicação segue o mesmo princípio e adiciona um instalador assistido próprio.[1]
29
+
30
+ ## 2. Pré-requisitos
31
+
32
+ Instale os seguintes componentes antes de executar o instalador:
33
+
34
+ | Pré-requisito | Necessário | Observação |
35
+ |---|---:|---|
36
+ | Python 3.11+ | Sim | No Windows, o instalador tenta instalar automaticamente via winget; noutros sistemas deve estar instalado |
37
+ | npm | Sim | Normalmente vem incluído com Node.js |
38
+ | Node.js 18+ | Sim | Necessário para executar o pacote via `npx` |
39
+ | Git | Sim para instalação automática do MoneyPrinterTurbo | Pode ser evitado usando `--skip-moneyprinter` ou `MONEYPRINTER_PATH` |
40
+ | winget | Recomendado no Windows | Permite ao instalador instalar Python 3.11 automaticamente; vem normalmente com Windows 10/11 actualizado |
41
+ | Internet | Sim durante a instalação | Necessária para npm, GitHub e PyPI |
42
+ | Espaço em disco | Recomendado 5 GB ou mais | Dependências, caches, modelos e artefactos podem ocupar espaço adicional |
43
+
44
+ A instalação local do MoneyPrinterTurbo recomenda Windows 10+, macOS 11+ ou uma distribuição Linux corrente. Python 3.11 é a opção de referência do projecto base.[1]
45
+
46
+ ### 2.1 Windows: PowerShell bloqueia npx.ps1
47
+
48
+ Em algumas instalações Windows, o PowerShell bloqueia o wrapper `npx.ps1` por causa da política de execução de scripts. Nesse caso, use `npx.cmd`, que executa o mesmo npm/npx sem depender do wrapper PowerShell:
49
+
50
+ ```powershell
51
+ npx.cmd --yes @danhachuel/thunderbolt install
52
+ npx.cmd --yes @danhachuel/thunderbolt doctor
53
+ npx.cmd --yes @danhachuel/thunderbolt
54
+ ```
55
+
56
+ Se preferir corrigir a política para o seu utilizador:
57
+
58
+ ```powershell
59
+ Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
60
+ ```
61
+
62
+ Para permitir apenas durante a sessão actual:
63
+
64
+ ```powershell
65
+ Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
66
+ ```
67
+
68
+ Não é necessário usar `Unrestricted`. Se estiver num terminal MobaXterm ou CMD, também pode executar:
69
+
70
+ ```cmd
71
+ cmd /c npx.cmd --yes @danhachuel/thunderbolt install
72
+ ```
73
+
74
+ ### 2.2 Confirmar versões
75
+
76
+ Linux ou macOS:
77
+
78
+ ```bash
79
+ node --version
80
+ npm --version
81
+ python3 --version
82
+ git --version
83
+ ```
84
+
85
+ Windows PowerShell:
86
+
87
+ ```powershell
88
+ node --version
89
+ npm --version
90
+ py --version
91
+ git --version
92
+ ```
93
+
94
+ O Python deve apresentar a versão `3.11` ou superior. Se estiver no Windows sem Python, o instalador tenta executar automaticamente `winget install --exact --id Python.Python.3.11`. Se `winget` não estiver disponível, instale o App Installer/Microsoft Store ou Python a partir de [python.org](https://www.python.org/downloads/windows/) e repita a instalação. Em macOS/Linux, o instalador não assume permissões administrativas para instalar Python no sistema; instale-o pelo gestor de pacotes ou use `THUNDERBOLT_PYTHON`.
95
+
96
+ ## 3. Instalação recomendada via npx
97
+
98
+ Execute:
99
+
100
+ Windows PowerShell ou MobaXterm:
101
+
102
+ ```powershell
103
+ npx.cmd --yes @danhachuel/thunderbolt@0.2.13 install
104
+ ```
105
+
106
+ Linux/macOS:
107
+
108
+ ```bash
109
+ npx --yes @danhachuel/thunderbolt@0.2.13 install
110
+ ```
111
+
112
+ A instalação normal é **segura para actualizações**: preserva `storage`, Blueprints, Brandings, configurações e artefactos do utilizador. Remove apenas `.venv`, o clone técnico do MoneyPrinterTurbo e dependências que serão recriadas. Uma pasta antiga sem dados do utilizador, como `C:\Users\<utilizador>\AppData\Local\hermes` da tentativa incompleta, pode ser removida; uma pasta antiga que contenha Blueprints, Brandings ou storage é preservada e apenas avisada no terminal. Feche processos Python, Node, Streamlit e MobaXterm que estejam a usar as pastas antes de executar.
113
+
114
+ Se quiser apagar absolutamente tudo de forma intencional, use o comando destrutivo separado:
115
+
116
+ ```powershell
117
+ npx.cmd --yes --prefer-online @danhachuel/thunderbolt@VERSAO install --purge-data
118
+ ```
119
+
120
+ O parâmetro `--purge-data` apaga Blueprints, Brandings, configurações, storage e artefactos locais. Não o use numa actualização normal.
121
+
122
+ No Windows, a instalação cria automaticamente `C:\\Users\\danha\\AppData\\Local\\THUNDERBOLT\\storage` quando executada pela conta `danha`; para outras contas, `%LOCALAPPDATA%\\THUNDERBOLT\\storage` aponta para a pasta equivalente do utilizador.
123
+
124
+ O instalador irá:
125
+
126
+ 1. procurar Python 3.11 ou superior;
127
+ 2. se estiver no Windows e Python não existir, instalar Python 3.11 automaticamente pelo `winget`;
128
+ 3. criar o ambiente virtual `~/.thunderbolt/.venv` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\.venv`);
129
+ 4. clonar o repositório oficial MoneyPrinterTurbo para `~/.thunderbolt/MoneyPrinterTurbo` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\MoneyPrinterTurbo`);
130
+ 5. instalar as dependências do Thunderbolt;
131
+ 6. instalar as dependências Python do MoneyPrinterTurbo;
132
+ 7. instalar `imageio-ffmpeg` para disponibilizar FFmpeg no ambiente Python;
133
+ 8. criar `~/.thunderbolt/storage/state/settings.json` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\storage\state\settings.json`);
134
+ 9. registar o caminho local do MoneyPrinterTurbo;
135
+ 10. deixar o ambiente pronto para o comando de arranque.
136
+
137
+ No Windows, o caminho padrão é construído a partir de `USERPROFILE`, `HOMEDRIVE/HOMEPATH` ou, em último recurso, `HOME`. O instalador remove o redireccionamento de MobaXterm (`AppData\Local\hermes` ou `AppData\Roaming\MobaXterm\home`) e usa `%LOCALAPPDATA%\\THUNDERBOLT`, salvo se `THUNDERBOLT_HOME` for definido explicitamente. A pasta `AppData\Local\npm-cache\_npx` é apenas cache temporária do npm e não é a pasta de instalação final. O fluxo normal preserva os dados; somente `--purge-data` activa a limpeza destrutiva.
138
+
139
+ A instalação pode demorar alguns minutos, especialmente durante a instalação de `faster-whisper` e de bibliotecas de processamento de vídeo. O caminho do pacote dentro de `AppData\Local\npm-cache\_npx` que aparece no log é temporário; o launcher usa esse pacote apenas para executar o instalador e os ficheiros finais ficam em `%LOCALAPPDATA%\\THUNDERBOLT`.
140
+
141
+ ### 3.1 Usar o instalador com uma cópia existente do MoneyPrinterTurbo
142
+
143
+ Se já possui o MoneyPrinterTurbo clonado, indique o caminho.
144
+
145
+ Linux ou macOS:
146
+
147
+ ```bash
148
+ MONEYPRINTER_PATH=/caminho/para/MoneyPrinterTurbo \
149
+ npx --yes @danhachuel/thunderbolt install
150
+ ```
151
+
152
+ Windows PowerShell:
153
+
154
+ ```powershell
155
+ $env:MONEYPRINTER_PATH="C:\caminho\MoneyPrinterTurbo"
156
+ npx --yes @danhachuel/thunderbolt install
157
+ ```
158
+
159
+ O instalador reutiliza a pasta existente e instala as suas dependências no ambiente virtual do Thunderbolt.
160
+
161
+ ### 3.2 Instalar apenas a UI
162
+
163
+ Se pretende testar a interface sem clonar o MoneyPrinterTurbo:
164
+
165
+ ```bash
166
+ npx --yes @danhachuel/thunderbolt install --skip-moneyprinter
167
+ ```
168
+
169
+ Este modo instala o ambiente Python e as dependências da UI, mas não instala o conjunto de dependências do MoneyPrinterTurbo nem configura a integração local com ele.
170
+
171
+ ### 3.3 Controlar os caminhos de instalação
172
+
173
+ É possível alterar o directório principal e o ambiente Python:
174
+
175
+ Linux ou macOS:
176
+
177
+ ```bash
178
+ THUNDERBOLT_HOME=/caminho/thunderbolt \
179
+ MONEYPRINTER_PATH=/caminho/MoneyPrinterTurbo \
180
+ THUNDERBOLT_VENV=/caminho/thunderbolt/.venv \
181
+ npx --yes @danhachuel/thunderbolt install
182
+ ```
183
+
184
+ Windows PowerShell:
185
+
186
+ ```powershell
187
+ $env:THUNDERBOLT_HOME="C:\ContentHermes"
188
+ $env:MONEYPRINTER_PATH="C:\MoneyPrinterTurbo"
189
+ $env:THUNDERBOLT_VENV="C:\ContentHermes\.venv"
190
+ npx --yes @danhachuel/thunderbolt install
191
+ ```
192
+
193
+ ## 4. Diagnóstico antes de iniciar
194
+
195
+ Depois da instalação, execute:
196
+
197
+ ```bash
198
+ npx --yes @danhachuel/thunderbolt doctor
199
+ ```
200
+
201
+ Também é possível usar:
202
+
203
+ ```bash
204
+ npx --yes --package=@danhachuel/thunderbolt thunderbolt --check
205
+ ```
206
+
207
+ Uma saída saudável apresenta versões de Python e Streamlit e um caminho de FFmpeg. Por exemplo:
208
+
209
+ ```text
210
+ Ambiente OK. Python: 3.11.x; Streamlit: 1.x.x; FFmpeg: /.../ffmpeg
211
+ ```
212
+
213
+ Se o diagnóstico indicar que FFmpeg não foi detectado, execute novamente a instalação ou verifique se `imageio-ffmpeg` está presente no ambiente virtual.
214
+
215
+ ## 5. Iniciar a aplicação
216
+
217
+ Depois de instalar e diagnosticar:
218
+
219
+ ```bash
220
+ npx --yes @danhachuel/thunderbolt
221
+ ```
222
+
223
+ Abra no navegador:
224
+
225
+ ```text
226
+ http://localhost:3030
227
+ ```
228
+
229
+ O launcher usa o ambiente virtual em `~/.thunderbolt/.venv` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\.venv`) quando ele existe. Se for necessário executar numa porta diferente:
230
+
231
+ Linux ou macOS:
232
+
233
+ ```bash
234
+ THUNDERBOLT_PORT=3040 npx --yes @danhachuel/thunderbolt
235
+ ```
236
+
237
+ Windows PowerShell:
238
+
239
+ ```powershell
240
+ $env:THUNDERBOLT_PORT="3040"
241
+ npx --yes @danhachuel/thunderbolt
242
+ ```
243
+
244
+ Para parar a aplicação, volte ao terminal e pressione `Ctrl+C`.
245
+
246
+ ## 6. Instalação global via npm
247
+
248
+ Como alternativa ao `npx`, instale o comando globalmente:
249
+
250
+ ```bash
251
+ npm install --global @danhachuel/thunderbolt
252
+ ```
253
+
254
+ Depois execute:
255
+
256
+ ```bash
257
+ thunderbolt
258
+ ```
259
+
260
+ Diagnóstico:
261
+
262
+ ```bash
263
+ thunderbolt doctor
264
+ ```
265
+
266
+ Instalação assistida:
267
+
268
+ ```bash
269
+ thunderbolt install
270
+ ```
271
+
272
+ A instalação global controla apenas o launcher Node.js. O ambiente Python continua a ser criado em `~/.thunderbolt/.venv` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\.venv`).
273
+
274
+ ## 7. Instalação manual para desenvolvimento
275
+
276
+ Use esta opção quando quiser trabalhar directamente a partir do repositório GitHub.
277
+
278
+ ```bash
279
+ git clone https://github.com/DanHachuel/thunderbolt.git
280
+ cd thunderbolt
281
+ ```
282
+
283
+ ### 7.1 Linux ou macOS
284
+
285
+ ```bash
286
+ python3.11 -m venv .venv
287
+ source .venv/bin/activate
288
+ python -m pip install --upgrade pip
289
+ python -m pip install -r requirements.txt
290
+ ```
291
+
292
+ Para instalar também o MoneyPrinterTurbo:
293
+
294
+ ```bash
295
+ git clone https://github.com/harry0703/MoneyPrinterTurbo.git
296
+ python -m pip install -r MoneyPrinterTurbo/requirements.txt
297
+ ```
298
+
299
+ Inicie a UI:
300
+
301
+ ```bash
302
+ python -m streamlit run app/main.py --server.port 3030
303
+ ```
304
+
305
+ Ou use o launcher local:
306
+
307
+ ```bash
308
+ node scripts/cli.mjs --check
309
+ node scripts/cli.mjs
310
+ ```
311
+
312
+ ### 7.2 Windows PowerShell
313
+
314
+ ```powershell
315
+ py -3.11 -m venv .venv
316
+ .venv\Scripts\Activate.ps1
317
+ python -m pip install --upgrade pip
318
+ python -m pip install -r requirements.txt
319
+ ```
320
+
321
+ Para instalar também o MoneyPrinterTurbo:
322
+
323
+ ```powershell
324
+ git clone https://github.com/harry0703/MoneyPrinterTurbo.git
325
+ python -m pip install -r MoneyPrinterTurbo\requirements.txt
326
+ ```
327
+
328
+ Inicie a UI:
329
+
330
+ ```powershell
331
+ python -m streamlit run app/main.py --server.port 3030
332
+ ```
333
+
334
+ Se o PowerShell bloquear a activação do ambiente virtual, execute uma vez, com uma política adequada ao seu utilizador:
335
+
336
+ ```powershell
337
+ Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
338
+ ```
339
+
340
+ ## 8. Configuração inicial da UI
341
+
342
+ Na primeira execução, abra **Configurações** e reveja:
343
+
344
+ | Configuração | Finalidade |
345
+ |---|---|
346
+ | Porta Streamlit | Definir a porta local da UI |
347
+ | Pasta MoneyPrinterTurbo | Indicar o clone local que será sincronizado com `config.toml` |
348
+ | YouTube Data API key | Permitir importar nome, handle e métricas de canais |
349
+ | TikTok Client ID/Secret | Credenciais da aplicação; Redirect URI, scopes e autorização ficam no TikTok for Developers Playground |
350
+
351
+ As chaves devem ser inseridas apenas na configuração local. Não as coloque no GitHub, no `package.json`, em blueprints ou em ficheiros de estado versionados.
352
+
353
+ ## 9. Testar as áreas principais
354
+
355
+ Após iniciar a aplicação, valide o seguinte percurso:
356
+
357
+ 1. **Dashboard:** confirme que a UI abre e mostra o estado local.
358
+ 2. **Blueprints:** coloque um JSON em `~/.thunderbolt/storage/blueprints/importados/` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\storage\blueprints\importados\`) ou use o carregador da interface.
359
+ 3. **Brandings:** abra a subaba **Brandings** e confirme a listagem dos ficheiros JSON.
360
+ 4. **Canais:** cadastre um canal manualmente ou importe-o depois de configurar a YouTube Data API.
361
+ 5. **Novo vídeo:** teste primeiro o modo **Canal específico** e depois os modos de lote.
362
+ 6. **Vídeos:** verifique o estado `to_do` e os botões **Iniciar** e **Parar**.
363
+ 7. **Upload:** confirme os destinos configurados e os estados de pré-requisito.
364
+ 8. **Limpador de metadado:** suba um vídeo de terceiro, preencha título, preview, links, timestamps e tags, aplique a limpeza e descarregue a cópia limpa e o manifesto JSON. O original fica preservado e vídeos da aba Novo vídeo não são aceites nesta área.
365
+ 9. **Configurações:** confirme que os caminhos e credenciais estão locais e não aparecem no Git.
366
+
367
+ ## 10. Limpador de metadado
368
+
369
+ A aba **Limpador de metadado** recebe somente vídeos externos já prontos. O ficheiro enviado é copiado para `storage/metadata_cleaner/originals/`; a aplicação não altera o original. Ao aplicar a operação, o FFmpeg remove os metadados existentes do contentor e cria uma nova versão em `storage/metadata_cleaner/outputs/` com o título, descrição, tags, idioma e outros campos preenchidos.
370
+
371
+ A descrição combina **Preview**, **Links** e **Timestamps**, seguindo a estrutura do workflow `YTBMetadataGenerator.json`. O preview recomendado tem entre 100 e 200 caracteres; os capítulos devem começar por `00:00`. O manifesto JSON descarregado contém os campos para um fluxo posterior de upload. Esta adaptação local não faz scraping automático via RSS/Apify nem publica directamente no YouTube.
372
+
373
+ Se a limpeza falhar, confirme a disponibilidade do FFmpeg em **Configurações > Caminho FFmpeg** ou execute `doctor`. O processo usa `-map_metadata -1` para remover os metadados existentes e `-c copy` para evitar uma re-encodificação desnecessária sempre que o contentor permitir.
374
+
375
+ ## 11. Problemas frequentes
376
+
377
+ ### Python não encontrado
378
+
379
+ Mensagem típica:
380
+
381
+ ```text
382
+ Python 3.11 ou superior não foi encontrado.
383
+ ```
384
+
385
+ Instale Python 3.11+ e confirme:
386
+
387
+ ```bash
388
+ python3 --version
389
+ ```
390
+
391
+ Se houver várias versões instaladas, indique explicitamente:
392
+
393
+ ```bash
394
+ THUNDERBOLT_PYTHON=/caminho/para/python3.11 npx --yes @danhachuel/thunderbolt install
395
+ ```
396
+
397
+ No Windows PowerShell:
398
+
399
+ ```powershell
400
+ $env:THUNDERBOLT_PYTHON="C:\Python311\python.exe"
401
+ npx --yes @danhachuel/thunderbolt install
402
+ ```
403
+
404
+ ### Git não encontrado
405
+
406
+ Instale Git a partir de [git-scm.com](https://git-scm.com/downloads), ou forneça uma cópia existente do MoneyPrinterTurbo através de `MONEYPRINTER_PATH`.
407
+
408
+ ### Streamlit não está instalado
409
+
410
+ Execute:
411
+
412
+ ```bash
413
+ npx --yes @danhachuel/thunderbolt install
414
+ npx --yes @danhachuel/thunderbolt doctor
415
+ ```
416
+
417
+ Em instalação manual:
418
+
419
+ ```bash
420
+ python -m pip install -r requirements.txt
421
+ ```
422
+
423
+ ### FFmpeg não detectado
424
+
425
+ Tente reinstalar o suporte Python:
426
+
427
+ ```bash
428
+ python -m pip install --upgrade imageio-ffmpeg
429
+ ```
430
+
431
+ Depois confirme:
432
+
433
+ ```bash
434
+ npx --yes @danhachuel/thunderbolt doctor
435
+ ```
436
+
437
+ O MoneyPrinterTurbo também permite indicar um caminho manual para FFmpeg na configuração local quando a detecção automática não funcionar.[1]
438
+
439
+ ### A porta 3030 está ocupada
440
+
441
+ Use outra porta:
442
+
443
+ ```bash
444
+ THUNDERBOLT_PORT=3040 npx --yes @danhachuel/thunderbolt
445
+ ```
446
+
447
+ ### O MoneyPrinterTurbo não aparece na UI
448
+
449
+ Confirme o caminho na aba **Configurações** ou execute:
450
+
451
+ ```bash
452
+ MONEYPRINTER_PATH=/caminho/MoneyPrinterTurbo npx --yes @danhachuel/thunderbolt install --skip-python-deps
453
+ ```
454
+
455
+ Depois reinicie a aplicação.
456
+
457
+ ### Dependências Python falham durante a instalação
458
+
459
+ Actualize pip e tente novamente:
460
+
461
+ ```bash
462
+ npx --yes @danhachuel/thunderbolt install
463
+ ```
464
+
465
+ Se uma dependência específica falhar, guarde o log completo e verifique a compatibilidade da versão Python. Python 3.11 é a opção mais conservadora para o MoneyPrinterTurbo.
466
+
467
+ ### Modelos Whisper não estão disponíveis
468
+
469
+ A instalação das dependências não baixa necessariamente todos os modelos grandes. O MoneyPrinterTurbo pode descarregar o modelo Whisper na primeira utilização, dependendo da configuração escolhida. Para ambientes sem acesso de rede, siga as instruções do projecto base para descarregar e colocar o modelo localmente.[1]
470
+
471
+ ## 12. Desinstalação
472
+
473
+ Para remover o pacote global:
474
+
475
+ ```bash
476
+ npm uninstall --global @danhachuel/thunderbolt
477
+ ```
478
+
479
+ Para remover o ambiente e os dados locais:
480
+
481
+ Linux ou macOS:
482
+
483
+ ```bash
484
+ rm -rf ~/.thunderbolt
485
+ ```
486
+
487
+ Windows PowerShell:
488
+
489
+ ```powershell
490
+ Remove-Item -Recurse -Force "$HOME\\THUNDERBOLT"
491
+ ```
492
+
493
+ > A remoção de `~/.thunderbolt` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT`) apaga estado JSON, blueprints, configurações e artefactos locais. Faça uma cópia de segurança antes de executar o comando.
494
+
495
+ ## 13. Segurança
496
+
497
+ Nunca publique ou envie por chat:
498
+
499
+ - tokens npm;
500
+ - chaves YouTube, TikTok ou outros serviços;
501
+ - cookies e tokens OAuth;
502
+ - ficheiros de configuração com segredos;
503
+ - artefactos privados de canais.
504
+
505
+ Use secrets do GitHub Actions apenas para publicação do pacote. Para execução local, mantenha credenciais fora do repositório e use a área de configurações local ou variáveis de ambiente.
506
+
507
+ ## 14. Referências
508
+
509
+ [1]: https://github.com/harry0703/MoneyPrinterTurbo/blob/main/README-en.md — MoneyPrinterTurbo: requisitos, instalação, dependências, Streamlit e FFmpeg.
510
+
511
+ [2]: https://www.npmjs.com/package/@danhachuel/thunderbolt — Pacote npm publicado.
512
+
513
+ [3]: https://github.com/DanHachuel/thunderbolt — Repositório GitHub do Thunderbolt UI.
package/README.md ADDED
@@ -0,0 +1,173 @@
1
+ # Thunderbolt UI
2
+
3
+ > Consulte o [Manual completo de instalação](MANUAL-INSTALACAO.md) antes do primeiro teste local.
4
+
5
+ Thunderbolt — UI web local da Fase 3, baseada no fluxo Streamlit do [MoneyPrinterTurbo](https://github.com/harry0703/MoneyPrinterTurbo). A aplicação organiza canais, blueprints, lotes de vídeos, filas, artefactos e upload em armazenamento local JSON.
6
+
7
+ ## Estado actual
8
+
9
+ A primeira versão implementa a camada UI independente com:
10
+
11
+ | Área | Incluído |
12
+ |---|---|
13
+ | Dashboard | Resumo de canais, tarefas, backlog, execução e falhas |
14
+ | Pipeline | Filas por etapa |
15
+ | Blueprints | Leitura da pasta `storage/blueprints/`, upload/validação de JSON e criação a partir de link YouTube |
16
+ | Brandings | Subaba própria dentro de Blueprints, upload/listagem de Brandings e criação conjunta com Blueprint |
17
+ | Canais | Cadastro manual, importação via YouTube Data API quando configurada e edição de dados importados |
18
+ | Novo vídeo | Canal específico, lote no mesmo canal e lote geral |
19
+ | Vídeos | Filtro por estado e controlos iniciar/parar |
20
+ | Upload | Destinos YouTube/TikTok e diagnóstico do TikTok |
21
+ | Limpador de metadado | Upload isolado de vídeos terceiros, limpeza FFmpeg, edição de título/descrição/tags e manifesto JSON |
22
+ | Configurações | Provedores LLM, TTS/voz, materiais, Whisper, FFmpeg, YouTube, TikTok Client ID/Secret e Upload-Post |
23
+ | Launcher | Execução via `npx`, instalação assistida, diagnóstico e preparação para distribuição |
24
+
25
+ Os adaptadores do MoneyPrinterTurbo e de publicação nas plataformas são ligados pelas configurações locais e pelos pontos de integração em `integrations/`. A UI não inventa dados quando um serviço externo ou credencial não está disponível.
26
+
27
+ ## Instalação
28
+
29
+ Recomenda-se Python 3.11 ou superior e Node.js 18 ou superior.
30
+
31
+ ```bash
32
+ python3 -m venv .venv
33
+ . .venv/bin/activate
34
+ python -m pip install -r requirements.txt
35
+ ```
36
+
37
+ No Windows PowerShell:
38
+
39
+ ```powershell
40
+ py -m venv .venv
41
+ .venv\\Scripts\\Activate.ps1
42
+ python -m pip install -r requirements.txt
43
+ ```
44
+
45
+ ## Execução
46
+
47
+ A porta da aplicação é `3030`:
48
+
49
+ ```bash
50
+ python -m streamlit run app/main.py --server.port 3030
51
+ ```
52
+
53
+ Ou através do launcher Node:
54
+
55
+ ```bash
56
+ node scripts/cli.mjs --check
57
+ node scripts/cli.mjs
58
+ ```
59
+
60
+ O pacote está publicado no npm como `@danhachuel/thunderbolt` e pode ser executado directamente via `npx`:
61
+
62
+ ```bash
63
+ npx --yes @danhachuel/thunderbolt
64
+ ```
65
+
66
+ Para instalar automaticamente o ambiente completo — Python 3.11+, ambiente virtual, dependências Python do Thunderbolt, dependências Python do MoneyPrinterTurbo, Streamlit e `imageio-ffmpeg` — execute:
67
+
68
+ ```bash
69
+ npx --yes @danhachuel/thunderbolt install
70
+ ```
71
+
72
+ Por defeito, o instalador cria automaticamente a pasta `~/.thunderbolt` — no Windows, `%LOCALAPPDATA%\\THUNDERBOLT` —, clona o MoneyPrinterTurbo para `THUNDERBOLT/MoneyPrinterTurbo`, cria o ambiente em `THUNDERBOLT/.venv` e guarda o estado em `THUNDERBOLT/storage`. No Windows, se Python 3.11+ não estiver instalado, o instalador tenta instalá-lo automaticamente através do `winget`. A instalação normal é segura para actualizações: preserva `storage`, Blueprints, Brandings, configurações e artefactos, removendo apenas `.venv` e o clone técnico do MoneyPrinterTurbo para os recriar. A antiga pasta sem dados do utilizador em `C:\Users\<utilizador>\AppData\Local\hermes` pode ser removida. O caminho `AppData\Local\npm-cache\_npx` é apenas cache temporária do npm, não é a pasta de instalação final. Para apagar dados intencionalmente, use o parâmetro explícito `--purge-data`; nunca o use numa actualização normal. Para usar uma cópia existente do MoneyPrinterTurbo:
73
+
74
+ ```bash
75
+ MONEYPRINTER_PATH=/caminho/MoneyPrinterTurbo npx --yes @danhachuel/thunderbolt install
76
+ ```
77
+
78
+ Para instalar apenas a UI sem clonar o MoneyPrinterTurbo:
79
+
80
+ ```bash
81
+ npx --yes @danhachuel/thunderbolt install --skip-moneyprinter
82
+ ```
83
+
84
+ Para verificar o ambiente sem iniciar a aplicação:
85
+
86
+ ```bash
87
+ npx --yes @danhachuel/thunderbolt doctor
88
+ ```
89
+
90
+ Para executar apenas o diagnóstico do ambiente:
91
+
92
+ ```bash
93
+ npx --yes --package=@danhachuel/thunderbolt thunderbolt --check
94
+ ```
95
+
96
+ Para instalar globalmente e disponibilizar o comando `thunderbolt`:
97
+
98
+ ```bash
99
+ npm install --global @danhachuel/thunderbolt
100
+ thunderbolt
101
+ ```
102
+
103
+ No Windows PowerShell, se `npx` for bloqueado por `npx.ps1`, use directamente `npx.cmd`:
104
+
105
+ ```powershell
106
+ npx.cmd --yes @danhachuel/thunderbolt@0.2.13 install
107
+ npx.cmd --yes @danhachuel/thunderbolt@0.2.13 doctor
108
+ npx.cmd --yes @danhachuel/thunderbolt@0.2.13
109
+ ```
110
+
111
+ Como alternativa, pode permitir scripts para o seu utilizador:
112
+
113
+ ```powershell
114
+ Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
115
+ ```
116
+
117
+ Ou apenas para a sessão actual:
118
+
119
+ ```powershell
120
+ Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
121
+ ```
122
+
123
+ Após `install`, o launcher usa o ambiente virtual instalado em `~/.thunderbolt/.venv` — no Windows, `%LOCALAPPDATA%\\THUNDERBOLT\\.venv` — e inicia a UI em `localhost:3030`. No Windows, a raiz é `%LOCALAPPDATA%\\THUNDERBOLT`; no computador indicado, o caminho será `C:\\Users\\danha\\AppData\\Local\\THUNDERBOLT`. Isto evita a redirecção de `HOME` que pode ocorrer no MobaXterm.
124
+ O instalador não instala drivers de GPU, Docker, chaves de API, modelos Whisper ou credenciais de plataformas; esses componentes continuam dependentes do sistema e da configuração do utilizador. Para desenvolvimento a partir do clone, continue a usar `node scripts/cli.mjs`.
125
+
126
+ ## Armazenamento local
127
+
128
+ O sistema cria automaticamente:
129
+
130
+ ```text
131
+ storage/
132
+ ├── blueprints/ # blueprints JSON lidos pela aba Blueprints
133
+ ├── state/
134
+ │ ├── channels.json
135
+ │ ├── tasks.json
136
+ │ ├── queues.json
137
+ │ ├── batches.json
138
+ │ ├── uploads.json
139
+ │ ├── metadata_edits.json
140
+ │ └── settings.json
141
+ ├── metadata_cleaner/
142
+ │ ├── originals/ # cópias dos vídeos terceiros enviados
143
+ │ └── outputs/ # versões com metadados limpos
144
+ └── artifacts/ # ficheiros produzidos e caminhos referenciados
145
+ ```
146
+
147
+ Para usar outro local, defina `THUNDERBOLT_STORAGE_DIR`. O estado é escrito de forma atómica e ficheiros JSON inválidos são preservados com cópia `.corrupt-*` antes de serem recriados.
148
+
149
+ ## Blueprints e Brandings
150
+
151
+ Coloque ficheiros `.json` em `storage/blueprints/canais`, `storage/blueprints/nichos` ou `storage/blueprints/importados`. A aba **Blueprints** relê a pasta e mostra o conteúdo estruturado. A instalação já inclui 13 Blueprints seed, copiados apenas quando o ficheiro ainda não existe; actualizações não substituem Blueprints locais. Também é possível importar através do carregador da própria interface.
152
+
153
+ A mesma aba possui a subaba **Brandings**. No formulário **Criar blueprint a partir de link**, cole um link de canal, handle ou vídeo do YouTube, informe o nicho e o idioma e escolha entre **Apenas Blueprint** ou **Blueprint + Branding completo**. O primeiro modo grava o blueprint forense local; o segundo grava também um ficheiro de Branding com identidade do canal, handle, descrição, hashtags, keywords, prompts de imagem de perfil e banner, direcção visual de thumbnails, assets e checklist de revisão.
154
+
155
+ O fluxo foi modelado a partir do blueprint de clonagem com Branding anexado, incluindo a distinção entre entrada de canal/vídeo, normalização do link, metadados de nicho/idioma, perfil do canal, estratégia de conteúdo, pesquisa, identidade visual e brand pack. Placeholders de serviços externos são tratados como configuração local; chaves presentes em workflows importados não devem ser commitadas.
156
+
157
+ ## Limpador de metadado
158
+
159
+ A aba **Limpador de metadado** foi adaptada do workflow `YTBMetadataGenerator.json`. Ela recebe apenas um vídeo externo já pronto, guarda uma cópia original separada, remove os metadados do contentor com FFmpeg e grava uma nova cópia com título, descrição, links, timestamps, tags e outros campos opcionais. O original nunca é alterado e os vídeos produzidos pela aba **Novo vídeo** não aparecem nesta área.
160
+
161
+ A descrição segue a composição do workflow de referência: preview, secção de links e capítulos/timestamps. O resultado inclui um manifesto JSON para utilizar os metadados num fluxo posterior de upload. A versão local não usa o trigger RSS, o Apify ou a actualização automática de um vídeo YouTube; em vez disso, o utilizador fornece directamente o vídeo terceiro e controla a edição antes de publicar.
162
+
163
+ ## Canais YouTube
164
+
165
+ Sem chave, o cadastro manual continua disponível. Para importar nome, handle e estatísticas através da API oficial do YouTube Data API, configure `youtube_api_key` na aba **Configurações** ou em `YOUTUBE_API_KEY`.
166
+
167
+ ## TikTok
168
+
169
+ A aba **Configurações** contém apenas o TikTok Client ID e o TikTok Client Secret. Redirect URI, scopes, autorização OAuth e tokens são geridos no TikTok for Developers Playground. O adaptador rejeita o upload quando faltam credenciais ou OAuth, em vez de indicar sucesso falso.
170
+
171
+ ## Segurança
172
+
173
+ Não coloque chaves, cookies, tokens YouTube ou segredos TikTok no Git. Use a configuração local, variáveis de ambiente ou um ficheiro fora do repositório. O `.gitignore` exclui o storage de estado real, ambientes virtuais e ficheiros de segredo.