Ever since my discovery of the IndieWeb movement, I've wanted to free myself from Facebook (and Instagram) and their brand of surveillance capitalism. I want to own my own data, and be in control of how it is shared, and I don't want it to be used for advertising.
I've had this incarnation of a personal website for a few years, and have mostly been following the POSSE publishing model, publishing most forms of content on my website, and then automatically (or manually) syndicating that content to silos like Facebook and Twitter. But, much of my content still remains trapped inside of Facebook and Instagram.
Until now.
As of March 4, 2018, I've pulled the vast majority of my Facebook content into my website, and all of my Instagram photos into my website, paving the way for me to delete myself from Facebook (and potentially Instagram) by the end of 2018. What follows is a high-level overview of how I made the move.
Exporting Data from Facebook
While Facebook does offer an export feature, its extremely limited, only includes very low resolution versions of your photos, and is generally very difficult to process programmatically. After some research, I discovered the excellent fb-export project on GitHub. Once installed, this tool will dump a huge amount (though, not quite all) of your Facebook data into machine-readable JSON files.
Since my website is compatible with the Micropub publishing standard, I then needed to convert this Facebook-native JSON data into microformats2 formatted JSON. Enter granary, an amazing swiss-army knife of IndieWeb by Ryan Barrett. Using granary, I whipped up a quick script that transforms the exported data into native microformats2 formatted JSON:
Publishing Liberated Data
At this point, I had a directory full of data ready to publish. Sort of. Unfortunately, not all of the data is easily translatable, or even desirable, to publish to my website. As a result, I created another script that let me, on a case by case basis, publish a piece of content, choose to skip it entirely, or save it to deal with later.
After running this script, I had a significant amount of my data copied from Facebook to my website. Huzzah!
Dealing with Photo Albums
Facebook has a "photo albums" feature, and I definitely wanted to get those memories onto my website. Again, I wrote a script that processes the exported data, and selectively allows me to upload all of the photos in an album to my website via Micropub, and then drops microformats2 JSON out that I could publish later.
Once I finished processing and uploading all of the photos for the albums I wished to copy over, I ran a simple utility script I keep around to publish all of the albums as new posts to my website.
Here are some of the results:
Notice, one of these comes all the way back from 2009!
Almost There
There are still quite a few photos and other types of posts that I haven't yet been able to figure out how to migrate. Notably, Facebook has strange special albums such as "iOS Uploads," "Mobile Uploads," and "iPhoto Uploads" that represent how the photos were uploaded, not so much a group of related photos. Unfortunately, the data contained in the export produced by fb-export isn't quite adequate to deal with these yet.
Still, I am quite pleased with my progress so far. Time to move on to Instagram!
Instagram has been slowly deteriorating as a service for years, so much so that I decided to completely stop publishing to Instagram earlier this year. It turns out, dealing with Instagram is a lot easier than Facebook when it comes to liberating your data.
Downloading My Data
After some research, I found instaLooter on GitHub, which allowed me to quickly export every single photo in its original resolution, along with nearly every bit of data I needed... except the photo captions. I ran instaLooter, and embedded the unique identifier in the filenames (which instaLooter refers to as the "code').
Getting Metadata and Publishing
I wrote a script that used granary to lookup the photo metadata and publish to my website via Micropub:
Note, I used the non-JSON form of Micropub in this case, because Known's Micropub implementation doesn't properly handle JSON for photos yet.
Conclusions
It turns out, that with a little knowhow, and a lot of persistence, you can liberate much of your data from Facebook and Instagram. I feel well on target to my goal of leaving Facebook (and maybe Instagram) entirely.
Comments (32)
@cleverdevil Nice work! I pretty much stopped using Facebook about a year ago, but have some lingering activity on Instagram. This is a nice push to finish cutting all those cables. (Sorry, replied to the wrong post the first time... want to keep this post for reference.)
Technically impressive, but I always hate to see friends leave Facebook.
(I've never understood the point of Instagram.)
I’m hoping that it becomes easier to follow friends using something other than Facebook.
You can always follow me on my website 😀
Is there something you can envision replacing FB, with a more acceptable business model that doesn't really on advertising?
Rodney Gurdal I think it’s inevitable. I’m currently enjoying Micro.blog as an alternative, and working on a project called “Together” that gives a very nice experience similar to Facebook, Instagram, and Twitter in a decentralized way.
For people who aren’t hyper technical, we are at least a year, maybe two (three?) away from it being viable.
Impressive work Jonathan LaCour!
😢
What's its business model?
Rodney Gurdal content is placed on your own website. You only pay for having a website. Everything is decentralized. Together is free and open source.
Micro.blog is the same concept, except it offers people who don’t have a website an easy path to getting one, and they pay a nominal monthly fee to host their website.
Hmm. Hard to imagine paid replacing free for regular people. And you have to go browse one friend's website after another? No more just browsing a feed? Sounds exhausting.
I would love to do the same; just so much work and time
Rodney Gurdal in Together, you get a feed just like on Facebook. It’s just populated with content from your friend’s websites.
Jonathan LaCour chat books offers a great option to print your Instagram photos and keep the date/caption/location. My kids love the books we make. I only use Instagram to create my chat books. ;-)
We do chatbooks with Instagram too! Helps us document our life and work in the neighborhood. I pick them up with the kids and we always enjoy looking through them .
For the curious, here is a video of what our Together project looks like: https:// cleverdevil.io/ s/ A94HmEbBLALplpcALmAc.mov
Oh, no!! How will I keep up w the kids??
@alans thanks! I’m relatively pleased with the progress 😀 Hopefully, soon I’ll figure out the other bits and pieces. Oh, and I still need to backfill Twitter.
This could get me blogging again. Is together allowing new users?
Jonathan LaCour has done some great work freeing himself from Facebook and Instagram, and his post is a good starting point for others who want to do the same. So far, I confess, I have not felt the need myself. There are no photographs in either of those silos that I don't have a copy of (actually, the original, not a copy) on my desktop computer. And any text I may have place on FB is also either a copy of something here or else completely insubstantial. Heck, I'm still bringing in old blog posts to my new system by hand, very slowly, and I haven't begun to bring in old posts from a previous incarnation of this stream. Maybe it is because I was an independent blogger long before either FB or IG saw the light of day, but I have never regarded those places as worthy of original material.
I’ll get Papa to help me! Don’t want to miss anything ❤️
Cool setup and migration scripts, Jonathan!
Just bookmark my website in your browser! I'm also thinking of setting up an email newsletter that will automatically email content from my site on a weekly basis.
Joe Joyce Together is freely available on GitHub, and we have a hosted version available at https:// alltogethernow.io, but you won't be able to use it yet unless you have a compatible website, which is really not easy to do yet for mere mortals :) We're working on it, though! That said, if you're looking to start down the path, I highly recommend https:// micro.blog!
Jonathan LaCour Is Micro.blog compatible with alltogether?
Jonathan LaCour uh oh. You lost me at bookmark. Literally. YIkes, I know I'm old school, but I usually get past the second word.
Paula Lampert Kyrios just visit this link: https:// cleverdevil.io
Jonathan LaCour Okay. I'll do my best.
Glad Papa’s retiring soon so we can see your faces up close and personal! ❤️❤️❤️
Excellent. If you turn it into a WP plug-in with a free version for XXX items and a paid version above XXX I bet you could make a nice chunk of change. #IdBeHappyToBeABeta
I am going to physically mail you recipe videos where the video is real fast and you can see the text and please follow my page
Jonathon, there are many posts out there arguing to get off Facebook or clean up your data, however my question has always been what to do with the data. I really like Martin Hawksey’s work associated with archiving Twitter, but I have never really come upon any process for bringing Facebook content into my own domain. I am going to explore this, even if to keep a private archive. Thanks you.