Skip to main content

A tool to use Notion as a Markdown editor.

Project description

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
  },
  "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]

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

Project details


Download files

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

Source Distribution

narkdown-1.2.8.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

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

narkdown-1.2.8-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file narkdown-1.2.8.tar.gz.

File metadata

  • Download URL: narkdown-1.2.8.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.9.0

File hashes

Hashes for narkdown-1.2.8.tar.gz
Algorithm Hash digest
SHA256 686d35a68d61f546e7983daa746b67a42f517d7072e82a595b81a1a25853380c
MD5 4638ab3621178cbc3c62378bffefa718
BLAKE2b-256 5c91a304f63692ee119c26007d2120c7175b758f2a4831a27cf222d7ab7f5f9d

See more details on using hashes here.

File details

Details for the file narkdown-1.2.8-py3-none-any.whl.

File metadata

  • Download URL: narkdown-1.2.8-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.9.0

File hashes

Hashes for narkdown-1.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 8c0e7ca02b7ed5c3062f9b53272895805dd9aa4bf322447c713e2d1b4742e3cb
MD5 8731413eb48000ea9ac539827c57183d
BLAKE2b-256 cd497d57c02039c4297a6c7c283eec9e99f9e60c0774ba3e165f379d8cca5c8e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page