Skip to main content

🧱 notion-starter

Python 3.10+ Requests PyPI Licença MIT

Biblioteca Python resiliente para operar a API oficial do Notion e compartilhar regras de negócio entre interfaces.

📖 Sobre🚀 Funcionalidades🎯 Como usar✅ Qualidade


📋 Índice


📖 Sobre o Projeto

O notion-starter é o núcleo do ecossistema Automações do Notion. Ele oferece uma API Python tipada para trabalhar com páginas, databases, tarefas e conteúdo do Notion com retries, rate limit e erros previsíveis.

Além do cliente base, este repositório concentra a camada compartilhada entre o notion-tasks-cli e o notion-workspace-app: adaptadores GitHub/OpenRouter e notion_starter.services para tarefas, conteúdo, clonagem, ingestão, inventário GitHub, exportação DOCX e IA. As bordas e a configuração de ambiente permanecem nos consumidores.


📁 Estrutura do Projeto

notion-starter/
│
├── 📁 src/notion_starter/       # Biblioteca pública e módulos de domínio
│   ├── 📁 services/             # Casos de uso compartilhados
│   ├── client.py                # Cliente HTTP resiliente do Notion
│   ├── content.py               # Conversão Markdown ↔ blocos
│   ├── properties.py            # Builders de propriedades e schemas
│   └── tasks.py                 # Tarefa e TaskList
│
├── 📁 examples/                 # Scripts de uso da biblioteca
├── 📁 tests/                    # Suíte automatizada sem rede
├── .github/workflows/ci.yml     # Gate em Python 3.10–3.13
├── pyproject.toml               # Pacote, dependências e ferramentas
├── QUALIDADE.md                 # Contrato de qualidade do módulo
├── README.md                    # Este arquivo
└── LICENSE                      # Licença MIT

🚀 Funcionalidades

  • NotionClient — cliente HTTP resiliente com retries, rate limit e erros tipados; inclui obter_pagina e atualizar_pagina para propriedades.
  • Schema — leitura e comparação de schemas de databases com comparar_schema.
  • Tarefas — modelos Tarefa e TaskList para criar, editar, mover e concluir tarefas; na criação, a coluna de título é descoberta pelo schema para também aceitar databases genéricos.
  • Conteúdo — leitura e escrita de blocos, incluindo conversão Markdown ↔ blocos.
  • Propriedades — builders properties.* para title, rich_text, select, status, number, date, relation e outros tipos; textos acima de 2.000 unidades UTF-16 são fatiados automaticamente.
  • Inventário — varredura de páginas, databases e árvore do workspace.
  • Classificação em lotenotion_starter.services.classificacao calcula a distribuição de uma regra sobre linhas já buscadas, lista as linhas sem classificação e só escreve quando o chamador pede explicitamente.
  • Relatórios DOCXnotion_starter.services.relatorios_docx exporta um arquivo por data, combinando propriedades e corpo sem arquivos intermediários.
  • Utilidades — saneamento de texto/JSON, fatiar_utf16, logging e readers.

Exemplo de fluxo: Markdown → blocos tipados da API do Notion → página atualizada.


🎯 Como Usar

Classificação em lote com dry-run

As linhas são buscadas pelo chamador para que o relatório possa ser conferido antes da escrita. O padrão é um dry-run; a aplicação pode ocorrer depois, e o valor é tratado como select por padrão:

from notion_starter.services.classificacao import (
    aplicar_classificacoes,
    classificar_em_lote,
)

relatorio = classificar_em_lote(linhas, regra_de_classificacao)
print(relatorio.distribuicao)
print(relatorio.ids_sem_classificacao)

aplicar_classificacoes(relatorio, cliente=cliente, coluna="Tipo")

Para outro tipo de coluna, passe um montar_propriedade, como properties.status. Linhas sem classificação nunca são alteradas.

Instalação

# Instalação pública da biblioteca
python -m pip install "notion-starter>=0.3.1,<0.4.0"

O release 0.3.1 será publicado no PyPI como wheel e sdist. Ele não depende de checkout Git e não instala Django, React ou a CLI. Para operar o produto completo, use notion-automacoes[app].

Para desenvolvimento, clone o repositório e use python -m pip install -e ".[dev]".

Para desenvolvimento:

# Clone e instale com as dependências de desenvolvimento
git clone https://github.com/Felipe-Alcantara/notion-starter.git
cd notion-starter
python -m pip install -e ".[dev]"

Uso rápido

from notion_starter import NotionClient

client = NotionClient()  # lê NOTION_TOKEN do ambiente

A pasta examples/ contém scripts completos para listar páginas, exportar linhas, sincronizar CSV, gerar a árvore HTML do workspace, gerenciar tarefas e publicar relatórios diários a partir do histórico de um repositório git (relatorios_do_git.py, com --simular para conferir antes de escrever).


⚙️ Configuração

Variável Descrição
NOTION_TOKEN Token de integração interna do Notion (obrigatório)
NOTION_DATABASE_ID Database padrão de tarefas (opcional)

Use variáveis de ambiente ou um arquivo .env local baseado em .env.example. Nunca versione tokens ou IDs reais.


✅ Qualidade

O gate local combina lint e testes:

python -m ruff check .
python -m pytest

A CI repete o gate em Python 3.10, 3.11, 3.12 e 3.13. Consulte QUALIDADE.md para o critério de pronto e a política de dependências deste pacote.


📄 Licença

Este projeto está sob a licença MIT — veja LICENSE.


👤 Autor

Felipe Alcantara


🤝 Contribuições

Contribuições são bem-vindas. Algumas ideias para quem quiser colaborar:

  • ampliar a cobertura de tipos de propriedade do Notion;
  • adicionar tipos de bloco ao conversor Markdown;
  • expandir a escrita de linhas em data sources;
  • melhorar exemplos, testes e documentação.

Leia CONTRIBUTING.md antes de enviar uma mudança.


⭐ Se esta biblioteca foi útil, considere dar uma estrela no GitHub.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

notion_starter-0.3.1.tar.gz (172.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

notion_starter-0.3.1-py3-none-any.whl (137.1 kB view details)

Uploaded Python 3

File details

Details for the file notion_starter-0.3.1.tar.gz.

File metadata

  • Download URL: notion_starter-0.3.1.tar.gz
  • Upload date:
  • Size: 172.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for notion_starter-0.3.1.tar.gz
Algorithm Hash digest
SHA256 4c8bd6d8ad1174ca0abc1173edd71d44d67fa4a1d0b527fa46a7bb2f5f7ad577
MD5 f5e9c1a2ba00db2df9d23b7d13043b9e
BLAKE2b-256 a88775d5702eaeee16cc28979c3ff13cb930c61715be8a35128cb3625c645137

See more details on using hashes here.

Provenance

The following attestation bundles were made for notion_starter-0.3.1.tar.gz:

Publisher: release.yml on Felipe-Alcantara/notion-starter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file notion_starter-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: notion_starter-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 137.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for notion_starter-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 410fd6059576922d919de02b753ef8e19527ab028f2005462f497f87c036504a
MD5 f11d5a82c78ae0fd66bb7350036bd661
BLAKE2b-256 19b5321172ee02d2c0261f0b5317adc0fd8a16b8e799beece18e684a7b91de92

See more details on using hashes here.

Provenance

The following attestation bundles were made for notion_starter-0.3.1-py3-none-any.whl:

Publisher: release.yml on Felipe-Alcantara/notion-starter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 files

0.3.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page