My Photo and Blog-Writing Workflow
Long Escalators at the Kansai International Airport two years ago, just after getting my Nikon D200 --
Nikon D200 + Nikkor 18-200mm f/3.5-5.6 VR @ 105 mm — 1/40 sec, f/5.3, ISO 1600 — full exif
Long Escalators at the Kansai International Airport
two years ago, just after getting my Nikon D200

I'm occasionally asked about my photo and blog-writing workflow, and having just been asked twice in as many days, I thought I'd just go ahead and post about it.

Unlike this post, most of my non-technical posts have a lot of photos, either to tell a story (like this) or to just share pretty photos (like this). In either case, I start with the photos.

Photo Workflow

My photo workflow is pretty much the same whether it's a subject I intend to blog about or not...

  1. I download the tracklog from my GPS unit to my PC.
  2. I transfer the photos from the camera's memory card to a folder with a YYYY/MM/DD-description name. For example, my most recent set of photos, from which More Snow in Kyoto: Pretty Pictures This Time was populated, are in C:\photo\2008\02\13-North-Kyoto-Snow.

    The script that moves them also syncs up the photo times with the GPS tracklog, adding geoencoding metadata to the photos as they're moved. It also renames the image files to get around the camera's four-digit filename limit, putting the number the image should really have.

    Update: I now geoencode within Lightroom, using my GPS Support plugin.

  3. I then import these into Adobe Lightroom using the “import at current location” option, applying a metadata preset that inserts things like my blog url.

    You can see an example of how these kind of folders appear in Lightroom by clicking though to a bigger version of the first screenshot on this Lightroom post. I find theyear/month/date-description” layout to work out quite conveniently.

  4. In Lightroom, I select the folder I just imported to, set the filters to show “Picks and Unflagged Photos”, which is another way to say “exclude rejected photos.”

  5. I make a quick pass through the images, rejecting anything that's obviously trash. When I'm done, an application of Photo > Delete Rejected Photos gets rid of them all.

Blog-Prep Workflow

Writing a post starts with selecting and uploading the photos to my blog site...

  1. I go through the relevant photos in Adobe Lightroom, throwing candidates for publication into the quick collection.

  2. I often end up with 30 or more photos, and although I've been bad about keeping to it lately, I try to limit myself to 10 photos per post. So, I have to go cull them down, which is usually a difficult/painful process.

    If it's a story-based post, I'll use this image-selection process to start forming how I'll present the subject, and then turn around and use that presentation to further refine the selection process. I'll cut out photographically-interesting shots if they don't contribute much to the story, although I don't mind if a few nice shots sneak in. Some of the more interesting shots that don't make it to the post will be marked with a “2blog” keyword, which means I may revisit it for a post at a later date.

  3. I then go through the final photos and do any image-processing tweaks that are needed, such as cropping, rotation, brightness, etc. For the most part this is all done from with in Lightroom. These days, I use Photoshop rarely.

  4. I export all the photos from Lightroom using two export presets. One writes large versions (jpgs with a quality of 72, resized so the long edge is 1,800 pixels), and one writes smaller versions (jpgs with a quality of 53, resized so the long edge is 690 pixels).

