Skip to main content

Narkdown

Narkdown

PyPI PyPi - Python Version code style: black PyPI - License

| English | 한국어 |

A tool to use Notion as a Markdown editor.


⚠️ NOTE: Narkdown is dependent on notion-py, the unofficial Notion API created by Jamie Alexandre. It can not gurantee it will stay stable. If you need to use in production, I recommend waiting for their official release.


Installation

pip install narkdown
# pip3 install narkdown

Usage

⚠️ NOTE: the latest version of narkdown requires Python 3.5 or greater.

Quick Start

CLI

narkdown-image-0

How To Find Your Notion v2 Token - Red Gregory

Python

example.py

narkdown-image-1

python3 example.py

Database template page for test

Here is an database template page for importing pages from the database. Move to that page, duplicate it, and test it.

narkdown-image-2

Features

  • Import page from Notion and save it to the desired path.

  • Import database from Notion and save pages to the desired path.

    • Useful for CMS(Contents Manage System) of static pages such as blog or docs page.

    • Support import by status of content.

    • Support filter contents.

  • Import child page in Notion page recursively. And import linked page as a Notion page link.

  • Support nested block. (e.g. bulleted, numbered, to-do, toggle)

  • Support language selection of code block.

Configuring Narkdown

Narkdown provides some configuration for how to extract documents. You can configure Narkdown via narkdown.config.json .

Create narkdown.config.json and run python3 -m narkdown in that directory.

// narkdown.config.json
{
  "exportConfig": {
    "recursiveExport": true,
    "createPageDirectory": true,
    "addMetadata": true,
    "appendCreatedTime": true,
    "generateSlug": true
  },
  "databaseConfig": {
    "categoryColumnName": "Category",
    "statusColumnName": "Status",
    "currentStatus": "✅ Completed",
    "nextStatus": "🖨 Published"
  }
}

Name Description Default
recursiveExport Whether or not to recursively export child page. [true]
createPageDirectory Whether or not to create subdirectories with page titles for each page. [true]
addMetadata Whether or not to add metadata to content. [false]
appendCreatedTime Whether or not to append created time to filename. ( The page must have a created time property.) [false]
generateSlug Whether or not to generate and append slug to metatdata. [false]

Name Description Default
categoryColumnName In Notion database, content can be classified by category by select property. When you create the select property in the Notion database and pass the name of the column, folders are created by category. [""]
statusColumnName In the Notion database, you can manage the status of content with Select property. If you create a Select property in the Notion database and pass the name of the column, you can import contents in a specific state or change the status of the content. (should be used with the currentStatus or nextStatus option.) [""]
currentStatus Import only the content that corresponds to currentStatus value. ( statusColumnName must be set.) [""]
nextStatus Changes content status to nextStatus value after import. ( statusColumnName must be set.) [""]

Set env variable for token_v2

The token_v2 of notion is a variable that should not be shared. You can use os environment variable for notion token.

Narkdown use the NOTION_TOKEN as an environment variable for token_v2. Setting this environment variable allow the CLI to omit token_v2 input.

Advanced

Notion2Github recommended

Github action to synchronize the content of the notion database with github.

Supported Blocks

Block Type Supported Notes
Heading 1 ✅ Yes Converted to heading 2 in markdown.
Heading 2 ✅ Yes Converted to heading 3 in markdown.
Heading 3 ✅ Yes Converted to heading 4 in markdown.
Text ✅ Yes
Divider ✅ Yes Divider after the Heading 1 is not added.
Callout ✅ Yes Callout block will be exported as quote block with emoji.
Quote ✅ Yes
Bulleted list ✅ Yes Support nested block.
Numbered list ✅ Yes Support nested block.
To-do list ✅ Yes Support nested block.
Toggle list ✅ Yes Support nested block.
Code ✅ Yes Support syntax highlighting.
Image ✅ Yes Uploaded image will be downloaded to local. Linked image will be linked not be downloaded.
Web bookmark ✅ Yes Same as link text.
Page ✅ Yes Import "Child page" in Notion page recursively. And import "Linked page" as a Notion page link.
Table (aka database) ✅ Yes
Video ❌ No
Audio ❌ No
File ❌ No
Embed other services ❌ No
Advanced ❌ No
Layout in page ❌ No

License

MIT © younho9

Metadata

Release files for narkdown 1.3.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for narkdown 1.3.5
File Size Uploaded
narkdown-1.3.5.tar.gz 44.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for narkdown 1.3.5
File Interpreter ABI Platform
narkdown-1.3.5-py3-none-any.whl Python 3 none any Details

Total release size: 92.8 kB

Release files / narkdown-1.3.5.tar.gz

Download URL narkdown-1.3.5.tar.gz
Size 44.4 kB
Tags Source
SHA-256 checksum
How to use checksums
27a13b382590b6b894362e45bdf68a46f66428a23246a496cb4f2a75fe243a77
BLAKE2b-256 checksum
How to use checksums
86bee3bd6c0891cc21dfcc17cd97f2b4a63952919e2486726bd454942f800de7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.8.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.0

Release files / narkdown-1.3.5-py3-none-any.whl

Download URL narkdown-1.3.5-py3-none-any.whl
Size 48.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e71ae15a12fae797c6fa2bc8574190f891b524466f90016c023e5c480a165ab
BLAKE2b-256 checksum
How to use checksums
a1b306d5796c62c381eba70837159473ab672c1a963e1cfe385c50b085f60790
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.8.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.0

Release history Release notifications | RSS feed

This release

1.3.5 This release

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.9

2 release files

1.2.8

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release 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