This week's sponsor

Spark

The Future of Email


Workflow 1.5: App Store Automation, Trello and Ulysses Actions, Audio Metadata, Safari View Controller, and More

In seven years of MacStories, few iOS apps fundamentally changed how I get work done as much as Workflow. Pythonista, Editorial, and Tweetbot are in that list, but Workflow, with its ongoing improvements and deep iOS integrations, continuously makes me question how I can optimize my setup further.

Nearly two years (and an Apple Design Award) later, Workflow is reaching version 1.5 today, an important milestone towards the road to 2.0. Unsurprisingly for the Workflow team, this release adds over 20 new actions and dozens of improvements. Some of them are new app actions based on URL schemes, while others introduce brand new system integrations (such as iTunes Store, App Store, and Safari View Controller) and web actions for the popular Trello team collaboration service. Workflow 1.5 is a packed release that is going to save heavy Workflow users a lot of time.

After testing and playing with Workflow 1.5 for the past month, I've been able to streamline key aspects of writing for MacStories and managing Club MacStories. With a bigger team and more Club responsibilities, we've been thinking about how to improve our shared tasks and creative process; Workflow 1.5 has played an essential role in it.

Get the Workflows

App Store and iTunes Store Actions

One of the highlights of Workflow 1.5 is the ability to search for content on the App Store and iTunes Store, fetch results, and get rich details that can be combined with other actions. This is one of my new favorite additions to the app as it has allowed me to automate a large part of what I do for new app releases and updates.

The most important action is 'Search App Store', which lets you look for apps on the iOS and Mac App Store with four different parameters: a keyword for the app's name; search by product ID, developer, or "all"; platform (iPhone, iPad, Mac); and country. Similarly, the 'Search iTunes Store' action lets you look up iTunes Store products, replacing Platform with Category for music, movies, podcasts, and every other product type available on iTunes. I've mostly played with the Search App Store action to automate app-related tasks for MacStories.

Working with App Store results in Workflow 1.5.

Working with App Store results in Workflow 1.5.

The iTunes and App Store actions provide an interface for the iTunes Search API that I used to access via Python until Workflow 1.5. Search actions by themselves, though, are only part of the story: you'll have to combine them with their respective 'Get Details' actions to extract specific information from results to use in other actions and variables. The Workflow team have outdone themselves with a powerful set of actions that enable users to parse details of apps and iTunes products without having to know a single line of code.

Once you load a list of App Store results, this is what you can access with the new 'Get Details of App Store App' action:

  • Artist (developer)
  • Price
  • Currency Code
  • Formatted Price
  • Release Date
  • Category
  • Description
  • Rating
  • Number of Ratings
  • Rating (current version)
  • Number of Ratings (current version)
  • Version
  • Last Updated
  • Release Notes
  • Content Rating
  • Minimum OS Version
  • Is Universal
  • Supports Game Center
  • Supported Devices
  • Supported Languages
  • Screenshot URLs
  • iPad Screenshot URLs
  • Download Size
  • Store ID
  • Store URL
  • Artwork
  • Artwork URL
  • Name

As someone who's worked with the iTunes API and JSON results before, I can't stress enough how much these actions simplify the process of looking up iTunes content and reading specific information. More importantly, Workflow's new actions allow you to combine results and relevant details with hundreds of other actions and apps. These actions bring the power of an API previously accessible only to people who knew some basics of scripting to everyone thanks to their visual approach.

The first workflow I've built is a straightforward one: given an app's name as input text, Workflow brings up a series of results, so I can pick one and create an affiliate link (in Markdown) to paste in a text editor.

The workflow can be used after selecting an app's name in a text editor and hitting 'Share' in the copy & paste menu to invoke the Workflow action extension. You can also run the workflow manually if you don't need to call it from the extension.

Adding app links from Ulysses with Workflow's App Store actions.

Adding app links from Ulysses with Workflow's App Store actions.

The workflow has some nice touches made possible by the new App Store actions. When searching for an app, you can choose the platform from a segmented control. Then, with a series of Get Variable-Get Details-Set Variables steps, the workflow isolates values for the app's URL and formatted price. Using the different URL parameters of iOS and Mac apps, the workflow also understands if an app is available on the App Store or the Mac App Store.

At the end, the workflow outputs a sentence formatted in Markdown as follows:

Tweetbot is available on the App Store at $9.99.

This is a sentence I use to close most of my app reviews, which I can now automate without leaving my text editor. You can download the workflow here.

