@danhachuel/thunderbolt 0.2.37 → 0.2.38
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/MANUAL-INSTALACAO.md +9 -5
- package/README.md +6 -5
- package/app/main.py +13 -1
- package/package.json +1 -1
package/MANUAL-INSTALACAO.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
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
4
|
|
|
5
|
-
> **Versão deste manual:** 0.2.
|
|
5
|
+
> **Versão deste manual:** 0.2.38
|
|
6
6
|
> **Pacote npm:** `@danhachuel/thunderbolt`
|
|
7
7
|
> **Porta padrão da UI:** `localhost:3030`
|
|
8
8
|
> **Repositório:** [github.com/DanHachuel/thunderbolt](https://github.com/DanHachuel/thunderbolt)
|
|
@@ -100,13 +100,13 @@ Execute:
|
|
|
100
100
|
Windows PowerShell ou MobaXterm:
|
|
101
101
|
|
|
102
102
|
```powershell
|
|
103
|
-
npx.cmd --yes @danhachuel/thunderbolt@0.2.
|
|
103
|
+
npx.cmd --yes @danhachuel/thunderbolt@0.2.38 install
|
|
104
104
|
```
|
|
105
105
|
|
|
106
106
|
Linux/macOS:
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
|
-
npx --yes @danhachuel/thunderbolt@0.2.
|
|
109
|
+
npx --yes @danhachuel/thunderbolt@0.2.38 install
|
|
110
110
|
```
|
|
111
111
|
|
|
112
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.
|
|
@@ -345,7 +345,7 @@ Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
|
|
|
345
345
|
|
|
346
346
|
## 8. Configuração inicial da UI
|
|
347
347
|
|
|
348
|
-
Na primeira execução, a barra lateral apresenta **Início**, **Pipeline**, **Automação**, **Edição**, **Niche Finder** e **Configurações**. O menu expansível **Edição** contém **Limpador de Metadados**, **Cortes** e **Editor Python**. O menu expansível **Niche Finder** contém **Niche Finder Kaggle** e **Niche Finder Apify**. A aba **Niche Finder Kaggle** mantém a análise do dataset Kaggle; **Niche Finder Apify** é uma segunda alternativa independente, com actor, dataset, parâmetros, credencial, execução e resultados próprios. Abra **Configurações > Configurações Técnicas** e reveja. O menu **Pipeline** contém **Criação de Vídeos**, **Criação de Músicas** e **Upload**. O menu **Configurações** contém **Canais**, **Blueprints**, **MCP** e **Configurações Técnicas**. Para YouTube, preencha primeiro o par **OAuth Client ID + OAuth Client Secret** se pretende autorizar uploads. A **YouTube Data API Key** é uma credencial Google Cloud diferente e fica numa área opcional, apenas para o método oficial de métricas; Client ID + Client Secret não formam uma API Key.
|
|
348
|
+
Na primeira execução, a barra lateral apresenta **Início**, **Pipeline**, **Automação**, **Edição**, **Models AI**, **Niche Finder** e **Configurações**. O menu expansível **Edição** contém **Limpador de Metadados**, **Cortes** e **Editor Python**. O menu expansível **Models AI** contém **Personagens** e **Redes Sociais**, nessa ordem; ambas estão reservadas para desenvolvimento futuro e não executam operações. O menu expansível **Niche Finder** contém **Niche Finder Kaggle** e **Niche Finder Apify**. A aba **Niche Finder Kaggle** mantém a análise do dataset Kaggle; **Niche Finder Apify** é uma segunda alternativa independente, com actor, dataset, parâmetros, credencial, execução e resultados próprios. Abra **Configurações > Configurações Técnicas** e reveja. O menu **Pipeline** contém **Criação de Vídeos**, **Criação de Músicas** e **Upload**. O menu **Configurações** contém **Canais**, **Blueprints**, **MCP** e **Configurações Técnicas**. Para YouTube, preencha primeiro o par **OAuth Client ID + OAuth Client Secret** se pretende autorizar uploads. A **YouTube Data API Key** é uma credencial Google Cloud diferente e fica numa área opcional, apenas para o método oficial de métricas; Client ID + Client Secret não formam uma API Key.
|
|
349
349
|
|
|
350
350
|
| Configuração | Finalidade |
|
|
351
351
|
|---|---|
|
|
@@ -396,12 +396,16 @@ Ao abrir a página, o Thunderbolt não prepara dados públicos, não descarrega
|
|
|
396
396
|
|
|
397
397
|
Os parâmetros da UI são número de clusters entre 2 e 10, suporte mínimo entre 0,01 e 0,50, país, engagement, intervalo de datas e tags, todos dentro da área principal da aba. O núcleo normaliza os dados, calcula engagement, aplica filtros, faz transformação logarítmica e standardização, executa K-Means e calcula itemsets/regras com FP-Growth. Não são apresentados resultados até ao primeiro clique em **Analisar Nichos**; o mesmo botão aplica alterações posteriores aos filtros. Os resultados são DataFrames de clusters, itemsets frequentes, regras de associação e dados analisados; o gráfico de dispersão é criado nativamente com Plotly.
|
|
398
398
|
|
|
399
|
-
As dependências adicionais — `scikit-learn`, `mlxtend`, `plotly`, `seaborn`, `matplotlib` e `kagglehub` — são instaladas pelo procedimento normal de `npx`. Em instalações existentes, execute novamente `npx.cmd --yes @danhachuel/thunderbolt@0.2.
|
|
399
|
+
As dependências adicionais — `scikit-learn`, `mlxtend`, `plotly`, `seaborn`, `matplotlib` e `kagglehub` — são instaladas pelo procedimento normal de `npx`. Em instalações existentes, execute novamente `npx.cmd --yes @danhachuel/thunderbolt@0.2.38 install`; o instalador detecta e reutiliza o que já estiver válido.
|
|
400
400
|
|
|
401
401
|
### Niche Finder Apify
|
|
402
402
|
|
|
403
403
|
A alternativa Apify não usa o dataset, parâmetros, execução ou estado da alternativa Kaggle. Configure o **Apify API Token**, o **Apify Actor ID**, o intervalo de consulta e o limite da execução em **Configurações Técnicas**. Na aba, informe até três palavras-chave, período, máximo de resultados, Shorts, duração, idioma das legendas, ordenação e filtros de legendas. O botão **Pesquisar no Apify** inicia manualmente o actor `streamers~youtube-scraper`, consulta o estado do run, carrega o dataset, normaliza os vídeos, limpa SRT, calcula VSC Ratio, tenta resumir transcrições através do LLM configurado e disponibiliza resultados JSON/CSV. O histórico resumido é guardado em `storage/state/niche_apify_runs.json`; não há gravação automática no Airtable do workflow anexado.
|
|
404
404
|
|
|
405
|
+
## Models AI: Personagens e Redes Sociais
|
|
406
|
+
|
|
407
|
+
O menu **Models AI** foi adicionado abaixo de **Edição**. As abas **Personagens** e **Redes Sociais** aparecem na ordem solicitada e mostram apenas uma mensagem de reserva para desenvolvimento futuro; não executam operações nem alteram a pipeline.
|
|
408
|
+
|
|
405
409
|
## Edição: Limpador de Metadados, Cortes e Editor Python
|
|
406
410
|
|
|
407
411
|
A aba **Limpador de Metadados** continua funcional e foi movida para **Edição**. As abas **Cortes** e **Editor Python** estão visíveis na mesma ordem e mostram apenas uma mensagem de reserva para desenvolvimento futuro; não executam operações.
|
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@ A primeira versão implementa a camada UI independente com:
|
|
|
17
17
|
| Canais | Subabas de importação pública sem API Key, Data API opcional e cadastro manual independente |
|
|
18
18
|
| Criação de Vídeos / Criação de Músicas | Subabas Criar vídeo e Vídeos; lotes; 51 rótulos de idioma; Pexels/Pixabay, full IA com Estilo IA e Apenas Música com agente musical; a segunda página reutiliza o mesmo fluxo com título próprio |
|
|
19
19
|
| Automação | Lista de vídeos e canais, selectores editáveis de Blueprint/voz padrão, Automação ON, horário diário HH:MM e worker local baseado no relógio do computador |
|
|
20
|
+
| Models AI | Menu expansível com Personagens e Redes Sociais reservados para desenvolvimento futuro |
|
|
20
21
|
| Niche Finder | Menu expansível com duas alternativas independentes: Niche Finder Kaggle e Niche Finder Apify, com parâmetros, execução e resultados separados |
|
|
21
22
|
| Edição | Menu expansível abaixo de Automação com Limpador de Metadados funcional, Cortes reservado e Editor Python reservado |
|
|
22
23
|
| Upload | YouTube via `youtube-automation-agent` adaptado internamente, OAuth directo de redundância, Upload directo experimental, TikTok, Instagram e Facebook Pages no front end |
|
|
@@ -26,9 +27,9 @@ A primeira versão implementa a camada UI independente com:
|
|
|
26
27
|
|
|
27
28
|
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.
|
|
28
29
|
|
|
29
|
-
## Navegação da UI 0.2.
|
|
30
|
+
## Navegação da UI 0.2.38
|
|
30
31
|
|
|
31
|
-
A barra lateral mantém os níveis principais, nesta ordem: **Início**, **Pipeline**, **Automação**, **Edição**, **Niche Finder** e **Configurações**. **Pipeline** é expansível e contém **Criação de Vídeos**, **Criação de Músicas** e **Upload**. **Edição** é expansível e contém **Limpador de Metadados**, **Cortes** e **Editor Python**, nessa ordem. **Niche Finder** é expansível e contém **Niche Finder Kaggle** e **Niche Finder Apify**. **Configurações** é expansível e contém **Canais**, **Blueprints**, **MCP** e **Configurações Técnicas**. O Início reúne o dashboard e as filas do Pipeline, sem botões de acções rápidas.
|
|
32
|
+
A barra lateral mantém os níveis principais, nesta ordem: **Início**, **Pipeline**, **Automação**, **Edição**, **Models AI**, **Niche Finder** e **Configurações**. **Pipeline** é expansível e contém **Criação de Vídeos**, **Criação de Músicas** e **Upload**. **Edição** é expansível e contém **Limpador de Metadados**, **Cortes** e **Editor Python**, nessa ordem. **Models AI** é expansível e contém **Personagens** e **Redes Sociais**, nessa ordem. **Niche Finder** é expansível e contém **Niche Finder Kaggle** e **Niche Finder Apify**. **Configurações** é expansível e contém **Canais**, **Blueprints**, **MCP** e **Configurações Técnicas**. O Início reúne o dashboard e as filas do Pipeline, sem botões de acções rápidas.
|
|
32
33
|
|
|
33
34
|
## Instalação
|
|
34
35
|
|
|
@@ -115,9 +116,9 @@ thunderbolt
|
|
|
115
116
|
No Windows PowerShell, se `npx` for bloqueado por `npx.ps1`, use directamente `npx.cmd`:
|
|
116
117
|
|
|
117
118
|
```powershell
|
|
118
|
-
npx.cmd --yes @danhachuel/thunderbolt@0.2.
|
|
119
|
-
npx.cmd --yes @danhachuel/thunderbolt@0.2.
|
|
120
|
-
npx.cmd --yes @danhachuel/thunderbolt@0.2.
|
|
119
|
+
npx.cmd --yes @danhachuel/thunderbolt@0.2.38 install
|
|
120
|
+
npx.cmd --yes @danhachuel/thunderbolt@0.2.38 doctor
|
|
121
|
+
npx.cmd --yes @danhachuel/thunderbolt@0.2.38
|
|
121
122
|
```
|
|
122
123
|
|
|
123
124
|
Como alternativa, pode permitir scripts para o seu utilizador:
|
package/app/main.py
CHANGED
|
@@ -1654,6 +1654,10 @@ def main():
|
|
|
1654
1654
|
("Cortes", ":material/content_cut:", "Cortes"),
|
|
1655
1655
|
("Editor Python", ":material/code:", "Editor Python"),
|
|
1656
1656
|
]
|
|
1657
|
+
models_ai_items = [
|
|
1658
|
+
("Personagens", ":material/person:", "Personagens"),
|
|
1659
|
+
("Redes Sociais", ":material/share:", "Redes Sociais"),
|
|
1660
|
+
]
|
|
1657
1661
|
settings_items = [
|
|
1658
1662
|
("Canais", ":material/ondemand_video:", "Canais"),
|
|
1659
1663
|
("Blueprints", ":material/library_books:", "Blueprints"),
|
|
@@ -1669,6 +1673,7 @@ def main():
|
|
|
1669
1673
|
("Pipeline", ":material/account_tree:", "Pipeline"),
|
|
1670
1674
|
("Automação", ":material/schedule:", "Automação"),
|
|
1671
1675
|
("Edição", ":material/edit:", "Edição"),
|
|
1676
|
+
("Models AI", ":material/smart_toy:", "Models AI"),
|
|
1672
1677
|
("Niche Finder", ":material/search:", "Niche Finder"),
|
|
1673
1678
|
("Configurações", ":material/settings:", "Configurações"),
|
|
1674
1679
|
]
|
|
@@ -1681,7 +1686,7 @@ def main():
|
|
|
1681
1686
|
"Configurações Técnicas": "Configurações Técnicas",
|
|
1682
1687
|
}
|
|
1683
1688
|
current_page = aliases.get(st.session_state.get("page", "Início"), st.session_state.get("page", "Início"))
|
|
1684
|
-
if current_page not in {item[0] for item in top_pages + pipeline_items + edition_items + niche_finder_items + settings_items}:
|
|
1689
|
+
if current_page not in {item[0] for item in top_pages + pipeline_items + edition_items + models_ai_items + niche_finder_items + settings_items}:
|
|
1685
1690
|
current_page = "Início"
|
|
1686
1691
|
st.session_state["page"] = current_page
|
|
1687
1692
|
|
|
@@ -1705,6 +1710,10 @@ def main():
|
|
|
1705
1710
|
with st.expander("Edição", expanded=current_page in {item[0] for item in edition_items}, icon=":material/edit:"):
|
|
1706
1711
|
for child_target, child_icon, child_label in edition_items:
|
|
1707
1712
|
render_nav_button(child_target, child_icon, child_label, child=True)
|
|
1713
|
+
elif target == "Models AI":
|
|
1714
|
+
with st.expander("Models AI", expanded=current_page in {item[0] for item in models_ai_items}, icon=":material/smart_toy:"):
|
|
1715
|
+
for child_target, child_icon, child_label in models_ai_items:
|
|
1716
|
+
render_nav_button(child_target, child_icon, child_label, child=True)
|
|
1708
1717
|
elif target == "Niche Finder":
|
|
1709
1718
|
with st.expander("Niche Finder", expanded=current_page in {item[0] for item in niche_finder_items}, icon=":material/search:"):
|
|
1710
1719
|
for child_target, child_icon, child_label in niche_finder_items:
|
|
@@ -1727,6 +1736,9 @@ def main():
|
|
|
1727
1736
|
"Limpador de Metadados": render_metadata_cleaner,
|
|
1728
1737
|
"Cortes": lambda: render_edit_placeholder("Cortes", "Área reservada para a futura funcionalidade de cortes de vídeo."),
|
|
1729
1738
|
"Editor Python": lambda: render_edit_placeholder("Editor Python", "Área reservada para o futuro editor Python."),
|
|
1739
|
+
"Models AI": lambda: render_edit_placeholder("Models AI", "Seleccione uma das abas Models AI no menu expansível."),
|
|
1740
|
+
"Personagens": lambda: render_edit_placeholder("Personagens", "Área reservada para a futura funcionalidade de personagens."),
|
|
1741
|
+
"Redes Sociais": lambda: render_edit_placeholder("Redes Sociais", "Área reservada para a futura funcionalidade de redes sociais."),
|
|
1730
1742
|
"Upload": render_upload,
|
|
1731
1743
|
"Canais": render_channels,
|
|
1732
1744
|
"Blueprints": render_blueprints,
|
package/package.json
CHANGED