Copying photos to Micro.blog from Instagram

Nicely done! :tada:

I figured out how to recreate this flow on Make.com (formerly Integromat), which has a more generous free tier than Zapier. I’ve tested it with this post (Instagram original) and it appears to all be hooked up right! With ownyourgram.com seemingly out of the picture, this is a (relatively) simple and free way to cross-post from Instagram to Micro.blog and retain control over that aspect of your social posting.

Note that you may need to run each step individually as you build it in order for the necessary fields to become available to map in later steps. This was the trickiest part for me, since it didn’t want to pass the latest Instagram post along more than once.

(Step 1) Watch Media from Instagram

Connects to your Instagram account and collects the new post when run.

(Step 2) Download Media from Instagram

Map the Media ID from Step 1 so it can hold onto the image for later steps.

(Step 3) Make an HTTP GET request

Use the https://micro.blog/micropub URL, GET Method, and for Headers make sure you leave just one space between “Bearer” and your Access Token generated from your Micro.blog account settings. The Query String name and value are q and config And don’t forget to switch ‘Parse response’ to Yes so that you can get the granular bit you need for the next step.

(Step 4) Make an HTTP POST request

Here’s where it’s a little complicated. You don’t need to map any data from the previous step to the top URL field. https://micro.blog/micropub/media will do. Use the POST method. Headers are the same as Step 4. For the body type, you’ll select 'Multipart/form-data, and add three fields. The first two are Text fields, with keys / values of h / entry and type / image/jpeg. The third field item is ‘File’ with key of file and the value, you’ll select the Download Media that we got in Step 2. Again, select Yes for ‘Parse Response’.

(Step 5) Make an HTTP POST request

We make another POST request, and go back to the https://micro.blog/micropub URL. No Headers or Query Strings necessary this time. Body type is ‘Multipart/form-data’ and we’ll make three field items again. They’re all ‘Text’ fields this time, with keys / values of h / entry and access_token / just the access token from Steps 3 & 4. The third ‘Text’ item is what we’ve been aiming toward: the Micro.blog post. The key is content and for the value, you’ll type out what you want the post to look like, and you’ll include the image’s new URL on micro.blog as mapped from the result of Step 4. That’s the 5. data: url bit you see in the screenshot. You can customize this value to your heart’s delight, but I styled it with the Caption item mapped from Step 1 first, followed by the :camera: emoji, so it gets grouped by Micro.blog’s emoji tags. I left a blank line and then an <img src="UPLOADED-IMAGE'S-NEW-MICRO.BLOG-URL.jpg"/>. This style puts it in line with the default formatting of image posts when uploaded directly to Micro.blog.

And that’s it! Post something new to Instagram, and then run the whole scenario as a test before turning on the scheduling feature. After scheduling is turned on, it’ll take care of posting any photos to your Micro.blog automatically. You could then use cross-posting in your Micro.blog settings to get that photo elsewhere, too.

Limitation: The method as described above is limited to single photo posts, or just the first photo from multi-photo posts. If you want to exclude multi-photo posts and videos, add a filter after Step 1 that matches the ‘Media Type’ to ‘IMAGE’. Multi-photo posts (CAROUSEL_ALBUM) and videos (VIDEO) will get stopped from moving onto the next steps.


A big thanks to @gr361 for creating this shortcut, which I used to debug my GET/POST requests.

1 Like

Turns out adapting this to work with videos was pretty easy. You can a Router step and then branch off to different outcomes using filters.

For the top route for images, I used a Filter that checks for the ‘Media type’ of either IMAGE or CAROUSEL_ALBUM and designated it as the fallback route. This makes sure that at least an image will get uploaded from whatever gets posted to Instagram.

For the bottom route for videos, I added a separate filter looking for the VIDEO media type. Then I copied and pasted the HTTP requests to hook them up.

Finally, I just had to edit two of the fields to work with videos rather than images.


video/mp4 is the new value for the type key.


and <video><source src="MICRO.BLOG_VIDEO_URL_FROM_LAST_STEP.mp4" type="video/mp4"></video> is all you need for the content value!

Here’s my example post and the Instagram original.

Make.com has some powerful actions. Perhaps grabbing multiple photos from a CAROUSEL_ALBUM will also be possible, but that’s an endeavor for another night.


I also documented this on my blog, for posterity.

Ooh. Thank you. I’m off to create a Make.com account.