Giter Club home page Giter Club logo

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

Narkdown's Projects

client icon client

Get unlimited response of Notion API

notion-faker icon notion-faker

Generate massive amounts of fake contextual data for Notion

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.