Mental Pivot

Notes and observations from a lifelong pursuit of learning.

Insights and interesting reads delivered straight to your inbox.
Sign up for the free Mental Pivot Newsletter.

Automating Zettelkasten Note Creation on iOS

I recently purchased an iPad in the hopes of migrating some of my work-tasks from my laptop. I maintain a Zettelkasten (note-taking archive) on my laptop via an application called The Archive. Unfortunately, The Archive is only available for MacOS, so I wanted to see if I could approximate a similar app experience on iOS. I decided to tackle the problem of Zettel note creation as a small initial experiment. This article details the solution I've implemented.

Note: If you are not familiar with the Zettelkasten note-taking system, you can check out Thomas Vik's article Zettelkasten Note-Taking in 10 Minutes or my Book Notes on Sönke Ahrens’ How to Take Smart Notes.

After perusing the Zettelkasten.de forums for pointers on viable iOS apps, I settled on three candidates: 1Writer, Bear, and iA Writer. All three apps are Markdown text editors and are capable Zettelkasten tools (albeit none are dedicated Zettelkasten apps like The Archive). These three apps also support x-callback-urls (aka “URL actions”). This is important since URL actions offer an easy way to automate tasks via the Shortcuts app for iOS.

I’ve found the resulting workflow to be quick and effective:

1. Use an iOS Shortcut to create a new note.
2. Use Apple’s text replacement feature to generate the requisite note template.

I’ll show you how to do both below.


iOS Shortcuts

All three apps (1Writer, Bear, iA Writer) support URL actions which makes it really easy to use the iOS Shortcut app to create simple scripts to automate note creation.

I've created Shortcut scripts for each application. Feel free to download the shortcuts (linked below) to use or modify as you see fit.

Each script does roughly the same thing:

  • Generates a Zettel-friendly timestamp with the format of yyyyMMddHHmm (year, day, month, hour, minute). For example: 202006221245.
  • Generates a Zettel title from user input.

The 1Writer and iA Writer apps also take a directory path or folder name value (i.e. tell the app where you want the newly created file to be placed).

1Writer Create Zettel iOS Shortcut

Before you run the 1Writer shortcut, edit the script if you want to use a different directory than the default iCloud directory I have used for the script. There is a comment in the script indicating the text box in which you want to update this value).

Note that 1Writer also supports the creation of JavaScript actions that can access a similar set of APIs available to URL actions. I prefer using the URL actions to the JS actions.

Bear App Create Zettel iOS Shortcut

Pathing for Bear is a non-issue since Bear stores notes in a SQLite database. While this might be concern for Zettelkasten enthusiasts who want to maintain a portable file system of plaintext or markdown documents, Bear supports exporting notes as discrete plaintext files (so portability and file-integrity is preserved to a degree). Bear also categorizes notes exclusively through tagging (it also supports nested tags for increased organizational options).

iA Writer Create Zettel iOS Shortcut

Before you run the iA Writer shortcut, edit the script if you want to use a different directory than the default iCloud directory I have used for the script. There is a comment in the script indicating the text box in which you want to update this value).

Apple’s Text Replacement Feature

When creating a note for your Zettelkasten, you may find yourself repeatedly copying-and-pasting a standard note template. This repetitive task can be a hassle, so automating it will greatly improve your note-taking workflow.

Note: If you have questions about Zettel templates, here’s a thread on the topic along with sample templates.

While there are capable 3rd party solutions like TextExpander and Keyboard Maestro that solve this problem, both apps cost money and some—like Keyboard Maestro—have steep learning curves. The good news is that Apple offers this capability natively (free is hard to beat), you just have to know where to find it.

To access Apple’s text replacement feature:

MacOS: Go to System Preferences > Keyboard > Text
iOS: Go to Settings > General > Keyboard > Text Replacement

Apple’s text replacement feature lets you type a shortcut string, for example “.zk,” and will replace it with a longer string when the shortcut string is typed. More importantly, the text replacement feature supports multiline text replacement. That is, you can type a shortcut, like “.zk,” and it will be magically replaced by multiple paragraphs of predefined text with line/carriage returns.

The feature is accessible via iOS and MacOS. All your text replacement shortcuts are synced via iCloud and shared between your Apple devices. And because it’s a system-specific feature, it can be used in any app.

Although iOS and MacOS allow you to create text replacements, only MacOS allows you to create multiline text replacements (at least as of publication date). Therefore, to take advantage of this feature, you must first create your multiline replacement in MacOS. Once you perform this action (and you can create as many as you like), that text expansion will be made available in your cloud-synced iOS devices. Tip: You’ll want to compose your multiline text replacement in a text editor and then copy and paste it into the text replacement field.

For more detailed instructions, check out the article A Mac Based Miracle (leancrew.com). That article as well as a comment by ZK forum user MikeBraddock inspired me to integrate this feature into my workflow.

The Workflow

Now that you have both a Shortcut and a text replacement setup, creating new notes is simple.

1. Activate the shortcut.

You can run the script from the Shortcut app, via Siri voice commend, or from the Widget pane. This will create a new note in your iOS Markdown app of choice.

2. Use your text replacement string to use a note template.

Once the shortcut opens the target app and creates a new note, you can use your text-replacement shortcut string to invoke the note template you want (e.g. I type in “.zk” which expands to my standard note template). Naturally you can create as many templates or text expansions as you desire; optimize your personal workflow as you see fit.


I plan to keep experimenting with this new setup over the next few weeks. If you have any questions or ideas for workflow improvements, don’t hesitate to contact me.



Get weekly email updates and additional content: Sign up for the free Mental Pivot Newsletter.