Inspired by all this, and wanting to see if I could come up with something that didnāt use IFTTT, I searched Github to see what kind of Hypothesis export scripts were out there, and Iāve cobbled together a workflow (blogged here ). What follows was created in the context of working on a Mac; PC will be broadly similar.
Basically, if you have python installed on your machine:
Get your annotations
Install āHypexportā from GitHub - karlicoss/hypexport: Export/access your Hypothes.is data: annotations and profile info . Install it with
pip3 install --user git+https://github.com/karlicoss/hypexport
Then, create a new text file; call it secrets.py and put into it your Hypothesis username and your developer token (which is underneath your username when you have hypothesis open) like so:
username = "USERNAME"
token = "TOKEN"
Save that file.
Now, you can grab all of your annotations with:
python3 -m hypexport.export --secrets secrets.py > annotations.json
Turn json into markdown
Now we need to turn that json into markdown.
( Incidentally, if you want to turn your annotations into a csv, get jq and run something like this
jq -r '.annotations[] | [.text, .tags, .updated, .uri] | @csv' annotations.json > annotations.csv
)
So, hereās a json to markdown script: GitHub - PolBaladas/torsimany: š”āļøļø ā¬ļøļø JSON to Markdown converter - Generate Markdown from format independent JSON . Pip install that:
pip install torsimany
but then find where itās located on your machine (search for torsimany.py) and change this line
data = f.read().decode('ascii', 'ignore')
to just
data = f.read()
and then run
torsimany annotations.json
at the command prompt (in the folder where you downloaded your annotations to), and after a bit youāll have a file called annotations.markdown. (Incidentally, you can modify the torsimany.py script with your own preferences for how the different elements should be rendered as markdown, if you donāt like the defaults).
Split into individual markdown files
Last thing ā we want to split that up into separate markdown files, to drop into the obsidian vault. cpslit, split, awk, etc, all of those things will probably work; hereās some perl (Macās have perl installed by default). Copy it into a text file, save with .pl, and if youāre on a mac, change its permissions with
chmod +x split.pl
so you can run it. Hereās the file (sourced from stackoverflow):
#!/usr/bin/perl
undef $/;
$_ = <>;
$n = 0;
for $match (split(/(?=### Title)/)) {
open(O, '>temp' . ++$n);
print O $match;
close(O);
}
then run
./split.pl annotations.markdown
and youāll have a whoooole lotta files you can drop into your obsidian vault. Ta da!
Fix the lack of file extensions
Now, youāll have to add the .md file extension, which can be done as a batch with this one liner on a mac:
for file in *; do mv "$file" "${file%}.md"; done
and there we go.
So, not perhaps as elegant as using IFTTT, but you can see every step in the process. Iāll eventually get around to making this all just a single script, but Iām learning as I go. No doubt there are far more elegant ways of making this all work.
Also, it is possible to install your own hypothesis server so that youāre not part of the larger Hypothesis system; I intend to figure that out eventually and will post it on my blog if ever I do. I am personally satisfied with how Hypothesis treats user data, but I understand the concerns of folks who might like more control.