Shortcuts Tips: Search for Stock Photo

An iPhone faceup on a table.
(Image: cottonbro)

If you’re a long-time reader, you’ll know that HeyDingus doesn’t have a lot of photography. Screenshots? Sure. But featured photos? Not really. Despite having created a complicated shortcut for uploading pictures to a CDN, and cobbled together a workflow to make those Markdown-based images work with Squarespace, it’s rare that I include images in my posts.

Part of that is because I’m an inexperienced photographer without a lot of confidence. And it’s partly due to my influences — I tend to gravitate toward word-focused blogs like Daring Fireball. However, there’s no denying that the occasional featured image can enhance a post and key the reader into the subject. But with my Shortcuts-centric, iPhone and iPad-heavy workflow, what’s the best (read: easiest, because any friction will reduce my interest in using them) way to get quality photos ready to insert with Markdown?

With Shortcuts itself, of course!

I’ll cut to the chase. This shortcut searches a stock photo library, presents options, previews your selection, and then gives you options on what to do with it using the Share Sheet, and copies the photo’s credit to the clipboard. It’s pretty neat.

Get the Search for Stock Photo’ shortcut → Original Version | Latest Version

A Little Background

Months ago, I noticed a Shortcuts action provided by Toolbox Pro that mentioned Pexels photos. I knew I had seen that word, Pexels, before. A quick search showed me that it’s a stock photo library. It is similar to Unsplash (which seems to integrate with every service and their brother, including Squarespace) in that it offers free stock photos and videos but is different in that it isn’t owned by a large corporation.

When I saw that action, I knew I could build what I wanted: a shortcut that would let me choose a photo and then pass it and its metadata through to my existing workflows. But the key to its effectiveness was leveraging the excellent parameters that developer Alex Hay built into the Toolbox Pro action.

A screenshot of Toolbox Pro showing the search and output parameters of the ‘Find Pexels Photos’ action.
Toolbox Pro makes excellent use of both search and output parameters to make this an incredibly flexible action.

Now would be a good time to mention that while Toolbox Pro is a free application with tons of outstanding actions at no cost, this particular Find Pexels Photos’ action is part of its premium in-app purchase. That said, a mere $6 one-time payment unlocks all of the premium actions. I’ve barely scratched the surface of Toolbox Pro’s power, and there will be so much more to explore once Alex introduces macOS support down the road. Yes, that also means that this shortcut doesn’t yet work on the Mac. It’s a bummer for me, too.

Let’s get into how the shortcut is put together.

Putting Together the Pieces

A screenshot of the first two sections of actions in the shortcut.
Evaluating the Shortcut Input, getting the search query, and presenting the results.

1️⃣ I got clever in how this shortcut handles input. I wanted it to accept text input so that I could highlight a word in an article and then share it to the shortcut as the search term. I could have used iOS 15’s new Shortcut Input parameters to have it ask for text if nothing was passed in, but I wanted to reuse the actions if I needed to restart a search using the same search term — more on that later. So, in this case, I have the shortcut continue onto an If’ action when no input is passed.

The If’ action checks to see if the input has any value and then presents an Ask for Input’ action. When there is input detected, it’s filled by default. If not, the Ask for Input’ is blank.

2️⃣ Here’s the meat of the shortcut; the Find Pexels Photos’ action. You can see here that I’m using the If’ result as a Magic variable, labeled as searchQuery’. I’ve set the search parameters to be any orientation, a minimum of 12 megapixels, and providing 15 results. Those results are passed as a variable to a Choose from List’ action, using the Pexels Photos’ type.

A screenshot of the shortcut showing a list of search results.
The Choose from List’ action gives us rich, albeit small, thumbnail previews of the search results.
A screenshot of the 3rd through 7th sections of the shortcut’s actions.
Although it looks straghtforward, we get a little more advanced with these Choose from Menu’ choices.

3️⃣ Here’s where we start making use of the output parameters. This Get Images from Input’ action retrieves the image from the URL of the medium-sized image URL that Pexels provides. It’s big enough to preview using the Show Result’ action, but not full-quality. This method speeds things up and reduces the amount of data you’re downloading throughout the shortcut.

