GitHub - stevedsun/notion-graph-view: Generate a roam research like network graph view from your Notion pages.

image

Notion Graph View

image
image
image

Export Notion pages to a Roam-Research like graph view.

image

πŸ“œ Usage

Environment

  • Python >= 3.9

Installing

pip install notion-graph

Notion API Setup

  1. Create a notion internal integration and generate an Internal Integration Token.

    πŸ‘‰ Learn more about authorization

  2. Open one notion page on the browser, select "Add connections" and add your integration account.

  3. Find your base Page ID from the browser URL, for example:

if page url is: https://www.notion.so/yourName/PageTitle-8a4b5ff100d648fb8d39d4bfa756ff3f, 8a4b5ff100da48fb8d39d4bfa756ff3f is the Page ID

Quickly Running

python -m notion_graph -p <Page ID> -t <Integration Token> -o <file path to export>

For instance,

python -m notion_graph -p 856391c93ae64bd1b7ebf699ca0cd861 -t secret_b8p7uLp3j3n95IDgofC9GviXP111Skx6NOt2d20U8e -o ./graph_out.html

graph_out.html would be generated at your specific path.

Importing as a Python Library

You can also import notion_graph as a library.

For instance, draw your diagram in Jupyter Notebook.

import notion_graph as ng

my_ng = ng.NotionGraph(bearer_token="secret_b8p7uLp3j3n95IDgofC9GviXP111Skx6NOt2d20U8e")
network = my_ng.parse(page_id="856391c93ae64bd1b7ebf699ca0cd861")
# `network` is a `pyvis.network.Network` object, see more attributes: https://pyvis.readthedocs.io/en/latest/documentation.html
network.repulsion(node_distance=200, spring_length=200)
# this line is for jupeter notebook only
network.prep_notebook()

network.show("graph.html")

Testing Environment

The testing page is Notion-graph-view-demo. You can duplicate the page to your Notion account and run the project to test if everything goes well.

Development Guide

This project's dependencies are managed by PDM.

brew install pdm
pdm install

Running the project by:

pdm run start -p <page_id> -t <notion_token> -o ./graph_out.html

πŸ”— Supported Links

database
page
paragraph
βœ”οΈ
βœ”οΈ
bulleted_list_item
βœ”οΈ
βœ”οΈ
numbered_list_item
βœ”οΈ
βœ”οΈ
to_do
βœ”οΈ
βœ”οΈ
toggle
βœ”οΈ
βœ”οΈ
child_page
βœ”οΈ
βœ”οΈ
child_database
βœ”οΈ
βœ”οΈ
embed
callout
βœ”οΈ
βœ”οΈ
quote
βœ”οΈ
βœ”οΈ
heading_1
βœ”οΈ
βœ”οΈ
heading_2
βœ”οΈ
βœ”οΈ
heading_3
βœ”οΈ
βœ”οΈ
column
βœ”οΈ
βœ”οΈ
column_list
βœ”οΈ
βœ”οΈ
synced_block
link_to_page
βœ”οΈ
βœ”οΈ
table
βœ”οΈ
βœ”οΈ
table_row
βœ”οΈ
βœ”οΈ