Exporting User Data

Ryan Brewster
Keep It Up
Published in
3 min readJul 12, 2016

tl;dr:
Export — https://www.kifi.com/keepmykeeps
Import instructions — Refind, Chrome, Firefox

Any service that manages your data has an implicit contract with users: you give us your data and we’ll organize it, but it’s still your data; we are just stewards for it. At Kifi, one way we try to fulfill our end of this contract is by making sure users can export their data for offline use (or so they can import it into another service).

Determining exactly how much data to export, and in what format, is a balancing act. For the past few years we have offered two simple export formats: HTML and JSON. The HTML format is useful for browsing and importing into your browser, while the JSON format is more useful for developers who want a bit more information and control. Historically, both of these formats have been flat — not organized into teams or libraries.

One of the features we’ve been working on recently is a richer Kifi export. This blog post will contain some of the technical information about this new export format.

The Big Picture

If you visit kifi.com/keepmykeeps while logged in to Kifi, you’ll be prompted to download a ZIP-file containing all of your data. Upon unzipping this file, you’ll notice three things:

  1. importableBookmarks.html: an easy-to-import HTML file that contains all your keeps
  2. explorer/export.js: a Javascript file that contains all of your data, including your teams, libraries, keeps, and messages. We tried to throw in everything you might want
  3. explorer/index.html: a small HTML page bundled with some Javascript that lets you explore your data, and can help you pick and choose specific libraries that you want to import into another service

explorer/export.js

This Javascript file assembles your data into several large Objects: index, users, orgs, libraries, and keeps.

index

The index contains information about you, the teams you are a part of, and the users you collaborate with.

users/orgs

Each user/org (keyed by id) contains information about their respective entities, such as name, description, etc. Additionally, users and orgs both have a “libraries” field, which contains an array of all the library ids that belong to the user/org in question.

libraries

Each library (keyed by id) contains information about the library, such as name, description, and visibility. Additionally, each has a “keeps” field with contains an array of keep ids inside that library.

keeps

Each keep (keyed by id) contains info about the keep, such as its url, title, any notes and tags, any messages, and a brief text summary of the content if its available.

explorer/index.html

The explorer is a little Javascript that lets you explore your data offline. It relies on the Javascript objects assembled by export.js. Initially you will be presented with a top-level view, and from there you can descend into the hierarchy of your export.

In addition to displaying your exported data, the explorer can also format data from specific libraries or entire teams. If you want to import a subset of your keeps, this is a good way to accomplish that.

Going further

Our goal for this export is that importableBookmarks.html and the features of the export explorer would suffice for most users. If you need something that we haven’t accounted for, we hope you’ll find it straightforward to modify the Javascript explorer. Alternately, you may wish to dump all of the data into a single large JSON file (which can be done from the index page of the explorer) and use a language of your choosing to format your data.

Services that offer imports from Kifi

You can import the HTML format into both Chrome and Firefox.

Refind has instructions on how to import all of your Kifi information; props to them.

Dropmark has an import page that expects the HTML format.

--

--