qcmuu / notion-graph-view

Generate a roam research like network graph view from your Notion pages.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Notion Graph View

github github github

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

πŸ“œ 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 browser, select "Add connections" and add your integration account.

  3. Find your base Page ID from 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 <PNG file path to export>

For instance,

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

graph_out.png would be generated at your specific path.

Importing as a Python Library

You can also import notion_graph as a library.

For instance, drawing your own diagram by matplotlib.

import notion_graph as ng
import networkx as nx
import matplotlib.pyplot as plt

my_ng = ng.NotionGraph(bearer_token="secret_b8p7uLp3j3n95IDgofC9GviXP111Skx6NOt2d20U8e")
graph = my_ng.parse(page_id="856391c93ae64bd1b7ebf699ca0cd861")
# graph is a networkx.classes.graph.Graph object

pos = nx.spring_layout(graph)
labels = nx.get_node_attributes(graph, 'title')
options = {
    "node_size": 50,
    "node_color": "tab:gray",
    "font_size": 10,
    "width": 0.5,
    "with_labels": True,
    "labels": labels
}

nx.draw(graph, pos, **options)
plt.show()
plt.savefig('./graph.png')

Testing Environment

The testing page is Notion-grap-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.png

πŸ”— Supported Link

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 βœ”οΈ βœ”οΈ

About

Generate a roam research like network graph view from your Notion pages.


Languages

Language:Python 100.0%