Uma ferramenta de linha de comando (CLI) robusta para interagir com o Gmail e Google Drive.
O diferencial deste projeto รฉ sua arquitetura "Dual-Mode":
- Modo Humano: Saรญda formatada com tabelas, cores e spinners (via Rich).
- Modo Agente (IA): Saรญda em JSON limpo (
--json) para ser consumido facilmente por LLMs e scripts.
Como a ferramenta usa poetry e gerenciamento moderno, a instalaรงรฃo recomendada รฉ via pipx para garantir isolamento e disponibilidade global no shell.
- Python 3.10+
pipx(sudo apt install pipx)
pipx install git+https://github.com/ayrtonnotrya/gmail-cli.gitApรณs instalar, o comando gmail estarรก disponรญvel no seu terminal.
Antes de usar, vocรช precisa autenticar com o Google.
- Obtenha suas credenciais OAuth 2.0 no Google Cloud Console.
๐ก Dica: Para um passo-a-passo detalhado de como criar o projeto e habilitar as APIs, leia o Guia de Configuraรงรฃo (SETUP_GUIDE.md).
- Baixe o arquivo
credentials.json. - Execute o comando de login:
gmail auth login --credentials /caminho/para/credentials.jsonIsso salvarรก o token de sessรฃo de forma segura seguindo o padrรฃo XDG (~/.config/gmail-cli/).
gmail --help # Exibe ajuda geral
gmail auth login # Autenticar com Google
gmail search <query> # Buscar emails
gmail read <message_id> # Ler email especรญfico
gmail thread <message_id> # Ver thread completa de um email
gmail download <msg_id> <att_id> # Fazer download de anexogmail search "fatura cartรฃo" --limit 5Saรญda:
Searching for: fatura cartรฃo
โโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโ
โ ID โ Date โ From โ Subject โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ 18abc123def456 โ 2025-11-15 10:30:0 โ banco@example.comโ Fatura do Cartรฃo โ
โ 18abc789ghi012 โ 2025-11-10 14:20:1 โ loja@shop.com โ Confirmaรงรฃo Cartรฃo โ
โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโ
gmail search "projeto apollo" --since 7d --jsonSaรญda:
[
{
"id": "18abc123def456",
"date": "2025-11-15T10:30:00Z",
"from": "team@company.com",
"subject": "Update: Projeto Apollo"
},
{
"id": "18abc789ghi012",
"date": "2025-11-14T15:45:00Z",
"from": "manager@company.com",
"subject": "Re: Apollo - Next Steps"
}
]# Emails nรฃo lidos
gmail search "is:unread" --limit 10
# Emails com anexos
gmail search "has:attachment" --json
# Emails de um remetente especรญfico
gmail search "from:boss@company.com" --limit 5
# Combinaรงรฃo de critรฉrios
gmail search "from:finance subject:invoice newer_than:30d" --json
# Emails importantes recentes
gmail search "is:important newer_than:7d" --limit 10Por padrรฃo, o search retorna todos os emails que atendem ร consulta. Se mรบltiplos emails da mesma thread correspondem, todos aparecem nos resultados. Use --first-per-thread para mostrar apenas o primeiro email de cada thread:
# Buscar emails, mostrando apenas o primeiro de cada thread
gmail search "projeto apollo" --first-per-thread
# รtil para depois usar o comando thread
gmail search "has:attachment" --first-per-thread --limit 20
# Agora vocรช tem uma lista limpa de threads, escolha uma:
gmail thread <MESSAGE_ID>
# Combinaรงรฃo com outras flags
gmail search "from:cliente@empresa.com" --first-per-thread --since 30d --jsonBenefรญcios:
- Resultados mais limpos (uma entrada por conversa)
- Facilita uso do comando
threadposteriormente - Cada thread aparece apenas uma vez, mesmo que mรบltiplos emails correspondam ร query
gmail read 18abc123def456Saรญda:
Reading message: 18abc123def456
โญโโโโโโโโโโโโโโโโโโโ Email Details โโโโโโโโโโโโโโโโโโโโฎ
โ Subject: Update: Projeto Apollo โ
โ From: team@company.com โ
โ Date: 2025-11-15T10:30:00Z โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Body:
Olรก equipe,
Segue atualizaรงรฃo do projeto Apollo...
gmail read 18abc123def456 --jsonSaรญda:
{
"id": "18abc123def456",
"subject": "Update: Projeto Apollo",
"from": "team@company.com",
"date": "2025-11-15T10:30:00Z",
"body": "Olรก equipe,\n\nSegue atualizaรงรฃo do projeto Apollo...",
"attachments": [
{
"filename": "report.pdf",
"mimeType": "application/pdf",
"size": 524288,
"attachmentId": "ANGjdJ8xK9mN2pQ3r4s",
"isInline": false
}
]
}O Gmail CLI agora exibe informaรงรตes sobre anexos e imagens inline, incluindo:
- Nome do arquivo
- Tipo MIME
- Tamanho
- ID de anexo (para download futuro)
gmail read 18abc123def456Saรญda:
Reading message: 18abc123def456
โญโโโโโโโโโโโโโโโโโโโ Email Details โโโโโโโโโโโโโโโโโโโโฎ
โ Subject: Monthly Report โ
โ From: reports@company.com โ
โ Date: 2025-11-15T10:30:00Z โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Body:
Please find attached the monthly report.
Attachments:
โโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโณโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโ
โ Filename โ Type โ Size โ Attachment ID โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ report.pdf โ application/pdf โ 512 KB โ ANGjdJ8xK9mN2pQ... โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโ
gmail read 18abc123def456 --jsonSaรญda:
{
"id": "18abc123def456",
"subject": "Monthly Report",
"from": "reports@company.com",
"date": "2025-11-15T10:30:00Z",
"body": "Please find attached the monthly report.",
"attachments": [
{
"filename": "report.pdf",
"mimeType": "application/pdf",
"size": 524288,
"attachmentId": "ANGjdJ8xK9mN2pQ3r4sT5uV6w",
"isInline": false
}
]
}Nota: Imagens inline (aquelas embutidas no corpo do email) sรฃo marcadas com "isInline": true e incluem um contentId para referรชncia.
Vocรช pode fazer download de anexos de duas formas: por Attachment ID ou por Filename (mais fรกcil!).
A forma mais simples - basta saber o nome do arquivo:
# 1. Buscar emails com anexos
gmail search "has:attachment" --limit 5
# 2. Fazer download direto pelo nome do arquivo
gmail download <MESSAGE_ID> --by-name "report.pdf"Exemplo:
gmail download 18abc123def456 --by-name "invoice.pdf"Saรญda:
Downloading attachment...
Searching for attachment: invoice.pdf
โญโโโโโโโโโโโโโโโ Attachment Downloaded โโโโโโโโโโโโโโโโฎ
โ โ Download successful! โ
โ โ
โ File: invoice.pdf โ
โ Location: /home/user/Downloads/invoice.pdf โ
โ Size: 512.00 KB โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Com opรงรตes adicionais:
# Pasta customizada
gmail download <MSG_ID> --by-name "data.csv" --output-dir /tmp
# Modo JSON
gmail download <MSG_ID> --by-name "report.pdf" --jsonAlternativamente, vocรช pode usar o attachment ID:
# 1. Buscar emails com anexos
gmail search "has:attachment" --limit 5
# 2. Ler o email e obter o Attachment ID
gmail read <MESSAGE_ID>
# 3. Fazer download do anexo
gmail download <MESSAGE_ID> <ATTACHMENT_ID>Por padrรฃo, os arquivos sรฃo salvos em ~/Downloads.
gmail download 18abc123def456 ANGjdJ8xK9mN2pQ3r4sT5uV6w --output-dir /tmp/attachments
# ou
gmail download 18abc123def456 --by-name "report.pdf" --output-dir /tmp/attachmentsgmail download 18abc123def456 ANGjdJ8xK9mN2pQ3r4sT5uV6w --filename relatorio_mensal.pdfgmail download 18abc123def456 --by-name "report.pdf" --jsonSaรญda:
{
"success": true,
"filepath": "/home/user/Downloads/report.pdf",
"filename": "report.pdf",
"size": 524288,
"message_id": "18abc123def456",
"attachment_id": "ANGjdJ8xK9mN2pQ3r4sT5uV6w"
}Criamos exemplos prรกticos de como agentes de IA podem usar o Gmail CLI:
- examples/agent_search.py - Buscar e processar emails em Python
- examples/agent_read.py - Ler emails e extrair informaรงรตes
- examples/agent_workflow.sh - Workflow completo em Shell
- examples/llm_integration.py - Integraรงรฃo com LLMs
Veja mais detalhes em examples/README.md.
Problema: Error: credentials not found ou Token expired
Soluรงรฃo:
gmail auth login --credentials /caminho/para/credentials.jsonProblema: Apรณs instalaรงรฃo, o comando nรฃo estรก disponรญvel
Soluรงรฃo:
# Certifique-se de que ~/.local/bin estรก no PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# Ou reinstale
pipx install --force git+https://github.com/ayrtonnotrya/gmail-cli.gitProblema: Busca retorna lista vazia
Soluรงรฃo:
- Verifique se a query estรก correta
- Tente uma query mais ampla (ex:
gmail search "is:inbox" --limit 5) - Verifique se vocรช tem permissรฃo de leitura no Gmail
Problema: Message not found
Soluรงรฃo:
- Verifique se o MESSAGE_ID estรก correto
- Use
gmail searchprimeiro para obter IDs vรกlidos - Certifique-se de que vocรช tem acesso ao email
git clone https://github.com/ayrtonnotrya/gmail-cli.git
cd gmail-cli
poetry install
poetry run gmail --helpContribuiรงรตes sรฃo bem-vindas! Por favor, leia nosso Guia de Contribuiรงรฃo para detalhes sobre nosso padrรฃo de commits (PT-BR) e fluxo de desenvolvimento.
Distribuรญdo sob a licenรงa MIT. Veja LICENSE para mais informaรงรตes.