Post-Writing Workflow

  1. I then run a script that grabs the photos just exported, removes some of the metadata (such as embedded thumbnails that just take up space), then copies them to my server machine. It then deletes the exported copies from my local machine.

    The script continues on my server where it then creates the text file that I write the post in, seeding it with all the images and the metadata seen under each picture.

    (I actually compose my blog posts in a text file, using Emacs (a text editor), then link it into my blog with my WordPress File-based Posts Plugin.)

  2. I try to pick a lead photo that stands on its own for its interestingness or photographic qualities, or that tells the whole story in a nutshell. Sometimes it's clear what photo I should use, but it's often difficult to select the lead image. Sometimes I'm thinking about this when culling images for the post, in which case I may pick one that doesn't add to the story, but that's representative of much of the story in a single image. The first image on the Intense Burn: Shinto Rite at the Heian Shrine is a good example of that.

  3. Since I'm posting mostly about daily events in my life, many posts are directly related to something I posted about earlier, so actually writing the prose usually starts with a visit to my blog's Full List of Posts to get the links that I often need in the post's first paragraph.

  4. I then write the prose for the post, adjusting the order of the images as needed. While doing this, I'll often sprinkle in links to relevant pages on Wikipedia or elsewhere on my blog. Sometimes this entails quite a bit of research, because I prefer not to look like too much of an idiot when I write about something.

    For example, in writing my first post about our trip to Amami (Amami Islands, Southern Japan), I spent hours researching all kinds of things. For the sentenceThe flight back from Amami was just an hour and fifteen minutes (about 575 miles)...I inspected my GPS tracklog to get the duration and distance. I tracked down the islands' populations on a Japanese-government website, and made maps for posting. I read all kinds of stuff about the history of Amami (such as it being under United States rule after WWII, being returned to Japan in 1953) that never made it into the post.

    This step can eat hours of my life.

  5. While writing the prose, I'll also caption the images, and adjust the spacing before and after the image to match the text: less space when the text is directly related to the image, and more space when there's a conceptual step between the two.

  6. Once I'm generally done, I'll reread the post, make corrections, spellcheck. Repeat a few times.

  7. Once that's done, I have some drudgery work that is never enjoyable (and so sometimes I skip it):

    • I write the “alt” text for images, which helps the search engines understand the image better.
    • I add hints to each image to indicate how the mini square thumbnail used on my index of photos should be created (e.g. should it be the square in the center of the image? or the square toward the left of the image? etc.)
    • If an image is particularly pleasing in a photographic sense – on its own, out of the context of the post – I'll mark it for one of my Media RSS photo streams. I haven't published these yet, but I'm preparing for the day by marking images now.
  8. I then run a script which checks that all the links in the post work, validates the HTML, inserts the proper width/height attributes on all the images, and a few other little things. If no errors are reported, I'm ready to publish.

  9. I pull up my blog's “new post” administration page, and plug in the name of the file I just composed the post in. I also indicate the appropriate blog categories (e.g. Desktop Backgrounds, Japan, Camera Gear, etc.), and choose a title for the post.

    Choosing a title is often the most difficult aspect of posting, because by the time I get this far, I'm running on empty and have no energy to think of something more interesting than what's obvious or cliché. Oh well. In any case, I try to stay away from “cute” titles, preferring to have titles that give the reader an appropriate expectation for the contents of the post. It's not as fun as being witty (or trying to be witty), but I think it respects the reader. People often choose to read or skip an entire post based only on the title, so I want to give them a reasonable basis for that decision.

    (Witty titles can be done well, as Good Morning Silicon Valley illustrates.)

  10. Once that's done, the post is live on my blog. But I'm still not done. I then run a script that creates the cross references seen in the “Followups and related posts” section at the end of each post. Another script then updates the index of photos, and finally, a third script contacts ping-o-matic to tell blog aggregators that I've published new content.

  11. Now that it's been published, I copy the permalink url of the post, and in Lightroom, insert it into the “Blog URL” metadata field for the posted images, just so I have it. Lightroom doesn't have a “Blog URL” metadata field, of course, but I repurposed a metadata field that I don't otherwise use to “Blog URL” via my Lightroom Metadata Viewer Preset Builder.

    I also assign those images Lightroom's red color label, which to my workflow means “has been posted on my blog.”

  12. By this time it's often well past midnight, so I treat myself to cold frosty beer.

This post took just over three hours to write. My beer awaits...

All 9 comments so far, oldest first...

WOW!! I just wing it…and I think the results show it. Always great reading Jeff.

Dude, you are an excellent writer. You don’t post much, but when you do, your posts are well organized on an overall scale, and well-written on a sentence-by-sentence scale.

My only gripe about your writing is that it’s so infrequent. I know you don’t have time to write a big opus every time, but an occasional pic of your kids would be nice to those of us stuck 7,000 miles away. —Jeffrey

— comment by Ray on February 16th, 2008 at 11:49pm JST (16 years, 3 months ago) comment permalink

Jeff, are your scripts available for download? I assume you’re using, exiftool, etc.? Even if they’re not “ready” for public consumption I’d still love to see them. I also have a mishmash of scripts but it sounds like you’ve discovered some tricks I’d like to learn — stripping thumbnails, batch renaming, etc. Thanks! -Peter

— comment by Peter Davis on February 17th, 2008 at 3:34am JST (16 years, 3 months ago) comment permalink

Great post, as usual. It shows you put a lot into your blog, I appreciate it. I also enjoy learning more about the nitty-gritty of different blogging approaches.


