Autor: Alexandre Santana
Ferramenta para extrair, tratar e enriquecer conversas do Slack, incluindo anexos (áudio, vídeo, imagens, documentos) e geração de resumo executivo em JSON.
- Exporta mensagens de canais/DMs a partir de
DATA_INICIO. - Baixa todos os anexos e os armazena em subpastas independentes.
- Processa anexos:
- Áudio/vídeo → transcrição com Whisper (OpenAI).
- Imagens → descrição com GPT‑4o‑Vision, usando cache perceptual para evitar chamadas repetidas.
- Documentos → extração de texto, imagens internas dos documentos e, para alguns formatos, formatação em Markdown via GPT‑4o.
- Gera JSON final
TRATADO_PRA_USO_<canal>__<id>__YYYY-mm-dd---HH-MM-SS.jsoncontendo:- Mensagens tratadas.
- Anexos transcritos / interpretados.
resumo_executivoestruturado conforme o promptPROMPT_ENRIQUECIMENTO.
- Todas as etapas são orquestradas pelo script único (
main()).
O processo de enriquecimento semântico adiciona camadas de significado aos dados extraídos:
- Reconhecimento de Entidades: Identifica pessoas, produtos, projetos, departamentos e sistemas.
- Mapeamento de Relacionamentos: Detecta como as entidades se relacionam.
- Agrupamento de Tópicos: Organiza mensagens relacionadas ao longo do tempo.
- Detecção de Pendências: Identifica tarefas pendentes e seu status.
- Referências Temporais: Destaca datas, prazos e compromissos.
- Resumo Executivo: Fornece uma visão geral concisa dos pontos principais.
- Gestão do Conhecimento: Preserva e torna pesquisável o conhecimento organizacional.
- Análise de Projetos: Acompanhae discussões e decisões ao longo dos prazos dos projetos.
- Monitoramento de Pendências: Identificae e acompanha tarefas pendentes.
- Mapeamento de Relacionamentos: Compreender a rede de pessoas, projetos e departamentos.
- etc
É possível modificar os prompts utilizados pela IA, ajustando as seguintes variáveis:
PROMPT_ENRIQUECIMENTO: Controla a análise semântica.PROMPT_INTERPRETACAO_IMAGEM: Controla a análise de imagens.PROMPT_INTERPRETACAO_IMAGEM_CONTEXTO: Controla se as análise de imagens devem ser contextualizadas com o conteúdo de texto de onde foram extraídas.
.
├── README.md
├── src/ # (opcional) onde você colocar o script .py
├── ffmpeg-master-latest-win64-gpl/ # binários do FFmpeg
├── .env
└── arquivos_salvos/
├── ARQUIVOS_INTERMEDIARIOS/
│ ├── <nome>__<id>__...json # exportações brutas
│ ├── tratado_<nome>__<id>__...json # processados (sem resumo)
│ └── <nome>__<id>__..._anexos/ # anexos baixados
└── PROCESSADOS/
└── TRATADO_PRA_USO_<nome>__<id>__...json # arquivo final com resumo
- Python ≥ 3.10
- FFmpeg acessível em
ffmpeg-master-latest-win64-gpl/bin/ffmpeg.exe - Bibliotecas Python:
| Pacote | Uso principal |
|---|---|
openai |
modelos GPT‑4o / Whisper |
slack_sdk |
API Slack |
python-dotenv |
variáveis de ambiente |
requests |
download de anexos |
pandas |
planilhas CSV/Excel/Parquet/ORC |
pymupdf (fitz) |
|
python-docx |
DOCX |
python-pptx |
PPTX |
odfpy |
ODT/ODS/ODP |
beautifulsoup4, lxml |
HTML/XML |
pyyaml |
YAML |
extract_msg |
MSG |
striprtf |
RTF |
pyarrow |
Parquet/ORC |
fastavro |
Avro |
sqlparse |
SQL format |
pillow, imagehash |
cache de imagens |
pip install openai slack_sdk python-dotenv requests pandas pymupdf \
python-docx python-pptx odfpy beautifulsoup4 lxml pyyaml \
extract_msg striprtf pyarrow fastavro sqlparse pillow imagehash-
Variáveis de ambiente (
.env*)Crie um arquivo chamado ".env" na raiz do projeto com o conteúdo:
SLACK_USER_TOKEN=xoxp-... OPEN_AI_TOKEN=sk-...
-
Parâmetros no script (topo do arquivo)
DATA_INICIO = "2025-02-01" # primeiro dia a considerar CHANNEL_IDS = [ {"id": "xxxxxxxx", "name": "canal"}, # Adicione mais canais conforme necessário ]
-
Instale o FFmpeg
- Baixe a partir do site oficial do FFmpeg ou das builds do BtbN.
- Extraia-o para a pasta
ffmpeg-master-latest-win64-gplna raiz do projeto.
- O script executa três etapas por canal: exportação, processamento e análise + enriquecimento.
- Entre canais há pausa de
CANAL_INTERVALOsegundos para evitar rate‑limit do Slack.
- JSON final em
arquivos_salvos/PROCESSADOS/com estrutura:{ "mensagens": [ ... ], "resumo_executivo": { "tags_tematicas": [...], "entidades": {...}, "relacoes": [...], "referencias_temporais": {...}, "pendencias": [...], "topicos": [...], "resumo_executivo": "..." } }
- Caching de imagens usa perceptual hash (PIL + imagehash), pra economizar tokens em imagens iguais.
- O pipeline foi escrito para utilidade imediata — sem arquitetura rebuscada.
Projeto privado.
🔗https://github.com/alexandrefortes/Slack-DataMinder/blob/main/README.md