Plugin para Claude Code
O plugin do Campbooks para Claude Code liga o seu agente de programação à sua caixa de entrada via MCP. Uma vez instalado, duas skills tratam do trabalho pesado: /campbooks:setup guia-o pelo processo de onboarding e /campbooks:triage executa a sua sessão diária de caixa de entrada.
Instalar
Numa sessão de Claude Code:
/plugin marketplace add notacamp/campbooks
/plugin install campbooks@campbooks
O Claude Code irá solicitar duas coisas:
- URL do servidor Campbooks —
https://app.campbooks.not-a-camp.compara o Campbooks Cloud, ou o URL da sua própria instância (sem barra no final). - Chave MCP — uma credencial sem expiração; ver abaixo.
Criar a chave MCP
Os tokens OAuth de curta duração expiram após duas horas e não podem ser utilizados numa configuração estática de agente. Uma chave MCP mantém-se válida até a rodar ou eliminar.
- Na sua instância do Campbooks abra Definições → Acesso à API e clique em Novo cliente.
- Dê-lhe um nome — "Agente Claude Code" funciona bem.
- Selecione os scopes de que necessita (ver abaixo) e clique em Criar.
- Na página seguinte verá a chave MCP: uma string única na forma
<client-id>.<client-secret>. Copie-a agora — é mostrada apenas uma vez. Se a perder, regenere o client secret na mesma página de Definições. - Cole a chave no campo
mcp_keyna configuração do plugin.
Para rodar a chave mais tarde: vá a Definições → Acesso à API, encontre o cliente e regenere o seu secret. A chave antiga deixa de funcionar imediatamente.
Conjuntos de scopes
Os scopes são um teto para o que o agente pode fazer. Scope mais restrito = menos tools em tools/list = menos contexto usado por sessão. Escolha o que realmente precisa.
Conjunto completo (recomendado para utilizadores avançados):
emails:read emails:write emails:send
tags:read tags:write
documents:read documents:write
document_types:read document_types:write
contacts:read contacts:write
calendar:read calendar:write
reminders:read reminders:write
tasks:read tasks:write
folders:read folders:write
email_accounts:read email_accounts:write
scout:read scout:write
scheduled_emails:read scheduled_emails:write
Apenas triage (leitura + skim, sem envio):
emails:read emails:write
tags:read documents:read calendar:read tasks:read reminders:read
Apenas leitura (somente consulta, sem alterações):
emails:read documents:read calendar:read tasks:read
Os três tools de contexto — get_overview, get_setup_status e guide — não requerem scope e estão sempre disponíveis para qualquer cliente autenticado.
Skills
O plugin inclui duas skills que pode invocar diretamente numa sessão de Claude Code.
/campbooks:setup — onboarding guiado
Execute-a na primeira vez, ou sempre que o plugin não estiver a ligar. Guia-o pelos seguintes passos, um de cada vez:
- Verificar a ligação MCP — chama
get_setup_status. Se a chamada falhar, guia-o pela criação do cliente de API e colagem da chave MCP. - Ligar uma caixa de correio — se nenhuma conta de email estiver ligada, pergunta se está no Campbooks Cloud ou a correr a sua própria instância:
- Caminho Cloud: chama
connect_email_account(mode: "web")e dá-lhe o URL OAuth para abrir num browser. Aguarde o fluxo OAuth completar e confirme. - Caminho auto-alojado: oferece o script auxiliar de OAuth local (ver OAuth Local abaixo).
- Caminho Cloud: chama
- Processamento de IA — indica a sua configuração de IA atual e oferece ativar IA gerida ou orienta-o para Definições → IA para uma chave personalizada.
- Taxonomia — se ainda não tiver tipos de documento, etiquetas ou pastas, pergunta que tipo de trabalho a caixa de entrada trata e propõe um conjunto inicial (para aprovação antes de criar qualquer coisa).
- Primeira sessão de skim — carrega o baralho de skim, mostra os principais clusters e conduz pelas primeiras decisões.
A skill nunca cria nada sem um "sim" explícito da sua parte.
/campbooks:triage — sessão diária de caixa de entrada
Execute-a sempre que quiser trabalhar o que está à espera. Percorre estes passos em ordem (qualquer passo pode ser saltado):
- Visão geral — chama
get_overviewe reporta contagem de não lidos, threads a aguardar resposta, documentos pendentes, eventos de calendário de hoje, lembretes em atraso e tarefas sugeridas. Um parágrafo curto ou lista rápida — apenas o suficiente para o orientar. - Baralho de skim — carrega clusters agrupados por anel (prioridade, notificações, newsletters, etc.), propõe ações e aplica-as em lote ou uma a uma após a sua confirmação.
- A aguardar resposta — lista threads onde enviou a última mensagem e ainda não recebeu resposta. Redige respostas inline; envia apenas após um "sim, envia" explícito.
- Documentos pendentes — lista documentos a aguardar revisão. Aprove, rejeite ou reclassifique, um a um ou em lote.
- Tarefas e lembretes sugeridos — mostra tarefas e lembretes extraídos pela IA; confirma ou dispensa cada um após ver o título.
- Resumo final — emails tratados, respostas enviadas, documentos aprovados, tarefas confirmadas.
Como é uma sessão
Aqui está uma execução típica de manhã:
> /campbooks:triage
Tem 14 emails não lidos, 2 threads a aguardar resposta sua, 3 documentos
pendentes de revisão (incluindo uma fatura da ACME de €1.290) e um lembrete
em atraso: "Entregar declaração de IVA" venceu ontem.
Baralho de skim — 4 clusters:
Anel de prioridade
• Faturas ACME — 2 emails — Scout sugere manter
Anel de notificações
• Alertas de PR do GitHub — 9 emails — sugerir arquivar
• Recibos de pagamento Stripe — 4 emails — sugerir arquivar
Anel de newsletters
• Digests de produto — 6 emails — sugerir arquivar
Aplicar estas ações (exceto o manter da ACME)?
> sim
Arquivados 19 emails em 3 clusters. 2 emails mantidos.
A aguardar resposta — 2 threads:
1. Jane na ACME — "Re: proposta Q3" — há 4 dias
2. Onboarding bancário — "Os seus documentos" — há 2 dias
Redigir um seguimento para o thread da ACME?
> sim
"Olá Jane, só a fazer um seguimento da proposta do Q3 — posso fazer uma
chamada esta semana se ajudar. Faz saber."
Enviar esta resposta?
> sim
Enviado. A avançar para documentos...
O agente mostra o que está prestes a fazer antes de cada escrita e aguarda a sua resposta.
OAuth Local (apenas auto-alojado)
Se os callbacks OAuth do seu servidor auto-alojado não estão acessíveis a partir da internet pública, pode criar um token de atualização localmente e passá-lo ao servidor via API MCP.
Utilizadores Cloud: use o fluxo
connect_email_account(mode: "web")— a skill/campbooks:setuptrata disso automaticamente.
Pré-requisitos
- Python 3 (apenas biblioteca padrão — sem
pip installnecessário). - As credenciais OAuth do próprio servidor —
GOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRETouZOHO_CLIENT_ID/ZOHO_CLIENT_SECRETdo ambiente do servidor. Um token criado com umclient_iddiferente falhará quando o servidor tentar atualizá-lo. http://localhost:8765/callbackadicionado aos URIs de redirecionamento permitidos da aplicação OAuth (Google Cloud Console → Credenciais → o seu cliente OAuth → URIs de redirecionamento autorizados; Consola de Desenvolvimento Zoho → Consola de API → o seu cliente → URIs de Redirecionamento).
Executar
python3 integrations/claude-plugin/scripts/campbooks_oauth.py google \
--client-id YOUR_GOOGLE_CLIENT_ID \
--client-secret YOUR_GOOGLE_CLIENT_SECRET
# Zoho — especifique a região do centro de dados do seu servidor
python3 integrations/claude-plugin/scripts/campbooks_oauth.py zoho \
--client-id YOUR_ZOHO_CLIENT_ID \
--client-secret YOUR_ZOHO_CLIENT_SECRET \
--region eu
Omita --client-id / --client-secret e o script solicita-os de forma segura. Abre o seu browser, completa o fluxo de consentimento e imprime uma linha de JSON:
{"provider": "google", "refresh_token": "1//0e..."}
A skill /campbooks:setup chama connect_email_account(mode: "token", ...) com esse token automaticamente — não precisa de colar o token no chat. Guarde-o em segurança: concede acesso total à caixa de correio.