But we can do more than Markdown links with Workflow's App Store actions. Want to copy the release notes for an app update because text can't be selected on the App Store? Easy: search for an app, hit the share link, and run this workflow. You'll see an alert for what's changed in the latest update and the release notes will be copied to the clipboard as plain text.

You can now fetch and copy app release notes thanks to Workflow.

You can now fetch and copy app release notes thanks to Workflow.

Behind the scenes, the workflow grabs the App Store short URL for the selected app, it expands it into a full itunes.apple.com link, and it uses a regular expression to extract the app's ID from it (more on new regex actions in a bit). Thanks to Product ID App Store search, the workflow returns information for the selected app alone, and it then extracts information for release notes, app name, and last updated date. This could be done through the iTunes API before, but it was never this simple.

We can build on the same concept (share from App Store, get app ID, get details of apps) to access other product details that would otherwise require a knowledge of programming and JSON. Want to save the full-resolution version of an app icon? It can be done with this workflow. How about saving all screenshots to your photo library? Same idea.

Apply this to the App Store and the iTunes Store, for the dozens of details Workflow exposes, for all the deep system and app integrations Workflow supports, and you can see how the Workflow team essentially reinvented how bloggers, podcasters, artists, and developers can save time accessing iTunes product information on iOS.

Apple Music Actions

I haven't used these much, but Workflow 1.5 also comes with Apple Music actions to create playlists and add songs to an existing playlist in your Apple Music library.

The new Playlist actions are based on the API Apple introduced with iOS 9.3, which, after a permission prompt, enable apps to manage playlists. I have played around with the 'Add to Playlist' action: given items from your music library or the results of a 'Search iTunes Store' action, you'll be able to add songs to a specific playlist without having to pick it manually.

If you manage a lot of playlists in Apple Music and would like a way to automate them, this is something you should check out.

Trello Actions

One of the (many) strengths of Workflow is that it integrates with native iOS apps (through URL schemes) as well as services with web APIs. The latest web service to be supported in Workflow is Trello, the popular project management tool based on boards, lists, and cards.

This was good timing for us: we've recently begun using Trello for Club MacStories and I was looking for ways to automate the creation of cards. I'm still thinking about what else I could do with Workflow and Trello, but I have a workflow I want to share today.

Workflow's Trello integration is quite extensive. You can:

  • Create boards;
  • Create lists;
  • Add cards to a list;
  • Get Trello items from a board, list, or card;
  • Get details of Trello items.

There are controls for the position of cards, as well as due dates and attachments. Alas, you cannot assign members and labels with the Trello actions, but this hasn't turned out to be an issue in my case.

Jake and I share a board where we keep track of apps he's considering for review and articles that are currently in progress. I was looking for a way to quickly add an app from the App Store to our "App Ideas" list, and Workflow's 'Add Trello Card' action was perfect for our needs.

The Trello board Jake and I share.

The Trello board Jake and I share.

With the same combination of Product ID and App Store search from the actions above, the workflow extracts information for an app's name, price, link, platform, description, and artwork. With a single action, I can then create – without leaving the App Store – a rich Trello card that contains everything Jake should know about an app.

From App Store results to a rich Trello card.

From App Store results to a rich Trello card.

Trello cards even show the app's icon as artwork, so they look nice and they're easy to identify on a board. You can download the workflow here.

Improved Regex and Ulysses Actions

On our MacStories Weekly newsletter for Club MacStories members, we have two regular sections in which we create custom workflows for readers and answer their questions. For almost a year, each request was submitted manually over email, which meant that each message was formatted differently.

After some recent changes on our end, requests are now submitted with Google Forms; this allows us to apply the same formatting and structure to each message, which has considerably reduced the amount of time we spend adding and editing requests in the newsletter. The best part, in fact, is that I've built this workflow so that, through various Zapier automations1, I end up with input text formatted in a specific way passed to Workflow on iOS.

Here's what a member request looks like:

CLUB_USERNAME: Mark Miller
CLUB_TWITTERNAME: @MarkDMill
CLUB_REQUEST: In my work as a teacher, I need to generate student handouts that match my slideshow that, in turn, matches my lecture notes. So far, I've been manually maintaining three files for each lecture so that if I change one document, I have to go and change the other two so that they stay in sync. It's incredibly time-consuming and error-prone. Do you know of any solution where I could link together text from a Word/Pages/Docs document to a Powerpoint/Keynote/Slides slideshow so that changes in one auto-change in the other?

Why the uppercase tags before each sub-section? Simple: Workflow 1.5 finally brings proper support for regex matching groups, which can be extracted individually after a successful match.