A screenshot of the shortcut in action showing a preview of the selected image.
Here’s where you can see the selected image in more detail.

4️⃣ Since the Choose from List’ thumbnails are pretty small, I wanted the option to choose again in case the selected image wasn’t quite right upon further inspection with Show Result’.

5️⃣ The first option is simply to continue, and it gets the variable for the selected image so it can be passed as the result of the Choose from Menu’ action.

6️⃣ The second option is where things get interesting. I told you we’d come back to rerunning this shortcut as a function. Since there’s no easy way to return to an arbitrary point in the shortcut once it’s running, the best way to return to the result list is just to run it again. So that’s what happens if you select No, choose again”. It reruns itself, passes the original search term as input, and stops the first run-through. It’s important to stop the initial shortcut here because otherwise, you get into a nasty loop.

Remember how the initial If’ action presents an Ask for Input’ based on the Shortcut Input. The shortcut will default to the inputted search term when running it as a function. All you need to do is hit Done”, but you could edit the query on the second round, too.

Running shortcuts as functions, especially running itself, is an advanced technique that I’m still somewhat wrapping my head around.

A screenshot showing the 7th through 9th sections of the shortcut’s actions.
Now we start getting to the goods.

7️⃣ If you’d prefer to start fresh rather than rerun the exact search, this option runs the shortcut as a function, but no input text is passed along. Again, we stop running the original flow with a Stop Shortcut’ action.

8️⃣ In the end, we want the actual full-quality photo, right? By using another Get Images from Input’ action, but acting on the Original URL output parameter this time, we download the selected photo for later use.

For a little while, I got tripped up by the Pexels Photo’ output parameter when I tried to use that as the final photo. It doesn’t work as well as getting the original image from its URL.

9️⃣ People like to be recognized for their work, so I do my best to credit anyone on HeyDingus for linked and quoted articles and any images that I use and didn’t create. Pexels doesn’t require it as part of their Terms of Service, but I still think it’s important.

This Text’ action formats the image credit the way I like them for HeyDingus. My personal preference is to credit the artist rather than the platform, so I link the photographer’s name back to the photo’s page on Pexels’ website. That page also links to the photographer’s profile and the rest of their work.

A screenshot of the final sections of the shortcut’s actions.
’Show Notification’ actions can include images, too.

🔟 All that’s left is to copy that Markdown-formatted credit text to the clipboard, so it can be pasted alongside wherever the photo goes next. However, I hope you’ll notice that there’s something special about the notification I use to confirm that everything has finished as expected.

In addition to displaying the text just copied to the clipboard, the Show Notification’ action lets you include an attachment. When adding the Selected Image’ variable, we get a tiny image preview right in the notification. I’ve set it to the Tiny URL parameter since it’s only going to be a small thumbnail anyway.

🎉 By grabbing the Magic Variable from our last Get Images from Input’ action for this Share’ action, you finally send it wherever you want next.

A screenshot of the shortcut in action showing the final notification and Share Sheet.
There we have it. The original quality stock photo and its credits ready-to-go.

I say finally”, but in reality, this whole shortcut runs in less than 30 seconds from start to finish — including typing in a search term and making a selection.

A photo of the back of an iPad on a table.
And here’s the resulting stock image! (Image: Josh Sorenson)

Get the Search for Stock Photo’ shortcut → Original Version | Latest Version

A brief note: When you run this shortcut for the first time, it will look like you’re passing along all of the search results and their metadata through the actions. I don’t know why it runs like that, but I can confirm that the result is only your selected image. If you choose Always Allow”, you won’t see that weirdness again.

A screenshot of the shortcut in action showing it trying to pass all of the search results to the next actions.
For some reason, this shows on its first run.

I’ve spent a lot of time testing and adapting this shortcut and had fun learning about some trickier techniques to get it just right. It’s amazing that you can build a tool like this that saves you from browsing through websites to download files and copy things endlessly back and forth. I look forward to using it to spruce up my blog posts, and I hope you’ll get some use out of it, too.

Shortcuts Blogging

❮ Previous post

Pixels Barely Reach Toddling Age Before Google Gives Up On Them January 27, 2022

Next post ❯

‘Google abandons FLoC, introduces Topics API to replace tracking cookies’ January 27, 2022