In the years I've spent covering iOS automation, I've often asked for a mobile version of Automator. Workflow, released today, tries to bring the deep system integration of Apple's OS X utility to the iPhone and iPad, taking advantage of extensions in iOS 8 to make its automation features ubiquitous and compatible with any app.
Readers of MacStories and iOS power users may be familiar with Drafts and Launch Center Pro, the apps that kickstarted iOS' small revolution with shortcuts and automated chains of actions that let apps communicate in ways the system didn't provide out of the box.
In late 2012, Ole Zorn showed how native iOS functionality could be scripted with Python – a concept that he expanded in 2013 with Editorial. Zorn's text editor (which became even more powerful with version 1.1) went beyond the typical feature set of a Markdown app, offering a comprehensive set of visual actions that could be combined in workflows highly reminiscent of Apple's Automator.
In spite of the community's best efforts to bring iOS automation to a broader audience, however, all those apps were ultimately limited to text, URL schemes, or third-party services (like IFTTT) that automated data outside of traditional iOS features.
Workflow – first teased by Ari Weinstein and team in January 2014 – takes another approach: instead of relying heavily on a specific functionality (such as text editing) or third-party apps and services (like IFTTT and Dropbox), Workflow is primarily aimed at automating native iOS apps and features.
Workflow can automate Calendar events and Reminders, it can parse and extract data from webpages in Safari, and it has full support for Photos and sharing services. It even works with iCloud Drive and extensions. Workflow's first version lacks some obvious features like backup and sync, but what it does today is an extremely powerful proposition – from both practical and conceptual standpoints.
The Content Graph
Workflow lets you create automated workflows based on actions in an interface that's inspired by Apple's Automator and Ole Zorn's work on Editorial. Actions take input and generate output, and they're connected in a vertical flow that is run from top to bottom to execute multiple tasks in rapid succession. Workflow can show native UIs such as alerts and lists, it lets you enter manual input with the keyboard, and, like Editorial, is based on a variable system to use different pieces of data across actions in a workflow.
Workflow comes with over 150 built-in actions1 organized in:
- Photos & Video
Upon first launching the app, you'll be presented with an interactive onboarding process aimed at explaining the basics of workflow creation by letting you create a workflow to generate and share a GIF. The core ideas behind Workflow are immediately showcased here: actions are arranged with drag & drop and you need to grant Workflow permission to system features such as the camera or your photo library. When a workflow is created, hit the Play button and the app will run it until it stops. If you're familiar with Automator and Editorial, the learning curve won't be steep: Workflow is a very visual app that wants to simplify automation and make it understandable on iOS.
But to give new users a chance to play around with Workflow before creating their own commands, the developers built a gallery with pre-made workflows available for download.
These workflows give a good idea of the app's capabilities and they're organized in sections: you will find Great Action Extensions for workflows to create new note in Evernote and share it with one tap or to turn anything into a PDF and add it to iBooks; a Sharing category that features a workflow to tweet the song you're currently listening to; and, of course, document-related workflows for iCloud Drive, GIF creation, Dropbox, and more.
I like the design of the gallery and the included examples. The demos featured by the Workflow team provided excellent building blocks for some of my most used workflows, such as the ability to append text to Evernote from Safari, or a workflow to display busy times from my Calendar. You can download examples with one tap, look at their actions, and modify them to suit your needs.
The Gallery is a good starting point, but the full breadth and depth of Workflow is only revealed when assembling new workflows from scratch and playing around with the app's intelligent input conversion system. And to understand why Workflow is a powerful new player in the iOS automation space, it's important to explain how its Content Graph works.
In the past two years, most apps that tried to automate iOS were limited to textual input and output as they primarily dealt with URL schemes, which can only carry encoded text across apps. Pythonista and Editorial are capable of working with images from the Camera Roll, but they require knowledge of Python scripting; Launch Center Pro has integrations with various types of images, but they're mostly built for connections to third-party services such as IFTTT, Giphy, and Dropbox.
For Workflow, Weinstein and team created ContentKit, a custom iOS framework that is capable of taking a collection of content items and intelligently coerce them into another format. The ContentKit framework powers the Content Graph, which is a “map” of how input from iOS features and apps is translated throughout workflow actions on the fly. The content transformations that Workflow does and that puts in the user's control are based on a complex technology that allows Workflow to integrate apps and services that are seemingly unrelated, such as Maps and iBooks or Music and Twitter.
In the app, you can create a workflow to get your current location and turn it into an image you can share or continue to convert to PDF. You can see the song that's currently playing and easily fetch its album artwork as an image, but if the receiving action doesn't support images, use the song's title (as text) instead. You can parse some text as a valid address and open it in Maps. Or, you can find your upcoming Calendar events, pick one, and turn it into an item shareable with AirDrop.
To perform these content transformations, the app uses an intelligent system that is able to determine how actions and apps can deal with input without errors and in useful ways. In the case of locations and images, Workflow converts a location to a map item and, last, to an image in a second, giving you an image file that you can share, save, or convert again.
In technical terms, this is what happens in the Content Graph for the location example:
CLPlacemark -> WFLocationContentItem -> MKMapItem -> WFMKMapItemContentItem -> UIImage -> WFImageContentItem
Workflow's Content Graph extends to every input type supported by the app – whether it's a web link, plain text, a webpage, a song, a PDF, or a video. In theory, any action output can be turned into a compatible input for a subsequent action, creating combinations such as “turn webpage to PDF” or “choose photo, upload to Dropbox, get a public link, and share it”.
The best part is that you don't have to understand any of these technical complications. The system is built to perform transformations automatically, abstracting technicalities from the experience.
I talked to Ari Weinstein about the Content Graph, and he noted that it's “an important technology” for the app. “In addition to the unique coercion abilities, the Content Graph is very powerful for connecting different apps together”, he told me, adding that the Content Graph also supports the system clipboard and NSItemProvider, the class Apple built to handle communication between apps and extensions.
As a heavy Launch Center Pro and Editorial user, it took me a while to fully figure out Workflow and the new kind of automation it brings to iOS. Besides the Content Graph, in fact, a key aspect to understanding Workflow is the way workflows can be launched from action extensions and how they can seamlessly blend in with other apps through the share sheet. Due to Apple's unwritten rules, Workflow can't have a Today widget, but its action extension (and the ability to pin workflows to the Home screen or open them from Launch Center Pro) has been more than enough to speed up many of my daily tasks.
When I saw the first teaser video of Workflow in January, my first thought was that an Automator-style app that forced you to open its main interface to launch actions wouldn't be very useful. I have several Automator workflows on my Mac, but I never open Automator to run them: I use launchers like Keyboard Maestro or Alfred to execute them – and I don't even have to open those apps because they can be activated with a system-wide keyboard shortcut. Fortunately, the Workflow team came up with a way to integrate workflows with extensions in iOS 8 – specifically, action extensions.
Each workflow can have a custom name and icon and it can be added to the Home screen as a webclip or to Launch Center Pro. If you add a workflow to the action extension, you can specify the input types for which it'll come up as an action extension, which are:
- Email addresses
- Maps links
- Phone numbers
- Rich text
Control over these input types lets you choose where and when a workflow should appear in the action extension: maybe you want a workflow for web links from Safari and Twitter, but you don't need to use it when you're dealing with a document or a contact. The first action of a workflow always takes the input that's passed from the action extension: in apps like Twitterrific and Tweetbot, a workflow launched as an extension will receive a tweet's link or text; in Safari, it'll get the URLs of the current webpage; in a text editor, it'd typically receive text from a document. If you're unsure about the input type given to a workflow, the app lets you use a debug action to view the Content Graph and how it's processed from the input – it's a neat visualization and useful to understand how actions work.
To better explain the possibilities opened by Workflow, I evaluated areas of my iOS setup that were ripe for automation and put together workflows that are now helping me on a daily basis for MacStories and Relay-related tasks.
I have two workflows for opening and saving files. The first one is simple but handy, and a good idea of Workflow's deep integration with iOS 8: with two actions, I can pick a file from iCloud Drive (or any other document storage extension) and choose to open it in another app on my device. On iOS 8, there isn't a native app to browse every folder in iCloud Drive; Workflow, with its customizable actions, lets me bring up the full iCloud Drive browsing interface whenever I want and choose what to do with a file I select.2
The upside of this implementation is that Workflow can switch to any other external storage location from the share sheet, such as Dropbox or Transmit. This means that I can integrate files from other services and file managers like Documents 5 into Workflow, creating chains of actions that wouldn't be supported by apps or even approved by Apple.3
Here's another workflow I use all the time: a file downloader that can save files to iCloud Drive. Given a direct download link to a file in the clipboard, Workflow can download the file (showing a progress bar) and then save it to any installed document storage extension. I use this workflow often to download files from the web, but the fact that it requires a link to be copied first highlights a limitation of the extension framework on iOS 8. This workflow would be much better if it could be activated from the copy & paste menu by tapping & holding any link, but that's currently not an extension point available to developers.4
The two workflows above make up for something that iOS still lacks, and they encapsulate the kind of system enhancements that you can craft with enough imagination.
Sometimes, I want to quickly upload images to Dropbox and share a link with other people. My Share Dropbox Photo workflow takes a specific functionality of the Dropbox app and it abstracts it in a way that enables me to connect it with other iOS services and UIs.
With just four actions, I can select a photo (or multiple ones) from a standard photo library sheet and save them to Dropbox, optionally specifying a folder where I want the files to be saved to. Once the upload is done, I can use a Get Dropbox Link action to automatically fetch the public link (or short URL) of the file that was just uploaded and copy it to the clipboard. If I want, I can show a native alert with the link in it to confirm that I just uploaded and shared a photo. Again, this would be possible without an automated workflow; it's just faster this way, and better than the iOS 7 days because it relies on native extensions and document pickers.
Workflow's action extension is an impressive feat. Available from the share sheet of any app that supports extensions, the Workflow extension consists of a panel containing workflows that you've enabled to work as action extensions (quite a mouthful). These workflows can accept all the possible values available in their settings, and Workflow will try its best to understand how the extension has been activated, what kind of input has been passed from the share sheet, and how content can be transformed across actions.
Workflow's action extension essentially enables you to create a fully customizable menu with your own commands that include actions Apple itself may not support yet – but which can be created from scratch with actions and Workflow's magic glue.
Take this Make PDF workflow as an example:
In seven years of iOS, Apple still hasn't offered a “Print to PDF” functionality to turn webpages or email messages into PDF documents. That's not an issue with Workflow, which comes with a “Make PDF” action that can turn anything into a PDF thanks to the Content Graph. This works for webpages, where the webpage you're seeing will be “printed” to PDF, but also images, map views, song artworks, and more. If you want, Workflow can automatically send a newly generated PDF to iBooks, or you can bring up a document extension and save it elsewhere.
Each action in Workflow can be tapped to view a description, the input type that it supports, and the results that it will return; in this case, Make PDF supports any input and returns a PDF file.
In Safari, Workflow is smart enough to understand that Make PDF is preceded by the input of an extension activated from the browser. When I run the workflow from a Pinboard client for iOS 8, the app also knows that I want to turn a web view into a document.
In practice, it can take a few trials and errors to understand how the input system of iOS 8 extensions works (frankly, it's taking a while for a lot of third-party developers too), so expect some inconsistencies until apps figure out the best ways to communicate with each other.
Once you've learned how Workflow transforms content across services and the different categories of actions available in the app, you'll start grasping the potential for completely personalized workflows that can automate and speed up routine tasks you perform every day.
Perhaps you often need to check the locations of upcoming calendar events and look up directions in Google Maps. With Workflow, you can chain actions to do that with interactivity and a visual preview of the location before loading directions in the Google Maps app.
In the workflow I put together, this will happen:
- A popup displays a list of your upcoming calendar events;
- The one you pick is converted to an address;
- The address is loaded with Google Street View;
- Street View is previewed with the native Quick Look panel;
- Directions to the address are loaded in Google Maps.
Or maybe you want a quick way to save any kind of content (including images) to Evernote with predefined tags and notebook, but a title that you type manually every time. This workflow can create a new note and share it immediately, putting its public link in your clipboard; it can be run from any share sheet, and it's especially handy to save and share photos to Evernote from Apple's Photos app.
These workflows should give you an idea of the kind of automation and user interaction that is possible with Workflow. You can display native alerts and popups, play sound effects and speak text, insert conditional blocks, and even get the current network name or make your device vibrate . Like Automator, the possibilities are virtually endless, and a built-in sharing feature will let you share workflows with other people and submit them to the app's online gallery.
It's easy to spend hours just playing around with Workflow and see what you can come up with and where the app can break. I went through that phase, but decided to focus my efforts on workflows I would actually use on a daily basis, such as one to search for the lyrics of a song on Google.
Workflow's Music integration can return the song that's currently playing on the device, and I mix that information with the word “lyrics” in a text field. Note how Workflow automatically assumes I want the name of the song as text rather than other output types. Opening a Google search is then as easy as launching Safari with the input.
The same Get Current Song action, if combined with a Get Images from Input action, will let you tweet the artwork of the song you're currently listening to.
I also enjoy Workflow's integration with Safari through the share sheet very much. Given a URL, Workflow can download the contents of its webpage as rich text, which opens various possibilities for further content automation. One of them is the ability to extract images from rich text, which I use to count the number of images found in a webpage directly from Safari. Alas, due to memory constraints of iOS 8, this workflow will crash with articles like this one.
The workflow that I use the most every day, though, is a rather straightforward one. I co-host two podcasts, and I assemble a weekly newsletter; for both tasks, I often need to collect links I want to cover. To speed up the process, I created a workflow that gets a link from the extension and appends it to a note in Evernote. This saves me several minutes each week as I don't have to open the Evernote app and links are appended directly from an action extension.
There are some nice touches in it: if the extension hasn't passed a link, Workflow will save the clipboard to Evernote. For URLs, it'll try to save them alongside the title of their webpage.
Below, you can find a quick video of some of my favorite workflows in action.
Next Level iOS Automation
Workflow wants to do something big: combine the interface of Automator and its deep system integration with iOS 8 features and extensions, native apps5, and an engine capable of transforming content intelligently.
There are hundreds of actions that I haven't covered in this review. You can parse RSS feeds, edit and delete photos, compress files and AirDrop them (seriously), control music, and that's not to mention the scripting part with variables, conditional and repeat blocks, and custom menus. For a 1.0, Workflow has an astounding depth.
Workflow could use some fixes: workflows can sometimes get “stuck” (forcing you to restart the app); some combinations of actions feel a bit rough and unfinished, such as the ability to preview Markdown in RTF; the search feature in the sidebar is buggy; and, workflows can't sync across the iPhone and iPad. Weinstein and his team are aware of these problems, and, according to them, they will be fixed with upcoming updates. Because Workflow relies on native iOS 8 features so much, many of the bugs that I encountered in my tests weren't bugs of the app itself – they had been left by Apple.
What I wanted to test before the final release was the Content Graph: when I got the first demo of Workflow this summer, it sounded too good to be true. Not only does the Content Graph work – it shows incredible potential for future improvements and I can't wait to see what Workflow users will come up with. The Content Graph is a blank canvas with strong ties to native iOS frameworks, and it's exactly the kind of versatile automation engine that someone needed to create for iOS.
iOS automation has mostly been limited to plain text and scripts so far. If Apple ever makes an iOS version of Automator, I bet it would be similar to Workflow, which I believe has a bright future ahead. Workflow's biggest strength is in how it hides complexity to let anyone create their own automated chains of actions easily and quickly. There's plenty of power under the hood, and the developers showed remarkable restraint in not making technical details the focus of this debut.
Workflow sits somewhere in between a magical sandbox and insane power user tool, and I still can't believe that this is possible on iOS now.
Workflow is available at $2.99 on the App Store.
Download the Workflows
- Open file
- Download file
- Print to PDF
- Calendar event to Google Maps
- Evernote sharing
- Dropbox image sharing
- Search lyrics
- Tweet song
- Extract images from webpage
- Append to Evernote
The original Automator for Mac OS X Tiger shipped with 120. Workflow has 153. ↩︎
Also new in iOS 8, Workflow can show you the full Open In menu or allow you to choose a specific app to send a file to. ↩︎
Something that I noticed is that Workflow crashed when I tried to open files from the Google Drive document picker; given the overall instability of document pickers at a system level, I'm not sure Workflow is the culprit. ↩︎
It is, of course, available to Apple in the Mail app to add photos or videos to an email message. ↩︎
Some third-party actions are already available in Workflow. According to Weinstein, more will be added soon. ↩︎