Instead of links in org mode to external applications, what I want is links to org mode sections. I hope that open emacs://org/id/<uuid> in a browser will open emacs(GUI) and jump to the heading whose uuid is <uuid>. Obsidian has a plugin named advanced URL, open obsidian://advanced-uri?vault=<your-vault>&filepath=my-file&heading=Goal will open my-file.md and jump to the heading whose name is Goal. Is there a way to do the same thing in emacs org mode?

My platform is macos 10.15.

  • I reckon the solution could be OS specific, So you'd better state your OS.
    – nichijou
    Commented Jan 28, 2023 at 9:27

1 Answer 1


You can take a look at org-protocol.

Here is an example of how to add your own protocol from org-roam, with this we can open roam nodes with org-protocol://roam-node?node=uuid"

(defun org-roam-protocol-open-node (info)
  "This handler simply opens the file with emacsclient.
INFO is a plist containing additional information passed by the protocol URL.
It should contain the FILE key, pointing to the path of the file to open.
  Example protocol string:
  (when-let ((node (plist-get info :node)))
    (org-roam-node-visit (org-roam-populate (org-roam-node-create :id node)) nil 'force))

(push '("org-roam-node"  :protocol "roam-node"   :function org-roam-protocol-open-node)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.