This is a simple plugin for Obsidian (https://obsidian.md) to talk with Quip (the lightweight document tool from Salesforce, not the toothbrush).
Note: The Obsidian API is still in early beta and is subject to change at any time!
Currently, this plugin exposes three Commands:
- Import Quip Document, which tries to transform a Quip document into a new Obsidian note.
- Publish as new Quip document, which uses Obsidican internals to create an HTML document for import to Quip.
- Update existing Quip document, which overwrites the existing Quip document with a fresh rendering from Obsidian.
For notes on how to work with this codebase, see DEVELOPING.md
You will need to provide this plugin with two settings: the portal API endpoint and your developer key.
Your corporate account using Quip must meet the License Requirements for access to the Automation API.
If you normally use quip in the browser at | Your API hostname is | You can get your dev token at |
---|---|---|
quip.com | platform.quip.com | https://quip.com/dev/token |
CUSTOMER.onquip.com | platform.CUSTOMER.onquip.com | https://CUSTOMER.onquip.com/dev/token |
quip-CUSTOMER.com | platform.quip-CUSTOMER.com | https://quip-CUSTOMER.com/dev/token |
Note that you can only have one "dev token" at a time across all of your automation tools: command-line scripts, Greasemonkey/Tampermonkey browser extensions, and plugins like this. Rather than just copy-pasting from the /dev/token
URL, I highly recommend keeping this token in your password manager of choice (Bitwarden, 1Password, KeePass, etc.)
Currently, the Quip API rejects document creation for large notes (more than 1 MB). This is an easy limit to hit for documents with images, since they are currently embedded as inline images with data urls, before sending to Quip.
Test table based on Obsdian's How To Format Your Notes
Obsidian Markdown | Publish to Quip | Import from Quip |
---|---|---|
Internal linking | ❌ | ❌ |
Embeds | see below | ❌ |
Headings | ✅ | ✅ |
Unnumbered Lists | ✅ | ✅ |
Numbered Lists | ✅ | ✅ |
nested Lists | ✅ | ❌ |
Task Lists | ❌ | ❌ |
External images | ✅ | ❌ |
resizing images | ❌ | ❌ |
embedded images | ✅ | ✅ |
Block Quotes | ❌ | ❌ |
Tables | ✅ | 🐛 |
Footnotes | ❌ | ❌ |
Math | ❌ | ❌ |
Code | ✅ | ❌ |
Highlighting | ❌ | ❌ |
Callouts | ❌ | ❌ |
Comments | ✅ | ❌ |
Embedded Canvas | ❌ | ❌ |
Mermaid | ❌ | ❌ |
When publishing to Quip, this plugin will attempt to remap links-to-Obsidian-notes to links-to-Quip-documents, if it finds that the linked note has been previously published or imported. This is done by examining the quip
key in YAML frontmatter.
Similarly, when importing from Quip, this plugin will check for Obsidian documents with the same name with appropriate quip
keys, and remap the links to local nots.
This plugin makes an effort at doing the following content processing in ways that you would expect of Obsidian. These can be disabled in Settings:
- YAML front matter, if present, will be stripped out of content before publishing.
- Embed Notes, if present, will be recursively parsed as markdown and inlined.
This plugin understands two possible attributes in your note's YAML front matter:
quip
: URL to the quip document published from this note. If present, this URL will be used for the Update existing Quip document command.title
: If present when the note is first published, will override the Note name as a document title in Quip. Note that you will also need to turn on the "Add Note name as Quip document title" setting to enable this feature, and that this plugin cannot update the titles of notes.quip_thread
: Attributes of the Quip "thread" used for the most recent import.