ChatGPT + Shortcuts + OmniFocus = a perfect trifecta

Hi all! I wanted to share a shortcut I made that uses ChatGPT, Logger (optional), and OmniFocus for natural language input.

I’m one of the many people who have been dying for quick entry to support natural language for a while. I’ve used Todoist, which has this, but I have Different Problems ™️ with it, so I wanted to jump back into OmniFocus for some of the bigger power user features.

Anyways, I’ve seen some arguments people have against quick entry. One of the biggest ones is that the quick entry system, as it exists, is fine, but just requires keyboard navigation. For example, you can certainly set a due date at 5pm tomorrow, but you have to tab over to the due date field in the quick entry field. This is one of the easiest justifications for why OmniFocus doesn’t need it.

But, with my shortcut, I’ve been able to really take this to the next level. The hitch is that loosely interpreting language is something large language models are really good at. As an example, I really don’t want to ever have a task that has multiple discrete actions. I have a “shopping” related project that has items on it, and I want 3 items in three projects. With this shortcut, ChatGPT can parse out that I want 3 different tasks if the only input is “buy tea, milk, eggs”. This gets formatted nicely into “Buy tea”, “Buy milk”, “Buy eggs”. Better still, I can say “buy tea, milk, eggs due 5pm tomorrow at 7-11” and with tags, everything is categorized nicely, the due date works, and my location-based reminder fires the next time I’m at 7-11. Because you pre-define your projects and tags in the shortcut, you can get it to behave very nicely and even figure out where to put things based on the general concept of each project.

The shortcut leverages the ChatGPT app (not the API), which is probably the best, or worst part. The best part is that it’s trivial to use. The worst part is that it contaminates your chat history.

But, I wanted to share this because:

  1. Natural text input has been my number one problem with OF.
  2. There have been pretty good arguments against Todoist-style natural text input (e.g., just having one textbox and figuring everything out with brute force).
  3. ChatGPT makes natural language input easy.
  4. This shortcut basically turns into a quick entry for multiple different projects and batch editing system that’s way more powerful than traditional quick entry with natural language.
  5. Recurrence setup, which is one of the most tedious parts of OmniFocus, is now trivial with this too: the Taskpaper format is trivially understood by ChatGPT, and it can easily write the iCal style recurrence rules after taking natural language input.

I don’t think you should blindly copy this shortcut, but I encourage you to play with it for inspiration. This is not optimized for sharing, so you need to edit the ChatGPT prompt directly. In the future, I may work on this more to make it more sensible to share. In-practice, though, once I had it working I felt like it was already good enough for me to use. I use an Alfred workflow to fire this shortcut on Mac, and I use the Action Button to fire this shortcut on iOS. Since coming back to OmniFocus, this has genuinely been the only way I’ve input most tasks, except for a few complex projects. And I feel like this is the best of all worlds: the ease-of-entry with quick entry for most silly things (e.g., “clean the toilet weekly on fridays (defer thursday)”) with the power of OmniFocus normal input for complex, multi-step projects.

The shortcut in-question: Shortcuts

I hope this inspires anyone who finds a lack of natural language input to be a showstopper with OF.

1 Like

How‘s the quality of the TaskPaper?
Just saw you put quite an effort into the prompt.

This is what I posted in the Slack forum obe or two weeks ago hoping to get an exchange started. But it was more about inbox processing and the first results demonstrated it requires some more tinkering:

One of the issues with tools like chatGPT and automations is the lack of access to OF‘s context. Another one is you cannot iterate over a topic till it is correct. Thinking about it that made me think about an experiment. I‘ve done 2 iterations so far and will try again later. For this I used the following prompt. You see you have to provide a lot of context and customise it to your needs:


