{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"project","url":"https://ejfox.com/projects/scrapbook-core","json_url":"https://ejfox.com/projects/scrapbook-core.json","generator":"ejfox.com/json-twin@1","data":{"cacheVersion":"2026-05-13-gear-cards","html":"<p class=\"\">I have gotten pretty good at saving interesting things that I see on the internet. Anytime I read something I think I might want to reference, show someone, or think about later, I chuck it into my bookmarks. I've done this for over 10 years now, making little notes of my favorite things while wading through the ever-expanding deluge of \"content.\" Now I want to take a step back and map the constellations that emerge.</p>\n<figure role=\"figure\" aria-label=\"A phyllotaxis of the scrap corpus — every screenshot placed by the golden angle, the way a sunflower packs its seeds\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/scrapbook-core/phyllotaxis.png\" alt=\"A phyllotaxis of the scrap corpus — every screenshot placed by the golden angle, the way a sunflower packs its seeds\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/projects/scrapbook-core/phyllotaxis.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/projects/scrapbook-core/phyllotaxis.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/scrapbook-core/phyllotaxis.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/projects/scrapbook-core/phyllotaxis.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"A phyllotaxis of the scrap corpus — every screenshot placed by the golden angle, the way a sunflower packs its seeds\" width=\"1600\" height=\"1600\" style=\"--splay-rot:1.18deg;\" data-dimensions=\"1600×1600\" class=\"img-full my-8 rounded-sm img-splay aspect-square w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">A phyllotaxis of the scrap corpus — every screenshot placed by the golden angle, the way a sunflower packs its seeds</figcaption>\n</figure>\n<p class=\"\">All of these things — mastodon posts, pinboard bookmarks, github activity, are.na blocks — can be thought of as various scraps of paper sitting on my desk, clipped out from some source material. But first I needed to reclaim my data from the various services in which they live. Scrapbook-core is that engine: a scraper for my Pinboard bookmarks, are.na blocks, public GitHub actions, and Mastodon posts, all coordinated in an index file that handles rate limiting, sequencing, and the CLI options, landing everything in one database — the substrate everything else (<a href=\"/projects/scrapbook-cli\" class=\"text-blue-600 dark:text-blue-400\">the CLI</a>, <a href=\"/projects/scrapscroller\" class=\"text-blue-600 dark:text-blue-400\">the scrollers</a>) reads from. Every bookmark gets fetched and summarized into a standalone list of facts, tagged, embedded for similarity searching and clustering, and mined for relationships — <code class=\"md-inline-code\">[Person:Stewart Brand] -[:CreatedBy]-> [Publication:Whole Earth Catalog]</code> — that I can easily turn into nodes and edges with some lightweight regex parsing.</p>\n<figure role=\"figure\" aria-label=\"Running the scraper\" class=\"\"><video class=\"img-full my-8 rounded-sm\" autoplay loop muted playsinline preload=\"metadata\" poster=\"https://res.cloudinary.com/ejf/video/upload/so_0,f_jpg,q_auto,w_1280/v1722610899/Screen_Recording_2024-08-02_at_10.59.48_AM.jpg\" src=\"https://res.cloudinary.com/ejf/video/upload/q_auto/v1722610899/Screen_Recording_2024-08-02_at_10.59.48_AM.gif\" aria-label=\"Running the scraper\"></video><figcaption class=\"\">Running the scraper</figcaption></figure>\n<p class=\"\">Even though no one will likely be using this specific tool except for me, I will be practicing a bit of self care in the form of a well-crafted tool that I can find, and most importantly, figure out how to use months or years down the line. The ability to own, possess, remix, and re-explore my own data is crucial for me to make sense of the world. It's how I access my own thoughts, understand <em class=\"\">how</em> I think about things, and to find creative paths forward and decide what is worth focusing on. If I gave up those responsibilities to a faceless algorithm whose goals are quite different from my own, I would be giving up quite a lot. You are what you eat.</p>\n<p class=\"\">The full story: <a href=\"/blog/2024/my-modern-scrapbook\" class=\"text-blue-600 dark:text-blue-400\">My Modern Scrapbook</a>.</p>","title":"Scrapbook Core","metadata":{"title":"Scrapbook Core","date":"2026-05-05T05:00:00.000Z","category":"Tools","featured":true,"url":"https://github.com/ejfox/scrapbook-core","tech":["JavaScript"],"state":"deployed","ai-involvement":"ai-assisted","tags":["tools"],"words":376,"images":2,"imageDetails":{"total":2,"cloudinary":2,"withDimensions":0},"links":5,"codeBlocks":0,"headers":{},"toc":[],"type":"post"}},"_links":{"self":"https://ejfox.com/projects/scrapbook-core.json","html":"https://ejfox.com/projects/scrapbook-core","index":"/projects.json"}}