원클릭으로
notion-integration
Integração completa com Notion usando MCP customizado (notion-automation-suite)
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Integração completa com Notion usando MCP customizado (notion-automation-suite)
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Python best practices e styleguide
Gera critérios de aceite Given/When/Then para requisitos funcionais. Inclui happy path, edge cases e falhas.
Cria Architecture Decision Records (ADRs) para decisões técnicas. Inclui alternativas, justificativa e consequências.
Extrai especificações de um sistema legado (código existente) quando não há documentação adequada.
Converte input não estruturado (texto, notas, docs parciais) em requisitos funcionais (FR) e perguntas abertas. Não inventa requisitos.
Ruff como linter e formatter padrão para Python (substitui Flake8, Black, isort)
| name | notion-integration |
| description | Integração completa com Notion usando MCP customizado (notion-automation-suite) |
| triggers | ["notion","card","task","project","course","episode","series","work","studies","personal","youtuber"] |
| source | notion-automation-suite |
Integração completa com Notion usando MCP customizado notion-automation-suite.
Última Atualização: 2026-01-27
MCP Server: notion-automation-suite
Localização: notion-automation-suite (Infraestrutura)
Tudo que envolve cards no Notion deve ficar no contexto do projeto respectivo.
Estudos/Apostilas e Materiais de Cursos/[PyCodeBR] Fast Master/Modulo-01-Introducao/conteudo-e-resumos.mdEstudos/Apostilas e Materiais de Cursos/[Nome do Curso]/... ou Estudos/Resumos de Cursos/...IDs dos cards (page_id): Sempre usar os IDs armazenados no contexto privado do projeto, nunca na skill pública (informação sigilosa).
config/studies/estacao-pessoal/ (NOTION_CARDS_EXISTENTES_ESTACAO_PESSOAL.md, checklist, roadmap).config/studies/catalogo/[fonte]/ (ex.: fullcycle/mba-engenharia-software-ia.md, pycodebr).config/studies/projetos/em-andamento/[projeto]/ (ex.: threat-modeling-ai).Ao criar ou atualizar cards de um curso/formação:
conteudo-e-resumos.md).Aplicar esta skill quando:
notion-automation-suiteQUANDO O USUÁRIO PEDIR PARA CRIAR/ATUALIZAR CARDS NO NOTION, EXECUTAR ATÉ O FINAL.
❌ ERRADO:
✅ CORRETO:
Localização: notion-automation-suite (Infraestrutura)
Como usar no Cursor: Configurar o servidor MCP no Cursor (Settings → MCP) apontando para o notion-automation-suite (stdio ou Docker). Ver docs/mcp/SETUP_CURSOR.md no repositório do MCP. As tools só ficam disponíveis no Composer quando o MCP está conectado ao workspace (ex.: Infraestrutura).
Configuração:
notion-automation-suite/config/README.mdnotion-automation-suite/config/defaults/env.examplenotion-automation-suite/config/.env ou config/notion-mcp.env (gitignored)Variáveis de Ambiente Obrigatórias:
NOTION_API_TOKEN - Token da API do NotionNOTION_WORK_DATABASE_ID - ID da base de trabalhoNOTION_STUDIES_DATABASE_ID - ID da base de estudosNOTION_PERSONAL_DATABASE_ID - ID da base pessoalNOTION_YOUTUBER_DATABASE_ID - ID da base YouTube⚠️ IMPORTANTE: Os IDs das databases ficam no projeto do MCP via variáveis de ambiente. O cursor-multiagent-system não deve ter acesso direto a esses IDs, apenas usar o MCP construído.
Execução:
# Via stdio
notion-mcp-server
# Via Docker
docker run -i --rm \
-e NOTION_API_TOKEN=secret_xxx \
-e NOTION_WORK_DATABASE_ID=... \
-e NOTION_STUDIES_DATABASE_ID=... \
-e NOTION_PERSONAL_DATABASE_ID=... \
-e NOTION_YOUTUBER_DATABASE_ID=... \
notion-mcp-server
O MCP expõe tools especializadas por domínio:
work_create_project - Criar projeto de trabalhowork_create_sprint - Criar sprint com subtarefaswork_create_task - Criar tarefa/subitem vinculadowork_update_status - Atualizar statuswork_assign_project - Alterar projeto vinculadowork_query_projects - Consultar cards por filtrosstudy_create_course - Criar curso (apenas data, sem horário)study_create_course_complete - Criar curso completo com fases/seções/aulasstudy_create_phase - Criar fase vinculada a cursostudy_create_section - Criar seção vinculadastudy_create_class - Criar aula (com horário, respeita regras 19h-21h)study_reschedule_section - Reagendar aulas de uma seçãostudy_query_schedule - Consultar aulas por período/statusstudy_update_card - Atualizar card de estudo (status, período, descrição/resumo). Uso: marcar aula/módulo como Concluído, preencher resumo e período. Status Studies: "Concluido" (sem acento).personal_create_task - Criar tarefa pessoalpersonal_create_subtask - Criar subtarefa vinculadapersonal_use_template - Usar template genérico (ex: weekly_planning)personal_create_medical_appointment - Criar consulta médicayoutuber_create_series - Criar série completa com episódios automáticosyoutuber_create_episode - Criar episódio vinculado a sérieyoutuber_schedule_recordings - Gerar episódios sequenciaisyoutuber_update_episode_status - Atualizar status do episódioyoutuber_reschedule_episode - Reagendar gravação/publicaçãoyoutuber_query_schedule - Consultar episódios por filtrosCampo de Título: Nome do projeto
Campo de Relação: item principal
Uso: Projetos profissionais (ExpenseIQ, HubTravel, etc.)
Nome do projeto (title) - Título do cardStatus (status) - Estado atualCliente (select) - Astracode, Pessoal, FIAPProjeto (select) - ExpenseIQ, HubTravel, AvulsoPrioridade (select) - Baixa, Normal, Média, Alta, UrgentePeriodo (date) - Data/hora de execuçãoitem principal (relation) - Vínculo com card paiNão iniciado (padrão)Em AndamentoEm RevisãoConcluídoPausadoCanceladocliente: "Astracode" (padrão para trabalho profissional)projeto: "Avulso" (quando não especificado)prioridade: "Normal"status: "Não iniciado"# Via MCP tool
work_create_project(
title="Implementar Feature X",
cliente="Astracode",
projeto="ExpenseIQ",
prioridade="Alta",
icon="🚀"
)
Campo de Título: Nome da tarefa
Campo de Relação: tarefa principal
Campo de Data: Data (não Periodo)
Uso: Tarefas pessoais, organização, hábitos
Nome da tarefa (title) - Título da tarefaStatus (status) - Estado atualAtividade (select) - Tipo de atividadeData (date) - Data da tarefa (campo específico)Descrição (rich_text) - Descrição detalhadatarefa principal (relation) - Tarefa principal (pai)Não iniciado (padrão)Em AndamentoConcluídoCanceladoDesenvolvimentoOrganizaçãoEstudoTestePlanejamentoFinanceiroSaúdeLazer# Via MCP tool
personal_create_task(
title="Organizar Documentos",
atividade="Organização",
data={
"start": "2025-10-15T19:00:00-03:00",
"end": "2025-10-15T20:00:00-03:00"
},
icon="👤"
)
Campo de Título: Project name
Campo de Relação: Parent item
Campo de Data: Período (com acento)
Uso: Cursos, formações, aulas, estudos
Project name (title) - Nome do curso/aulaStatus (status) - Estado atualCategorias (multi_select) - Tags do cursoPrioridade (select) - Nível de prioridadePeríodo (date) - Quando estudarTempo Total (rich_text) - Duração estimada (HH:MM:SS)Parent item (relation) - Item pai (curso/seção)Não AdquiridoPara Fazer (padrão)Em RevisãoEm PausaEm AndamentoDescontinuadoConcluido (sem acento)Formação/Curso (sem horário)
├── Fase/Bloco (sem horário)
│ ├── Seção/Módulo (sem horário)
│ │ ├── Aula 1 (COM horário 19:00-21:00)
│ │ ├── Aula 2 (COM horário 19:00-21:00)
│ │ └── Aula 3 (COM horário 19:00-21:00)
# Curso (sem horário)
study_create_course(
title="FIAP IA para Devs",
categorias=["FIAP", "Inteligência Artificial"],
periodo={"start": "2025-10-16", "end": "2025-12-15"},
tempo_total="40:00:00",
icon="🎓"
)
# Aula (com horário)
study_create_class(
parent_id=section_id,
title="Aula 1: Introdução",
start_time="2025-10-16T19:00:00-03:00",
duration_minutes=120, # 2 horas (19:00-21:00)
icon="🎯"
)
Campo de Título: Nome do projeto
Campo de Relação: item principal
Uso: Séries de jogos e episódios do canal
Nome do projeto (title) - Nome da série/episódioStatus (status) - Estado atualPeriodo (date) - Data/hora de GRAVAÇÃOData de Lançamento (date) - Data/hora de PUBLICAÇÃOResumo do Episodio (rich_text) - Sinopse do episódio/sérieLink do Video (url) - URL do vídeo publicadoitem principal (relation) - Série (para episódios)Para GravarNão iniciado (padrão)GravandoPara EdiçãoEditandoEditadoPublicadoConcluídoPeriodo (Data de Gravação):
2025-10-16T21:00:00-03:00 até 2025-10-16T23:30:00-03:00Data de Lançamento (Publicação):
2025-10-17T12:00:00-03:00Série Principal (sem Data de Lançamento)
└─ Periodo: início da gravação do 1º ep → fim da gravação do último ep
├── Episódio 01 (com Periodo E Data de Lançamento)
├── Episódio 02 (com Periodo E Data de Lançamento)
└── Episódio 03 (com Periodo E Data de Lançamento)
Periodo (gravação), NÃO tem Data de LançamentoPeriodo e Data de Lançamento)Resumo do Episodio# Série
youtuber_create_series(
title="The Legend of Heroes",
sinopse="Série completa sobre...",
total_episodes=10,
first_recording="2025-10-16T21:00:00-03:00",
recording_interval_days=1,
publication_hour=12,
icon="🎮"
)
# Episódio
youtuber_create_episode(
parent_id=series_id,
episode_number=1,
title="Episódio 01",
recording_date="2025-10-16T21:00:00-03:00",
publication_date="2025-10-17T12:00:00-03:00",
resumo_episodio="Sinopse da série completa...", # Obrigatório no ep 1
icon="📺"
)
SEMPRE usar GMT-3 (São Paulo)
NUNCA usar UTC
Com Horário:
'start': '2025-10-16T19:00:00-03:00'
'end': '2025-10-16T21:00:00-03:00'
Sem Horário (apenas data):
'start': '2025-10-16'
'end': '2025-10-30'
from datetime import datetime, timezone, timedelta
SAO_PAULO_TZ = timezone(timedelta(hours=-3))
dt = datetime(2025, 10, 16, 19, 0, 0, tzinfo=SAO_PAULO_TZ)
data_notion = dt.isoformat() # '2025-10-16T19:00:00-03:00'
Emojis SEMPRE como ícone da página
NUNCA no título do card
# ✅ CORRETO
{
"icon": {"emoji": "🎓"}, # Ícone aqui
"properties": {
"Project name": {
"title": [{"text": {"content": "Meu Curso"}}] # Sem emoji
}
}
}
# ❌ ERRADO
"title": [{"text": {"content": "🎓 Meu Curso"}}]
WORK:
🚀, 💼, 🏢📋, ✅, 🔧PERSONAL:
👤, 📝, 🎯✅, 📌, ⚡STUDIES:
🎓, 📚, 🎯📖, 📑📑, 📂🎯, 📝, 💡YOUTUBER:
🎬, 🎮, 📺📺, 🎥, ▶️Sub-itens DEVEM ter campo de relação preenchido
| Base | Para Criar Sub-item | Campo a Usar | Valor |
|---|---|---|---|
| WORK | Sub-item de projeto | item_principal | ID do projeto pai |
| PERSONAL | Subtarefa | tarefa_principal | ID da tarefa pai |
| STUDIES | Aula de curso | parent_item | ID do curso/seção |
| YOUTUBER | Episódio de série | item_principal | ID da série |
# 1. Criar projeto principal
project_id = work_create_project(
title="Projeto Principal",
cliente="Astracode",
projeto="ExpenseIQ"
)
# 2. Criar sub-item LINKADO
task_id = work_create_task(
parent_id=project_id, # ← VÍNCULO
title="Sub-item 1"
)
| Base | Campo de Data | Formato |
|---|---|---|
| WORK | Periodo | Com horário (ex: 2025-10-16T09:00:00-03:00) |
| PERSONAL | Data | Com horário (ex: 2025-10-16T19:00:00-03:00) |
| STUDIES | Período (com acento) | Sem horário para cursos/seções, com horário para aulas |
| YOUTUBER | Periodo + Data de Lançamento | Ambos com horário |
Antes de criar qualquer card:
| Base | Você Passa | Vira no Notion |
|---|---|---|
| WORK | title | Nome do projeto |
cliente | Cliente | |
projeto | Projeto | |
prioridade | Prioridade | |
periodo | Periodo | |
item_principal | item principal | |
| PERSONAL | title | Nome da tarefa |
atividade | Atividade | |
data | Data | |
tarefa_principal | tarefa principal | |
| STUDIES | title | Project name |
categorias | Categorias | |
prioridade | Prioridade | |
tempo_total | Tempo Total | |
periodo | Período | |
parent_item | Parent item | |
| YOUTUBER | title | Nome do projeto |
periodo | Periodo | |
data_lancamento | Data de Lançamento | |
resumo_episodio | Resumo do Episodio | |
item_principal | item principal |
# Via MCP tool
project = work_create_project(
title="Implementar Feature X",
cliente="Astracode",
projeto="ExpenseIQ",
prioridade="Alta",
icon="🚀"
)
# Criar subtarefas
for task_title in ["Mapear requisitos", "Implementar", "Testar"]:
work_create_task(
parent_id=project["id"],
title=task_title,
icon="📋"
)
# Curso (sem horário)
course = study_create_course(
title="FIAP IA para Devs - Fase 5",
categorias=["FIAP", "Inteligência Artificial"],
periodo={"start": "2025-01-15", "end": "2025-03-31"},
tempo_total="80:00:00",
icon="🎓"
)
# Seção (sem horário)
section = study_create_section(
parent_id=course["id"],
title="Seção 1: Fundamentos",
periodo={"start": "2025-01-15", "end": "2025-01-31"},
tempo_total="16:00:00",
icon="📑"
)
# Aula (com horário, respeita 19h-21h)
class_card = study_create_class(
parent_id=section["id"],
title="Aula 1: Introdução",
start_time="2025-01-15T19:00:00-03:00",
duration_minutes=120, # 2 horas (19:00-21:00)
icon="🎯"
)
# Série completa (gera episódios automaticamente)
series = youtuber_create_series(
title="The Legend of Heroes",
sinopse="Série completa sobre...",
total_episodes=10,
first_recording="2025-10-16T21:00:00-03:00",
recording_interval_days=1,
publication_hour=12,
icon="🎮"
)
# Ou criar episódio individual
episode = youtuber_create_episode(
parent_id=series["id"],
episode_number=1,
title="Episódio 01",
recording_date="2025-10-16T21:00:00-03:00",
publication_date="2025-10-17T12:00:00-03:00",
resumo_episodio="Sinopse da série completa...", # Obrigatório no ep 1
icon="📺"
)
data_lancamento, Episódios COM data_lancamento# ❌ ERRADO - YOUTUBER
'status': 'Para Fazer' # Não existe nesta base
# ✅ CORRETO - YOUTUBER
'status': 'Não iniciado'
# ❌ ERRADO - PERSONAL
'periodo': {...} # Campo não existe
# ✅ CORRETO - PERSONAL
'data': {...} # Campo correto
# ❌ ERRADO - STUDIES
'item_principal': 'id' # Campo errado
# ✅ CORRETO - STUDIES
'parent_item': 'id' # Campo correto
# ❌ ERRADO
'title': '🎓 Meu Curso'
# ✅ CORRETO
'title': 'Meu Curso', 'icon': '🎓'
# ❌ ERRADO - Seção de curso
'periodo': {'start': '2025-10-16T19:00:00-03:00'} # Não deve ter horário
# ✅ CORRETO - Seção de curso
'periodo': {'start': '2025-10-16'} # Apenas data
notion-automation-suiteconfig/notion/ (compromissos, projetos e informações pessoais por frente)config/CONTEXTO_GERAL.md (horários e rotina - NUNCA duplicar aqui)Sempre usar o MCP customizado notion-automation-suite para garantir que todas as regras sejam respeitadas automaticamente.