Org-Mode Export to Notion

I use org-mode for taking notes and keeping track of tasks. I use Notion for work as an internal wiki.

I take meeting notes in org-mode but want to share them in the internal wiki for work.

Is there a way to do that?

Update: I used ChatGPT with Emacs to come up with the following export backend:

(require 'org)
(require 'ox-org)
(require 'request)

(org-export-define-derived-backend 'notion 'org
  :menu-entry
  '(?n "Export to Notion Meetings"
       ((?n "To Notion Meetings"
            (lambda (a s v b)
              (org-notion-meetings-export a s v b))))))

(defun notion-create-meeting (meeting-title meeting-notes)
  (let* ((notion-api-secret (getenv "NOTION_API_SECRET"))
         (database-id (getenv "ORG_NOTION_MEETINGS_DATABASE_ID"))
         (url (format "https://api.notion.com/v1/pages"))
         (headers `(("Notion-Version" . "2022-06-28")
                    ("Content-Type" . "application/json")
                    ("Authorization" . ,(format "Bearer %s" notion-api-secret))))
         (data `(("parent" . (("database_id" . ,database-id)))
                 ("properties" . (("Name" . (("title" . ((("text" . (("content" . ,meeting-title))))))))))
                 ("children" . ((("object" . "block")
                                 ("type" . "paragraph")
                                 ("paragraph" . (("rich_text" . ((("text" . (("content" . ,meeting-notes))))))))))))))
    (request
     url
     :type "POST"
     :headers headers
     :data (json-encode data)
     :parser 'json-read
     :error
     (cl-function (lambda (&rest args &key error-thrown response &allow-other-keys)
                    (message "Got error: %S, response: %S" error-thrown response)))
     :success (cl-function
               (lambda (&key data &allow-other-keys)
                 (message "Meeting notes page created: %s" (assoc-default 'json data)))))))

(defun org-notion-meetings-export (&optional async subtreep visible-only body-only ext-plist)
  (let ((title (org-element-property :title (org-element-at-point)))
        (body (org-export-as 'md subtreep visible-only body-only ext-plist)))
    (notion-create-meeting title body)))

(provide 'org-notion-meetings-export)
  • Chatgpt Lowers Barriers to Building Small Projects

    After using it for a few coding projects recently, I find that ChatGPT is a great way to lower the barriers to building smaller, self-contained projects—things that have been hiding in your to do list that take a bit too much effort to attempt but is still a good idea.

  • Personal Infrastructure

    It’s useful to think about the underlying utilities that go into running one’s life and business with the same rigor used to build something significant. Afterall, the things we rely on every day can have an outsized impact on our own performance so why not treat it that way?