— comment by Gustaf Erikson on February 17th, 2008 at 7:03am JST (16 years, 3 months ago) comment permalink

Thanks for this great post. I took your advice and worked with my CSS on my new look and now it should center more effectively. Thanks for pointing it out!

I am currently just uploading 1 version of each picture, sized to 1000px wide. I then have to upload it via the wordpress “write” screen, put it in the editor, then edit the properties to be 710 wide. This displays the photos on my blog at 710 but not without some crispy artifacts from the size-down. If I upload a 710 wide image, then I would have to manually link to another version which is larger… too much work, I’m looking for an easy way to post images that look good and still enlarge. Maybe it’s just asking too much!

I wish I could just upload a photo of any size (even starting large like 10 or 12 MP, or not, wouldn’t matter as long as it was larger than my pre-set max size), and then have the blog resize it to a pre-set 710 version for the post view and a pre-set 1200 version for enlargement automatically. The huge version I uploaded would be discarded. I can dream…

— comment by Jon on February 17th, 2008 at 3:22pm JST (16 years, 3 months ago) comment permalink

I knew I recognized your name. Roaming about learning more about lightroom, I stumble for the second time this week on the regex site looking at your EXIF. Thanks for writing that book. I imagine you hear this frequently, but you should 🙂 I’ll be back, I think I’ll have plenty to learn from you here!

— comment by Steve on February 29th, 2008 at 10:06am JST (16 years, 3 months ago) comment permalink

I just found your lightroom workflow blog post and I might have something that will change your life & workflow. It has cut my editing time by 70%. I know it will look like this is an ad… but I didnt know how to e-mail you the info and assumed you will proof this before you post it.


Without saying too much, I have managed to create a keyboard specific to Lightroom users. It has cut my editing time by 70% because I no longer need to use my mouse to make changes to images because the keyboard controls most of the editing tools of Lightroom.

I thought your blog readers might be interested in knowing about it.

Tim Riley

— comment by Tim Riley on March 21st, 2008 at 10:47pm JST (16 years, 2 months ago) comment permalink


First, I would say that I appreciate to read your blog that I have discover a few days ago.

I have a question about your photo workflow : could you explain us how you syncs up your GPS tracklog with the photos at step 2 ?

Your answer will be appreciate !

PS : big thanks for your book “Expressions régulières” (in french) which is always in my library

Thanks for the kind words, Florent. I wrote my own software to compare image times with data points in my tracklog, which then uses exiftool to inject each image’s data into the image file. These days, there are plety of solutions out there for any OS, so I wouldn’t build my own if I were starting today, but there wasn’t much out there when I first did this, so I had to roll my own…. —Jeffrey

— comment by Florent Bouckenooghe on October 2nd, 2008 at 4:01am JST (15 years, 8 months ago) comment permalink

Very interesting… 勉強になりました!

I too am very interested in the various scripts you use to streamline and automate your process – especially the one that pulls each photo’s metadata and inserts it along with links to the images in a text file. It seems to me that this is something all photography enthusiasts can benefit from, and I’d love to see more bloggers doing it, as well as marking my own photos in that way.

— comment by Thorf on November 4th, 2008 at 11:37am JST (15 years, 7 months ago) comment permalink

It’s always cool to see how others do it. You didn’t mention anything about the exif data under each photo. Is this automatic from one of your scripts? Or perhaps a plugin? I’ve been trying to figure out how to do this for awhile without having to manually type it in for every image.


I have all kinds of custom scripts that I run on the server that hosts the blog. One grabs all the images that I’ve uploaded in the last few minutes and creates a post template with the images and all the metadata so that all I have to do is fill in the spaces between with witty text or compelling prose (or, in my case, rambling blather). I don’t know how others do it, but I can’t imagine doing it by hand. You might be able to configure Tim Armes’ LR/Transporter plugin to write the template for you. Hmmm… I could write a custom plugin that did this kind of thing…. Hmm…… —Jeffrey

— comment by Brian on January 23rd, 2009 at 8:35am JST (15 years, 4 months ago) comment permalink
Leave a comment...

All comments are invisible to others until Jeffrey approves them.

Please mention what part of the world you're writing from, if you don't mind. It's always interesting to see where people are visiting from.

IMPORTANT:I'm mostly retired, so I don't check comments often anymore, sorry.

You can use basic HTML; be sure to close tags properly.

Subscribe without commenting