With the new 'Get Group from Matched Text' action, Workflow can return a group at a specific index of all groups found in a match as a list. Groups are indicated by parentheses in a regular expression, and they can be used to highlight parts of a match you'd like to extract to reuse somewhere else.

In my case, I wanted to parse a member's details for name, Twitter username, and request text separately. I had been waiting for Workflow to add support for regex groups just to create a new setup for our Workflow Corner and Weekly Q&A sections.

Here's how it works: after members submit questions via Google Forms, each request is saved as a Trello card in our team board.

How Club MacStories newsletters are made behind the scenes.

How Club MacStories newsletters are made behind the scenes.

Thanks to Zapier, I've formatted Trello cards to embed a tappable URL scheme that launches Workflow on iOS and passes the plain text request as input. In about a second, Workflow extracts every variable from the request, reformats it in Markdown, and asks me to append it to a Ulysses sheet so I can start writing my responses there. It works the same way for Graham and John.

After the workflow extracts each variable and reformats everything in Markdown, it asks me where it should be saved in Ulysses.

After the workflow extracts each variable and reformats everything in Markdown, it asks me where it should be saved in Ulysses.

This works incredibly well: we have gone from several minutes spent editing and reformatting member requests each week down to seconds. Best of all, questions no longer suffer from inconsistency issues due to manual editing because Workflow takes care of it.

Under the hood, the new 'Get Group from Matched Text' action is used to match text for different variables; the workflow supports multi-line matching for requests that span multiple paragraphs, and it knows it doesn't need to include a Twitter link when a member prefers to stay anonymous.

Regex and match groups in Workflow 1.5.

Regex and match groups in Workflow 1.5.

