Lightroom’s Publishing Services are great for posting to sites like Flickr or portfolio sites where you can re-upload changed images after the initial post but other sites like Twitter, Instagram or Pinterest where posts are subsequently unchangeable make less sense for a Publishing Service There’s also the very transient nature of many social media sites where images quickly drop below the horizon, where there’s no longer any real need to keep them updated and a Publishing Service becomes un-necessary.
So sometimes exporting is the only alternative but one of the very nice things exporting doesn’t have that a publishing service does is upload tracking, where the service collection maintains separate sections for images that have been uploaded and those that are waiting. It would be nice if we could do something similar on exported shots.
I do this fairly obvious thing where I export a shot, upload it to, say, Twitter then go back and tag it “Twitter”. That way I can filter out all the images that I’ve posted and easily pick a couple that haven’t. It works well enough but doing it all by hand but it could take some streamlining. So I gave it some thought, came up with something that works and figured why not share it.
Apple Mac only.Kind of. Sorry but I don’t have easy access to a Windows machine. There’s no reason, on the face of it, why the methods described here shouldn’t work in Windows but the details may need tweaking. The plugin LUA source is open, if you feel like having a crack, knock yourself out and please do try this out with .bat or .cli files in place of the bash files. If you feel like sharing I’d be happy to post the changes here along with a namecheck.
Keeping Track of Exports
The system consists of a collection set, in this example ‘Twitter’ – because that’s where we’ll ultimately end up – which contains one normal collection and two smart collections. The normal collection, here named ‘Pool’ is the set of images that I’ll want to upload, I just chuck images I want to send to Twitter in here. They stay there even after they’re exported because I want a permanent record of what I’ve done. The two smart collections, “Posted” and “Not Posted”, are used to track what has and hasn’t been exported.
Fig 1. The collection of collections
You’ll also notice that I’ve put this tree of collections in a collection set of its own – Exports – because neat and tidy and because if you’re going to be exporting to a number of similar places later it makes sense to keep everything together.
We’re also going to create a keyword for our Twitter export, we’ll also call it “Twitter” (ta-daa) and like with our collections we’re going to place it under a master “Exports” keyword. This keyword will be used to tag images that have been exported to Twitter; if an image is tagged “Twitter” then it’s been exported, if it has no Twitter tag then it’s still waiting to go.
Fig 2. The Twitter Keyword in the Exports Keyword List
The Smart Collection Rules
Let’s take a look at the smart collection rules. We want:
- “Not Posted” to contain all the images in “Pool” but none that contain the keyword “Twitter”
- “Posted” again needs to contain all the images in “Pool” but only ones that have been keyworded “Twitter”
And here they are for each collection in the smart collection editor (right click on the collection, select ‘Edit Smart Collection…)
Fig 3. Rules for the Not Posted smart collection
Fig 4. Rules for the Posted smart collection.
Add rules by clicking on the ‘+’ icon
And now the export workflow will go something like this:
- Select and image in the “Pool” collection.
- Export it.
- Drag the image over onto the “Twitter” keyword in the Keyword List on the right.
- Upload the exported image to Twitter.
- Repeat, or just multiple select images and do them all in one go
Bazinga! exported image(s) automagically disappear(s) from “Not Posted” and reappears in “Posted”. Neat, huh?
Adding More Export Locations
If you need to add more exports using this method – Instagram, Google, whatever – just add a new collection tree under the main collection set and a matching keyword next to the Twitter one in your keyword tree and adjust the smart collection rules accordingly.
Fig 5. Adding more locations
You can create more ‘Pool’ collections for each export if you wish, uniquely named, obviously but, in this example at least, where I’m exporting to social media, I prefer to have just the one place where I dump all my candidates for social media, it makes thing easier to organise. But whatever works for you.
Improving on What We Have
The most obvious way to make this better would be to automate the keywording process, have Lightroom add keywords to exported images automagically. Vanilla Lightroom can’t do this – why not! – but I wrote an export plugin for. Download and installation instructions on this page.
Once installed the plugin will appear in the dropdown at the top of the Lightroom Export dialog.
The plugin more or less duplicates the existing Lightroom export functionality but adds an extra panel where you can set one or more keywords that will be applied to images once they’ve been exported. (ignore the ‘Post Script’ field for now, we’ll get to that later).
Fig 6. The BFEP plugin dialog with ‘Twitter’ in the keyword field
So in our example, add “Twitter” to the Keyword field and you’re good to go. Now, when you export your images, a Twitter keyword will be added to the image and it will it pop out of the ‘Not Posted’ collection straight into the ‘Posted’ one without any intervention on your part.
You might want to create a new export preset for your Twitter export (click the ‘+’ button in the preset bar on the left of the export dialog). Having an export preset for each destination will make life a whole bunch easier when you start adding more destinations. If you do end up with a few you might want to think about gathering them all together under one section as I’ve done below.
Fig 7. The Export preset list in the export dialog
More Improvement; Getting a Bit Technical
I made mention, earlier in the piece, of a Post Script field under the keyword field in the BFEP plugin. This field can point to a shell script (Mac, see notes below on making this work in Windows). If this field is set it will run the shell script pointed to on each image with the exported image path and whatever keyword you’ve set passed to it as arguments. You can do pretty much whatever you want in this script, in this example we’re going to use a post processing script to fire up Tweetbot and hand it our exported image ready for Tweeting. You’ll need to have Tweetbot installed, obviously. Get it from the App Store.
Using a text editor, make a text file ‘Twitter.bash’ in some convenient place on your drive and add the text below to it (Note, the line #!/bin/bash must be on the very first line of the script) and save it.
open -a /Applications/Tweetbot.app $1
Now hit the ‘Choose Script’ button in the ‘Post Script’ section of the BFEP export dialog and browse to the script you’ve just saved. Add the settings to the export preset list in the left or right click and choose ‘Update with Current Settings’ if you’ve already made a Twitter preset.
That’s it. Now, when you export using your Twitter export preset Tweetbot will fire up with your exported image already set, all you have to do is add Tweet some text, hit the ‘Tweet’ button and you’re done.
That’s it, you’ve just created an export that behaves a little bit like a Publishing Service and you can now quite easily keep track of which images you’ve posted to Twitter and which you haven’t.
Some Thoughts on Post Processing Scripts
Before I go I’ll leave some thoughts on how I use post processing scripts in my exporting pipeline, by way of what might come later here on the Buggering About blog. You may have noticed that the BFEP download page shows an example script that emails images after they’ve been exported. I’ve adapted this to use IFTTT‘s email channel to post images and messages to Facebook, LinkedIn, Picassa and a number of other sites.
I also use it to ease what was once the fairly convoluted process of pushing images from Lightroom to Instagram. I use sips, the OS X command line image processor, in a bash script to pad images with black to make them square without cropping. I then send them directly to the new Photos app using a bit of Applescript. Within a minute or two of exporting the images appear on my iPhone image library ready for uploading to Instagram. No more buggering about with Dropbox loading and saving, my images are just there on the phone. You can also use sips, or ImageMagic, to add borders to exported images, text, overlays, all sorts.
The simple act of adding a shell process into the workflow opens up all sorts of possibilities. Anything you can do to an image on the command line or through Applescript you can do automatically to an image exported from Lightroom. I’ll be talking about some of these methods in future blogs but in the meantime have fun with what’s here and please do used the comments section if you have any questions or suggestions and thanks for reading.