Pipeline completo de publicação no LinkedIn: evaluator → redator → editor → art → director → publisher - Seed com 37 posts em _sugestoes.md - Sorteio de formato com N=3 bloqueados (format-history) - Reciclagem mensal de posts com rotação de formato - Revisão via Telegram com chat livre (Gemini 2.5 Flash) - Publicação via LinkedIn API (OAuth2) - Makefile com targets para Windows/Linux/ARM64 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
155 lines
4.5 KiB
Markdown
155 lines
4.5 KiB
Markdown
# ldpost-squad — Status do Projeto
|
|
|
|
> Atualizado: 2026-05-02
|
|
> Todos os itens devem ser testáveis de forma independente via CLI.
|
|
|
|
---
|
|
|
|
## Fase 0 — Spec & Arquitetura
|
|
|
|
| Item | Status |
|
|
|------|--------|
|
|
| `00-arquitetura-mestre.md` — contratos, convenções, estrutura | [ ] |
|
|
| `00b-shared-module.md` — módulo compartilhado | [ ] |
|
|
| `.env.example` com todas as variáveis necessárias | [ ] |
|
|
| `seed/_sugestoes.md` — 30 posts com resumo + 2 imagens cada | [ ] |
|
|
|
|
---
|
|
|
|
## Módulo Compartilhado (`shared/`)
|
|
|
|
| Item | Status |
|
|
|------|--------|
|
|
| Diretório + `go.mod` | [ ] |
|
|
| Estruturas comuns (`Post`, `Slug`, `WorkspaceLayout`) | [ ] |
|
|
| Utilitários de workspace (resolver paths, criar dirs) | [ ] |
|
|
| Helper `.env` / config loader | [ ] |
|
|
| Testável: `go test ./shared/...` | [ ] |
|
|
|
|
---
|
|
|
|
## CLI 1 — `ldpost-evaluator`
|
|
|
|
Busca trends, sorteia formato, cria post stub no workspace.
|
|
|
|
| Item | Status |
|
|
|------|--------|
|
|
| Diretório + `go.mod` | [ ] |
|
|
| Integração Groq/Gemini para buscar trends | [ ] |
|
|
| Sorteio de formato (carrossel / artigo / lista / storytelling) | [ ] |
|
|
| Cria `$LDPOST_WORKSPACE/<slug>/post.json` com metadados | [ ] |
|
|
| Flag `--topic` para forçar tema manual | [ ] |
|
|
| Flag `--format` para forçar formato | [ ] |
|
|
| Flag `--dry-run` imprime sem salvar | [ ] |
|
|
| Testável: `ldpost-evaluator --topic "IA no RH" --dry-run` | [ ] |
|
|
| Testes escritos | [ ] |
|
|
|
|
---
|
|
|
|
## CLI 2 — `ldpost-redator`
|
|
|
|
Gera rascunho do post a partir do stub criado pelo evaluator.
|
|
|
|
| Item | Status |
|
|
|------|--------|
|
|
| Diretório + `go.mod` | [ ] |
|
|
| Lê `$LDPOST_WORKSPACE/<slug>/post.json` | [ ] |
|
|
| Gera rascunho via Groq/Gemini | [ ] |
|
|
| Salva `$LDPOST_WORKSPACE/<slug>/draft.md` | [ ] |
|
|
| Flag `--post <slug>` (obrigatória) | [ ] |
|
|
| Flag `--model` para escolher modelo LLM | [ ] |
|
|
| Flag `--dry-run` imprime sem salvar | [ ] |
|
|
| Testável: `ldpost-redator --post meu-slug --dry-run` | [ ] |
|
|
| Testes escritos | [ ] |
|
|
|
|
---
|
|
|
|
## CLI 3 — `ldpost-editor`
|
|
|
|
Formata para LinkedIn + loop de revisão interativo.
|
|
|
|
| Item | Status |
|
|
|------|--------|
|
|
| Diretório + `go.mod` | [ ] |
|
|
| Lê `draft.md` do workspace do post | [ ] |
|
|
| Aplica formatação LinkedIn (emojis, quebras, hashtags) | [ ] |
|
|
| Loop de revisão: mostra diff, aceita/rejeita/refina | [ ] |
|
|
| Salva `$LDPOST_WORKSPACE/<slug>/final.md` | [ ] |
|
|
| Flag `--post <slug>` (obrigatória) | [ ] |
|
|
| Flag `--no-interactive` para modo batch | [ ] |
|
|
| Testável: `ldpost-editor --post meu-slug --no-interactive` | [ ] |
|
|
| Testes escritos | [ ] |
|
|
|
|
---
|
|
|
|
## CLI 4 — `ldpost-art`
|
|
|
|
Gera e cropa imagens para o post.
|
|
|
|
| Item | Status |
|
|
|------|--------|
|
|
| Diretório + `go.mod` | [ ] |
|
|
| Lê descrições de imagem do `post.json` | [ ] |
|
|
| Gera imagens via Gemini Imagen (ou Groq) | [ ] |
|
|
| Cropa para formato LinkedIn (1200x627 ou 1080x1080) | [ ] |
|
|
| Salva `$LDPOST_WORKSPACE/<slug>/img/*.png` | [ ] |
|
|
| Flag `--post <slug>` (obrigatória) | [ ] |
|
|
| Flag `--format square|landscape` (default: landscape) | [ ] |
|
|
| Flag `--dry-run` gera prompt sem chamar API | [ ] |
|
|
| Testável: `ldpost-art --post meu-slug --dry-run` | [ ] |
|
|
| Testes escritos | [ ] |
|
|
|
|
---
|
|
|
|
## CLI 5 — `ldpost-director`
|
|
|
|
Aprovação final via Telegram.
|
|
|
|
| Item | Status |
|
|
|------|--------|
|
|
| Diretório + `go.mod` | [ ] |
|
|
| Lê `final.md` + imagens do workspace | [ ] |
|
|
| Envia preview completo via Telegram | [ ] |
|
|
| Aguarda resposta: aprovar / rejeitar / editar | [ ] |
|
|
| Salva status em `$LDPOST_WORKSPACE/<slug>/status.json` | [ ] |
|
|
| Flag `--post <slug>` (obrigatória) | [ ] |
|
|
| Flag `--skip-telegram` aprova localmente sem bot | [ ] |
|
|
| Testável: `ldpost-director --post meu-slug --skip-telegram` | [ ] |
|
|
| Testes escritos | [ ] |
|
|
|
|
---
|
|
|
|
## CLI 6 — `ldpost-publisher`
|
|
|
|
Publica no LinkedIn.
|
|
|
|
| Item | Status |
|
|
|------|--------|
|
|
| Diretório + `go.mod` | [ ] |
|
|
| Lê `final.md` + imagens + `status.json` (deve estar approved) | [ ] |
|
|
| Publica via LinkedIn API (ou imprime instruções manuais) | [ ] |
|
|
| Registra URL do post publicado em `status.json` | [ ] |
|
|
| Flag `--post <slug>` (obrigatória) | [ ] |
|
|
| Flag `--manual` imprime conteúdo formatado sem publicar | [ ] |
|
|
| Flag `--dry-run` valida sem publicar | [ ] |
|
|
| Testável: `ldpost-publisher --post meu-slug --dry-run` | [ ] |
|
|
| Testes escritos | [ ] |
|
|
|
|
---
|
|
|
|
## Integração End-to-End
|
|
|
|
| Item | Status |
|
|
|------|--------|
|
|
| Script de pipeline completo (`run-all.sh` / `.ps1`) | [ ] |
|
|
| Testado com post real do zero ao publicado | [ ] |
|
|
| Documentação de troubleshooting | [ ] |
|
|
|
|
---
|
|
|
|
## Legenda
|
|
|
|
- `[ ]` Não iniciado
|
|
- `[~]` Em progresso
|
|
- `[x]` Concluído
|