At the end, the workflow launches a second workflow (with the app's URL scheme), which takes the pre-formatted Markdown input and, also with a URL scheme, appends everything to an existing Ulysses sheet.

Ulysses integration is based on actions introduced in version 1.5: Workflow can now do everything that's possible with Ulysses' x-callback-url (documented here), only in a visual way, so you never have to deal with URL schemes. This makes it easy to create new sheets with pre-filled Markdown text, append or prepend to sheets, and more. If you use Ulysses, you'll be happy about the new actions in Workflow 1.5.

If you're interested, you can download both of my workflows here and here (though I doubt they'll be useful as they're very specific to our setup).

I realize that better support for regular expressions isn't something the majority of Workflow users cares about. However, in big and small ways, the ability to extract specific groups from matched text has enabled me to create more advanced workflows that are now saving me a lot of time on a daily basis. If you haven't looked at Workflow's regex support before, take a few minutes to experiment with it now. I bet there's something you can automate with capture groups.

Attaching Images to Ulysses Sheets

A while ago, I submitted a minor feature request to the Ulysses team:

The idea was – Ulysses' most unique feature is the ability to include images alongside text while writing, and it would be nice to automate the process of sending images to the app with a URL scheme.

Images appended to a Ulysses sheet with Workflow.

Images appended to a Ulysses sheet with Workflow.

In version 1.5, Workflow's new Ulysses actions also include support for the improved Ulysses URL scheme (introduced earlier this week), which lets you send images and keywords to a sheet. Workflow's new 'Attach to Ulysses Sheet' action doesn't require you to encode an image in base64; it takes care of everything automatically. All you need to do is fill in the identifier of a Ulysses sheet, and Workflow will open the sheet and put an image in its attachment list.

This is going to be a terrific addition to my writing process going forward. For both stories and app reviews that take me a while to put together, I've always tended to keep screenshots related to them in the Photos app. Inevitably, those screenshots get lost among the clutter of my photos and I lose their context and information. With Workflow, I can automate the task of sending screenshots to a sheet I'm working on. I can even pick images manually from Workflow with an image picker, or I can share them from other apps with the action extension and save them in a Ulysses sheet anyway.

I can see how this will play a big role for my iOS 10 review this summer (especially thanks to the combination of text notes and images in Ulysses' attachment list) and I've already taken advantage of it quite a bit for this very article. You can download my workflow here.2

Encoding Audio with Metadata

For the past couple of months, we've been sharing daily behind-the-scenes and personal messages with our readers on a Telegram channel we call The MacStories Lounge. Every week, we try to post a few audio clips to update readers on what we're working on and things we're thinking about. As you may have noticed, those audio messages show up with correct audio metadata for artwork and author information:

The MacStories Lounge on Telegram.

The MacStories Lounge on Telegram.

That's because of Workflow 1.5 and its new options to include metadata with a file when encoding it to MP3. When encoding to audio using the 'Encode Media' action, you can now tap on a Metadata field to reveal options for title, artist, year, genre, and artwork. This extra information will be embedded in the file and displayed by most audio players on any platform.

From recording to sharing as MP3 with Workflow.

From recording to sharing as MP3 with Workflow.

In my case, after recording an audio clip with the Shure MV88 microphone in the Motiv app for iPhone, all I have to do is hit Share on the file and run my workflow. The lossless file will be encoded to MP3, metadata will be added, and our Telegram followers will enjoy a pretty audio message with proper artwork3 and author details. It takes one tap and it saves me time every day. You can download my workflow here.

Everything Else

There are several more changes in Workflow 1.5 worth mentioning. They're not major additions to the app, but they do make the overall experience better for everyone.

You can now preview webpages with Safari View Controller inside Workflow. This works both in the app and the action extension, which means you can bring Safari View Controller to any app as long as it's got a share sheet. It even supports automatic activation of Safari Reader.

Safari Reader inside Safari View Controller inside Safari. It's possible.

Safari Reader inside Safari View Controller inside Safari. It's possible.

For example, I can now preview my published posts with Safari without leaving Ulysses. My workflow to extract an image from a Safari selection and re-upload it has also been updated to use Safari View Controller.

Finding and running workflows is easier than ever, too. A search bar has been added to the app and the extension; plus, the following keyboard shortcuts are supported on the iPad:

  • ⌘R to run a workflow;
  • ⌘. to stop a workflow;
  • ⌘F to search for an action;
  • ⌘Z to undo;
  • ⌘⇧Z to redo;
  • ⌘W to close a workflow.

And speaking of workflows, the composer – perhaps one of the weakest areas of the app – has been improved with better performance and the ability to drag long blocks of actions around along with the actions they contain. The performance improvements are noticeable and I like how creating workflows and editing them benefits from these tweaks.

Finally, Workflow 1.5 lets you filter videos by frame rate. Using the 'Filter Images' action, you can narrow down subsets of videos by their frame rate in addition to resolution. This opens up some interesting use cases for videographers who shoot their videos on iPhones and would like a quicker way to filter and organize them.4

To the Future

Workflow is in the Top 5 of my favorite iOS apps ever made. I wouldn't be able to work efficiently on my iOS devices without it.

At this point of its road to 2.0, it's fair to wonder which big features the Workflow team should tackle next. Despite hundreds of additions and refinements, the underlying foundation of Workflow has stayed the same since 1.0, and there are some major changes that could take Workflow to an even higher level. In no order of importance:

  • The ability to organize workflows in folders;
  • Global variables to define data to be shared across multiple workflows, such as a file stored in Dropbox, the ID of a Ulysses sheet, or links to a website;
  • "Instant Variables" to get details of a macro variable without doing the Get Variable-Get Details-Set Variable dance every time. You could save a lot of time if instead of fetching details of a variable multiple times you could use a single master variable and only specify where necessary which sub-details to use;
  • Action presets to save and reuse actions you often add to your workflows. There are some actions I always use with the same settings, and I'd like to have a way to import them with one tap. Editorial gets this right.

I wouldn't be surprised if the Workflow team is already working on all of these features. Workflow is a relatively young app with immense potential, and it feels like its foundation is still being built.

Day after day, Workflow allows me to work better, experiment, and help readers who want to save time on their iOS devices. Version 1.5 makes everything better. Now's a good time to get on board the Workflow train if you still haven't.


  1. Which I'll write about...someday. ↩︎
  2. You'll have to change the sheet IDs to match the ones in your Ulysses app. ↩︎
  3. Which I fetch as a static image from Workflow's iCloud Drive folder because it's faster than loading it from Dropbox. ↩︎
  4. I have a pretty sweet workflow for this coming to MacStories Weekly tomorrow. ↩︎

Unlock MacStories Extras

Club MacStories offers exclusive access to extra MacStories content, delivered every week; it's also a way to support us directly.

Club MacStories will help you discover the best apps for your devices and get the most out of your iPhone, iPad, and Mac. Plus, it's made in Italy.

Starting at $5/month, with an annual option available. Join the Club.

A Club MacStories membership includes:

  • MacStories Weekly newsletter, delivered every week on Friday with app collections, tips, iOS workflows, and more;
  • Monthly Log newsletter, delivered once every month with behind-the-scenes stories, app notes, personal journals, and more;
  • Access to occasional giveaways, discounts, and free downloads.