@danhachuel/leadmaster 0.0.0-stage → 0.1.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 +59 -0
- package/LICENSE +21 -0
- package/README.md +128 -2
- package/backend/main.py +523 -0
- package/backend/requirements.txt +4 -0
- package/backend/services/__init__.py +1 -0
- package/backend/services/agents.py +235 -0
- package/backend/services/crm_agent.py +175 -0
- package/backend/services/extractors.py +322 -0
- package/backend/services/llm.py +189 -0
- package/backend/services/moneyprinter.py +102 -0
- package/backend/services/openmontage.py +62 -0
- package/backend/services/pipeline.py +515 -0
- package/backend/services/short_video_maker.py +72 -0
- package/backend/services/storage.py +460 -0
- package/backend/services/youtube_upload.py +163 -0
- package/frontend/dist/assets/fa-brands-400-D1LuMI3I.ttf +0 -0
- package/frontend/dist/assets/fa-brands-400-D_cYUPeE.woff2 +0 -0
- package/frontend/dist/assets/fa-regular-400-BjRzuEpd.woff2 +0 -0
- package/frontend/dist/assets/fa-regular-400-DZaxPHgR.ttf +0 -0
- package/frontend/dist/assets/fa-solid-900-CTAAxXor.woff2 +0 -0
- package/frontend/dist/assets/fa-solid-900-D0aA9rwL.ttf +0 -0
- package/frontend/dist/assets/fa-v4compatibility-C9RhG_FT.woff2 +0 -0
- package/frontend/dist/assets/fa-v4compatibility-CCth-dXg.ttf +0 -0
- package/frontend/dist/assets/index-CANBU7DH.js +93 -0
- package/frontend/dist/assets/index-eswbuT3S.css +5 -0
- package/frontend/dist/favicon.svg +20 -0
- package/frontend/dist/index.html +14 -0
- package/package.json +49 -4
- package/scripts/cli.mjs +512 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Todas as mudanças notáveis deste projeto serão documentadas neste ficheiro.
|
|
4
|
+
O formato é baseado no [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/).
|
|
5
|
+
|
|
6
|
+
A etiqueta visual de versão usa patch de dois dígitos (ex.: `0.1.00`); o registry NPM
|
|
7
|
+
normaliza para a forma canônica (ex.: `0.1.0`).
|
|
8
|
+
|
|
9
|
+
## [0.1.00] — 2026-10-23
|
|
10
|
+
|
|
11
|
+
### Adicionado
|
|
12
|
+
|
|
13
|
+
- **Versão inicial do LeadMaster** — SaaS local de prospecção e automação de conteúdo,
|
|
14
|
+
instalável via `npx @danhachuel/leadmaster` e 100% offline (sem nuvem).
|
|
15
|
+
- **Launcher NPM** (`scripts/cli.mjs`): comandos `install`, `start`, `doctor`, `version`,
|
|
16
|
+
`help`; **comando único auto-suficiente** (estilo Thunderbolt) — `npx
|
|
17
|
+
@danhachuel/leadmaster` sem argumentos verifica e prepara tudo sozinho antes de subir;
|
|
18
|
+
**instalação idempotente** (dependências Python e Node só são instaladas/atualizadas
|
|
19
|
+
quando realmente faltam; interface só é reconstruída quando o build não existe ou
|
|
20
|
+
falha por deps desatualizadas); resolução da pasta de dados (`--home` /
|
|
21
|
+
`LEADMASTER_HOME`, padrão `Documents/REPOSITORIO/LeadMaster`); instalação automática
|
|
22
|
+
das dependências Python; porta padrão da UI/API **5055** com auto-incremento (5056,
|
|
23
|
+
5057, ...) quando ocupada; deteção de instância já ativa; abertura automática do
|
|
24
|
+
navegador; encerramento limpo.
|
|
25
|
+
- **Workflow de publicação** (`.github/workflows/publish-npm.yml`): build do frontend,
|
|
26
|
+
validação de metadados, smoke-test do launcher, publicação via `dist-tag next`,
|
|
27
|
+
verificação de tarball e promoção a `latest` por tag `v*`.
|
|
28
|
+
- **Backend FastAPI** (`backend/`):
|
|
29
|
+
- Persistência local em JSON (`storage/leads.json`, `campaigns.json`, `pipeline.json`,
|
|
30
|
+
`config.json`) com escrita atômica e seeds automáticas.
|
|
31
|
+
- CRUD de leads com importação em massa, agente de CRM (sugestão de movimentação e
|
|
32
|
+
enriquecimento via BrasilAPI/LLM).
|
|
33
|
+
- Campanhas de disparo com execução em background, contadores e log por lead.
|
|
34
|
+
- Motor do pipeline de vídeos faceless com 5 etapas (roteiro, thumbnail/título,
|
|
35
|
+
produção wide 16:9, produção shorts 9:16, upload), controle
|
|
36
|
+
iniciar/pausar/parar/repetir, logs por etapa e agendamento de publicação
|
|
37
|
+
(não listado → 1h → público).
|
|
38
|
+
- Integrações: MoneyPrinterTurbo (localhost:8080), Short-Video-Maker (localhost:3123),
|
|
39
|
+
OpenMontage (CLI), upload YouTube com limite de 50/dia e fallback
|
|
40
|
+
`youtube-uploader-mcp`, LLM OpenAI-compatível, OpenOutreach, pipecat.
|
|
41
|
+
- Extratores de leads: Google Maps (`gosom/google-maps-scraper`), Instagram
|
|
42
|
+
(`lucasoal/igmapper`), CNPJ (BrasilAPI + provedor de busca por CNAE/UF +
|
|
43
|
+
`D4Vinci/Scrapling`).
|
|
44
|
+
- Endpoints de diagnóstico (`/api/health`, `/api/doctor`), métricas do painel e
|
|
45
|
+
serving estático da UI construída (modo `npx`).
|
|
46
|
+
- **Frontend React 18 + Vite + TypeScript + Tailwind** (`frontend/`):
|
|
47
|
+
- UI fiel ao protótipo `LeadMaster v1.0` (sidebar `#1e1b4b`, cards brancos, gradientes
|
|
48
|
+
indigo/purple, Font Awesome) com as 7 Leis de UX aplicadas; **favicon de urso** nas
|
|
49
|
+
guias dos navegadores (`frontend/public/favicon.svg`).
|
|
50
|
+
- Páginas: Painel (métricas + gráficos Chart.js), Leads (CRUD + progresso de
|
|
51
|
+
preenchimento), CRM Kanban (`@dnd-kit` — Leads/Em contato/Proposta/Fechado),
|
|
52
|
+
Disparos (campanhas), Extratores (Google Maps/Instagram/CNPJ), Pipeline de vídeos,
|
|
53
|
+
Agentes (disparo/atendimento), Ferramentas (configuração de chaves e caminhos),
|
|
54
|
+
Webhook e Suporte (diagnóstico).
|
|
55
|
+
- Componentes: Sidebar, Header, MetricCard, ProgressBar, Accordion, Modal, Toast,
|
|
56
|
+
StatusBadge, gráficos (barras horizontais e doughnut) e Kanban com drag-and-drop.
|
|
57
|
+
- **Documentação**: `README.md` (instalação, arquitetura, integrações), `AGENTS.md`
|
|
58
|
+
(regras de projeto, versionamento `MAJOR.MINOR.PATCH` com patch de dois dígitos,
|
|
59
|
+
release via GitHub Actions, push obrigatório, CHANGELOG obrigatório) e `LICENSE` (MIT).
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Dan Pariente Hachuel
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,129 @@
|
|
|
1
|
-
#
|
|
1
|
+
# LeadMaster
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**SaaS local de prospecção e automação de conteúdo.** CRM, extratores de leads, agentes de
|
|
4
|
+
IA e um pipeline completo de geração de vídeos faceless (YouTube e Shorts) — instalável via
|
|
5
|
+
`npx`, 100% local, sem nuvem e sem banco de dados externo.
|
|
6
|
+
|
|
7
|
+
  
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Instalação e uso
|
|
12
|
+
|
|
13
|
+
Requisitos: **Node 18+** e **Python 3.11+** no PATH.
|
|
14
|
+
|
|
15
|
+
```cmd
|
|
16
|
+
:: CMD / MobaXterm (Windows)
|
|
17
|
+
npx.cmd --yes --prefer-online @danhachuel/leadmaster@0.1.0 install
|
|
18
|
+
npx.cmd --yes --prefer-online @danhachuel/leadmaster@0.1.0
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Linux / macOS / PowerShell
|
|
23
|
+
npx --yes @danhachuel/leadmaster@0.1.0 install
|
|
24
|
+
npx --yes @danhachuel/leadmaster@0.1.0
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
- `install` prepara a pasta de dados e instala as dependências Python.
|
|
28
|
+
- Sem argumentos, o launcher sobe o servidor local (FastAPI na porta **5055**) e abre o
|
|
29
|
+
navegador automaticamente. Se a porta 5055 estiver ocupada, o LeadMaster sobe
|
|
30
|
+
automaticamente na próxima livre (5056, 5057, ...). Pressione `Ctrl+C` para encerrar.
|
|
31
|
+
- Flags úteis: `--home=<caminho>` (pasta de dados), `--port=<numero>`,
|
|
32
|
+
`doctor` (diagnóstico), `help`.
|
|
33
|
+
|
|
34
|
+
A pasta de dados padrão é `Documents\REPOSITORIO\LeadMaster` (sobrescreva com
|
|
35
|
+
`--home` ou `LEADMASTER_HOME`). Todos os dados — leads, campanhas, pipeline e
|
|
36
|
+
configuração — ficam em `<home>\storage` como arquivos JSON.
|
|
37
|
+
|
|
38
|
+
### Modo desenvolvimento (a partir do repositório)
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install # dependências da raiz (concurrently)
|
|
42
|
+
npm run dev # sobe backend (uvicorn :8000, reload) + frontend (Vite :5173)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
O Vite dev server sobe a UI de desenvolvimento em `http://localhost:5055` (com
|
|
46
|
+
auto-incremento para 5056, 5057... se a porta estiver ocupada) e faz proxy de `/api`
|
|
47
|
+
para `http://127.0.0.1:8000` (backend de desenvolvimento).
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Módulos
|
|
52
|
+
|
|
53
|
+
| Módulo | O que faz |
|
|
54
|
+
|---|---|
|
|
55
|
+
| **Painel** | Status da conexão, taxa de entrega, taxa de erro, total de leads; gráfico de barras (leads por etapa do CRM) e doughnut (campanhas: enviadas × erros). |
|
|
56
|
+
| **Leads** | CRUD completo, importação em massa a partir dos extratores, barra de progresso de preenchimento, enriquecimento por IA. |
|
|
57
|
+
| **CRM Kanban** | Drag-and-drop (@dnd-kit) nas colunas *Leads → Em contato → Proposta → Fechado*; o agente de IA sugere movimentações e enriquece os cards. |
|
|
58
|
+
| **Extratores** | **Google Maps** (palavra-chave + localização, via `gosom/google-maps-scraper`), **Instagram** (URL do perfil, via `lucasoal/igmapper`) e **CNPJ** (BrasilAPI + busca por CNAE/UF + `D4Vinci/Scrapling`). Toda extração gera pré-visualização antes de importar. |
|
|
59
|
+
| **Pipeline de vídeos** | Fluxo de 5 etapas com Iniciar/Pausar/Parar/Repetir: **Roteiro** (7–9k caracteres via LLM) → **Thumbnail/Título** → **Produção Wide 16:9** (MoneyPrinterTurbo/OpenMontage) → **Produção Shorts 9:16** (Short-Video-Maker) → **Upload** (não listado → aguarda 1h → público; até 50/dia, com fallback `youtube-uploader-mcp`). |
|
|
60
|
+
| **Disparos** | Campanhas de disparo (texto/áudio) com templates configuráveis e execução via `eracle/OpenOutreach`. |
|
|
61
|
+
| **Agentes** | Agente de disparo (prompts/templates) e agente de atendimento (texto via LLM ou voz via `pipecat-ai/pipecat`). |
|
|
62
|
+
| **Ferramentas** | Chaves de API, URLs das integrações locais, testes de conexão — tudo salvo em `config.json` local. |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Arquitetura
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
npx @danhachuel/leadmaster
|
|
70
|
+
└─ scripts/cli.mjs # instala deps Python, sobe uvicorn, abre navegador
|
|
71
|
+
└─ backend/main.py # FastAPI: API + serving da UI construída (frontend/dist)
|
|
72
|
+
├─ services/storage.py # JSON local (leads, campanhas, pipeline, config)
|
|
73
|
+
├─ services/pipeline.py # motor das 5 etapas (threads + checkpoints)
|
|
74
|
+
├─ services/moneyprinter.py # POST localhost:8080/api/v1/videos
|
|
75
|
+
├─ services/short_video_maker.py # POST localhost:3123/api/short-video
|
|
76
|
+
├─ services/openmontage.py # CLI local
|
|
77
|
+
├─ services/youtube_upload.py # upload + agendamento não listado → público
|
|
78
|
+
├─ services/extractors.py # Maps / Instagram / CNPJ
|
|
79
|
+
├─ services/crm_agent.py # sugestões + enriquecimento
|
|
80
|
+
├─ services/agents.py # disparo (OpenOutreach) + atendimento
|
|
81
|
+
└─ services/llm.py # LLM OpenAI-compatível
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
- **Portas**: LeadMaster UI/API `:5055` (auto-incrementa: 5056, 5057, ... se ocupada) ·
|
|
85
|
+
backend de desenvolvimento `:8000` · MoneyPrinterTurbo `:8080` · Short-Video-Maker `:3123`.
|
|
86
|
+
- **Degradación graciosa**: se um serviço externo não estiver rodando, a etapa falha com
|
|
87
|
+
mensagem acionável e um botão **Repetir** — nada de falsos sucessos.
|
|
88
|
+
|
|
89
|
+
### Serviços externos (opcionais, todos locais)
|
|
90
|
+
|
|
91
|
+
| Serviço | Como usar no LeadMaster |
|
|
92
|
+
|---|---|
|
|
93
|
+
| [MoneyPrinterTurbo](https://github.com/harry0703/MoneyPrinterTurbo) | Suba em `http://localhost:8080` e configure em *Ferramentas*. |
|
|
94
|
+
| [Short-Video-Maker](https://github.com/lucasoal/short-video-maker) | Suba em `http://localhost:3123`. |
|
|
95
|
+
| [OpenMontage](https://github.com/openmotional/OpenMontage) | Informe o caminho do CLI em *Ferramentas*. |
|
|
96
|
+
| [gosom/google-maps-scraper](https://github.com/gosom/google-maps-scraper) | Informe o caminho do binário em *Ferramentas → Extratores*. |
|
|
97
|
+
| [lucasoal/igmapper](https://github.com/lucasoal/igmapper) | Informe o caminho em *Ferramentas → Extratores*. |
|
|
98
|
+
| BrasilAPI / OpenCNPJ / Scrapling | Consulta por CNPJ e busca por CNAE/UF (configuráveis). |
|
|
99
|
+
| [eracle/OpenOutreach](https://github.com/eracle/OpenOutreach) | Agente de disparo. |
|
|
100
|
+
| [pipecat-ai/pipecat](https://github.com/pipecat-ai/pipecat) | Atendimento por voz. |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## UX
|
|
105
|
+
|
|
106
|
+
A interface replica o protótipo `LeadMaster v1.0` (sidebar escura `#1e1b4b`, cards
|
|
107
|
+
brancos, gradientes indigo/purple) e aplica as **7 Leis de Usabilidade**:
|
|
108
|
+
|
|
109
|
+
1. **Fitts** — CTAs grandes ("Iniciar Novo Vídeo", "Salvar").
|
|
110
|
+
2. **Hick** — configurações avançadas em accordions.
|
|
111
|
+
3. **Zeigarnik** — barras de progresso (pipeline e preenchimento de leads).
|
|
112
|
+
4. **Jakob** — consistência com o modelo mental do protótipo (menu lateral fixo).
|
|
113
|
+
5. **Gradiente de Meta** — "Faltam 2 etapas para o upload 🚀".
|
|
114
|
+
6. **von Restorff** — botão principal com gradiente sobre fundo neutro.
|
|
115
|
+
7. **Miller** — métricas agrupadas em cards (chunking).
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Versionamento e release
|
|
120
|
+
|
|
121
|
+
- Etiqueta visual: `MAJOR.MINOR.PATCH` com **patch de dois dígitos** (`0.1.00` → `0.1.99`
|
|
122
|
+
→ `0.2.00`; `0.9.99` → `1.0.00`). O NPM normaliza para a forma canônica (`0.1.0`).
|
|
123
|
+
- Publicação **sempre** via GitHub Actions (`.github/workflows/publish-npm.yml`):
|
|
124
|
+
dispatch manual com `dist-tag next` → push da tag `vX.Y.ZZ` → promoção a `latest`.
|
|
125
|
+
- Toda versão precisa de entrada no `CHANGELOG.md`. Regras completas em `AGENTS.md`.
|
|
126
|
+
|
|
127
|
+
## Licença
|
|
128
|
+
|
|
129
|
+
[MIT](LICENSE) © Dan Hachuel
|