You are a GTD coach helping me process my inbox by asking questions and guiding me through the processing steps. You ask for a screenshot of my inbox and then process topic by topic. At the end, you create one TaskPaper statement that can be imported into OmniFocus 4. I have the following tags in my system:
• Anrufe: All calls I need to make.
• Büro: Everything I need to do at the office.
• Teams: Everything I need to do in Microsoft Teams to communicate with colleagues at work.
• Laptop online: Work-related tasks requiring my work laptop and an internet connection.
• iPad WLAN: Personal tasks requiring my iPad and an internet connection.
• zu Hause: Tasks I need to do at home without using a computer.
• Besorgungen: All errands I need to run.
• warten Arbeit: Work-related topics I’m waiting for someone or something else to handle. These always take the form: <last name, first name> - <date since I’m waiting> - . For example, if I’m waiting for a ticket to be resolved, <last name, first name> is replaced with the ticket system, such as ServiceNow or Jira.
• warten Privat: Personal topics I’m waiting for, with a similar format to warten Arbeit.

Important: I do not use a tag for Someday/Maybe actions. Those items are kept outside of the tagged system.

At the end of the process, please generate a complete TaskPaper statement for import into OmniFocus. I will confirm when we’ve processed the entire inbox successfully. Consider this (OmniFocus TaskPaper Reference Guide - Support - The Omni Group) preparing the proper TaskPaper statement.


I created a brief Apple Shortcut to convert the TaskPaper into OF (link: Shortcuts). It just asks for the TaskPaper test of your LLM and converts it to OF items into the Inbox.

1 Like

Hmm, I think that your use case and mine are distinct, though related.

My primary goal is is to use a system that has quick entry that’s good enough for me to trust that if I slam out some word salad, it ends up in mostly the correct place, ideally with the right recurrence rules, tagged appropriately.

For examples of what I currently do:

  1. “Mouth wash” → “Buy mouth wash”, tagged 7-11, Welcia, in the project “chores” (and 7-11 and Welcia both have location-based tags so that I get reminded when I’m walking by).
  2. “Take care of daily battle pass tasks daily due 18:00 defer 18:00 previous day” → “Take care of daily battle pass tasks” in the “genshin impact” project with the correct recurrence rule.

My current problem with any GTD system is that I cannot force myself to process the inbox at all. Apparently I would rather die than process the inbox, so my goal is instead to throw things loosely into some general holding projects where I’ll action them or realize “ugh, this is wrong, I’ll fix it”.

I think large language models, when given your particular set of instructions, are more of a copilot or something, but it doesn’t necessarily interest me that much to have a perfect GTD coach, because I don’t think it’s fully possible. Maybe if you use a better reasoning model like o1 or o1-mini, it would be better, but I haven’t really experimented with this enough due to high relative cost.

If you want advice on what I currently suggest for your use case: You should provide more text and more examples per category.

For example, I describe the 7-11 tag fairly nebulously as “anything that a convenience store in Japan would have” and sometimes don’t get things tagged appropriately. But if I say “7-11 includes X and Y and Z” that helps it correct categorization.

For other things, I give specific examples in each block. For home projects, I describe what types of tasks flow into each project with key examples.

“Water the garden”, “clean the toilet”, “take out the trash” are all examples of “chores”.


It’s not the case that your use case will get to perfect in terms of categorization. But I don’t think having your expectations that high should be a goal for this kind of thing. 80% of the way there is probably a good step in helping you, right?

@shank I don’t have native ChatGPT app, so I couldn’t test. Out of curiosity, when you say “quick entry”, you are not using default OF dialog right ?

Screenshot 2024-12-09 at 08.59.23

How does you input dialog look like ?

I have a workflow in Alfred that routes to Shortcuts, so like this on iOS and Mac, respectively. My whole thesis is that the quick entry field OmniFocus has should support natural language (at this point it would be trivial with AI) and that it’s basically useless to me as a result. (Are we all just pretending Natural Language input is not a thing?)

The reality is that having the ability to type english words is far better than memorizing fields, and my approach works nicely on both iOS and macOS.

Screenshot 2024-12-20 at 01.26.19

Thank you for the reply. I see now what you are doing