SkillAgentSearch skills...

Potion

A functional, easy to use Python wrapper of Notion Api.

Install / Use

/learn @sailist/Potion
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Potion

A functional, easy to use Python wrapper of Notion Api.

  • easy-to-use low-level api
  • integration local-backup function
  • [ ] render notion object to markdown/html, etc..

Install

pip install notion-potion

Usage

Quick Start

Authentication

from potion import Request, NotionHeader

token = ''

nh = NotionHeader(authorization=token)
req = Request(nh.headers)

Create an integration follow this official tutorial to get token.

A 'retrieve' example. (Full code can be found here)

from potion.api import *

print(req.get(url=database_retrieve('1bb0f79b87584afe8609d6e248285cfb')))

And a 'update' example. (Full code)

from potion.api import *
from potion.objects import *

property_list = [
    sche.AnySchema('+1', args=Null),  # delete property
    sche.URL('Photo'),  # update property type of `Photo`
    sche.MultiSelect('Store availability', [  # update Options of MultiSelect perproty `Store availability`
        sche.Option('Duc Loi Market'),
        sche.Option('Rainbow Grocery'),
        sche.Option('Gus\'s Community Market'),
        sche.Option('The Good Life Grocery', color='orange'),
    ])
]
properties = Properties(*property_list)

# Create Database object
data = Database(properties=properties)

# Commit update operation
print(data)
print(req.patch(url=database_update('1bb0f79b87584afe8609d6e248285cfb'),
                data=data))

Basic Example

Here lists examples reimplemented by potion from official shell examples

|Database|Pages|Blocks|Users| Search | Comment | |---|---|---|---|------------------------------------------------------|------------------------------------------------------------| |Query a Database|Retrieve a page|Retrieve a block|Retrieve a user| Search | Retrieve Comments | |Create a database|Create a page|Update a block|List all users| Create Comment | |Retrieve a database|Update page|Retrieve block children|Retrieve your token's bot user|| |Update database|Retrieve a page property item|Append block children||| |||Delete a block||| ||||||

Object Oriented Api

potion also provides object oriented operations for Notion page and Notion database:

from potion.beans import NotionPage, NotionDatabase

token = ''
# Retrieve
page = NotionPage(auth=token, id=...)
# Create a new one
page = NotionPage(auth=token, parent=...)
print(page)

# set property
page.set_text('title', 'temp')
page.set_number('End', 42)
page.flush_property()

# append content
page.append_code("""print('hello world!')""", 'python')
page.flush_children()

# page.parent
## page.parent_database
## page.parent_page
database = page.create_database()
# TODO
# database operations
database.add_property()
database.update_property()
database.create_page()

Backup

python -m potion.backup {token} {backup_dir}
# python -m potion.backup secret_umqPgKzCvvCaAc1FE408aRvYHymxaak5HriWIvaVzs ./backup

It will use dbrecord to generate two sqlite database file under backup_dir.

You can read backuped data simpily by using the code below:

from dbrecord import PList

backup_dir = ...
lis = PList(f'{backup_dir}/notion-backup.sqlite')
print(lis[0])

Api List

See api.md for details.

Development & Contribute

git clone https://github.com/sailist/potion
python setup

Any issue and pr is welcome.

TODOs

  • [ ] Some uncommon used Object, like Filter, Emoji, File, etc..(While, you can implement your idea without this Object by pass dict as args.)
  • [ ] Parse json responses recurrsive into notion objects.

Related

Related Skills

View on GitHub
GitHub Stars18
CategoryDevelopment
Updated4mo ago
Forks0

Languages

Python

Security Score

92/100

Audited on Nov 28, 2025

No findings