← All posts

An Obsidian zettelkasten workflow built for web articles

April 24, 2026

Every zettelkasten post on the internet is written as if you are a German sociologist reading hardcover books in 1970. You underline a passage, write a permanent note, file a card, link it to two other cards. Beautiful. Also not what most people's reading actually looks like in 2026.

Most of us read articles. X threads. Substack essays. Pieces that vanish, paywall themselves two weeks later, or get quietly edited after publication. That input shape breaks the classic zettelkasten in places nobody writes about.

This post is the workflow I would run if I were building an Obsidian zettelkasten from scratch today, with the inputs I actually have.

Where the classic method breaks when your inputs are web articles

The zettelkasten works on the assumption that your source sticks around. Luhmann's books were on his shelf. A literature note pointed back to a real object. When he wanted to check the context of a permanent note, he walked three feet.

Web articles do not sit three feet away. They rot, move, or change under you.

  • The article gets paywalled after you read the free version.
  • The site migrates and every URL 301s somewhere useless (or dies).
  • The author rewrites the post and your permanent note now cites a sentence that is no longer there.
  • The tweet you based a zettel on gets deleted, and your note reads like a non sequitur.
  • You paraphrased so far from the source that in six months you cannot tell whether the idea was yours or theirs.

The classic answer is "make better permanent notes, not literature notes". That is correct advice and it does not solve this problem. A permanent note in your own words is still grounded in a source that might evaporate. Without the source, you lose the ability to check your own understanding against the thing that prompted it.

The fix is not a better note. The fix is a second layer underneath your zettel layer that stores the source itself.

Run two layers, not one: source layer plus zettel layer

Run two tools, not one. Let each do the thing it is good at.

  • Source layer. A read-later app that saves the full cleaned text of every article you save, indexes every word, and lets you search across all of them. The article itself lives here forever, even if the original URL rots. This is capture and preservation.
  • Zettel layer. A notes tool (Obsidian, Logseq, whatever markdown thing you love) that holds atomic notes in your own words, linked to each other. Each zettel has a one-line pointer back to the source in your read-later app.

Splitting the layers fixes the three most common failure modes of a web-article zettelkasten at once. You stop cluttering your vault with raw article dumps. You stop losing sources to link rot. And you stop paraphrasing so far from the source that you cannot audit your own thinking.

The pointer is the small important bit. Every permanent note gets a line at the bottom like Source: Keep library, "Title of the article". When you want to check what the author actually said, one click or one search and the full text is there.

A web-article zettel, concretely

Walk through one save end to end.

  1. You are reading an article on attention residue. One paragraph reframes how you think about context switching.
  2. Save the article. Full text lands in your read-later app, indexed, with the original URL preserved.
  3. Open Obsidian. Create one atomic note. One idea per card, in your own words, about sixty to a hundred and fifty words. Title it as a claim, not a topic: Context switching has a decay tail, not a fixed cost.
  4. At the bottom, a source line: Source: Keep, Sophie Leroy "Why is it so hard to do my work?". No URL in the vault. The pointer is the title.
  5. Link the note to two or three existing zettels. Maybe Deep work sessions should be long enough to outrun the decay tail and Calendar blocks lie about cost if you have them. If nothing links yet, that is fine; Luhmann wrote many zettels that stayed orphaned for months before finding their neighbors.
  6. If a second idea is worth keeping from the same article, make a second atomic note. Do not cram two ideas into one zettel, even when they come from the same source. That collapse is the other common failure mode.

Notice what is not in the vault: the article body, the URL, a highlights dump, a summary. All of that lives in the read-later layer where it belongs. The vault stays a place for your thinking, not a place for saved reading material.

Obsidian, Logseq, Readwise Reader, and Keep, placed by honest fit

Four tools show up in almost every web-article zettelkasten setup I have seen. Each owns a different piece of the workflow.

Obsidian is the zettel layer default. Free for personal use, local markdown files, backlinks and graph view are core features rather than paid add-ons. Sync is $4 a month if you want end-to-end encrypted sync across devices (not required; iCloud, Syncthing, or a git repo all work too). The learning curve is real and vault discipline matters; without a clear structure an Obsidian vault sprawls faster than a Notion workspace. Nothing else on this list matches it for reading what you have written back to yourself.

Logseq is the second option for the zettel layer, and the right pick if outliner-style daily journals are how you actually think. Open source, still actively developed (latest release December 2025, with regular nightly builds). Every note is a block, blocks can be transcluded, and the default journal-plus-pages structure skips a lot of the "how do I organize this" trap that sinks new Obsidian vaults. The trade is that Logseq's data model is more opinionated than Obsidian's, and if outlining is not your native shape, you will fight it.

Readwise Reader is the read-later app with the strongest bridge into a zettelkasten if your method is highlight-first. Read the article inside Reader, highlight as you go, highlights sync to a daily review queue and to Obsidian via the official Readwise Obsidian plugin. If "every permanent note starts as a highlighted passage" is how your brain works, start here. Reader is part of the Readwise Full subscription, $9.99 per month billed annually (or $12.99 monthly) at the time of writing.

Keep is the source layer if your reading is spread across articles, X bookmarks, and long-form posts that do not always live in one nice RSS feed. Every save stores the full cleaned markdown of the article, indexed word by word, and X bookmarks auto-sync in so the source layer stays current without you thinking about it. Keep does not have in-article highlighting yet, so it is the weaker pick if your zettel method depends on highlighting a specific passage as the save unit. Keep's strength is being the preserve-everything, search-anything layer that sits under the zettel layer, especially when the original tweet or article disappears.

If you already live in Readwise Reader and highlight as you read, that is your source layer; keep it. If your reading is messier than that and you save from six places, Keep is the better source layer. In both cases, Obsidian or Logseq is the zettel layer on top. Do not try to make a single tool be both.

Reviewing and relinking so zettels do not just pile up

Capture is half. The other half is rereading and relinking, and the part of zettelkasten the blogosphere is quietest about.

A loop I have watched hold up for more than a year looks roughly like this.

  • Weekly, ten minutes. Scroll the zettels you wrote in the last seven days. Re-read each one. If any of them want to link to something older that you forgot about, link it now. If any of them should have been two notes, split them.
  • Monthly, thirty minutes. Pick one topic tag with twenty or more notes on it. Read every note under the tag end to end. Not to edit. Just to re-enter the material so new writing has it loaded.
  • On demand. Before you start a draft, search your source layer full-text for the topic and pull the actual quotes back. Then search your zettel layer for the linked permanent notes. You are using the read-later app to audit what you actually read and the zettel layer to use what you actually thought.

If you want to get more out of the source layer than search alone, the fact that Keep stores every save as plain markdown means an MCP-capable client can read it directly. You can ask Claude or Cursor questions like "pull three passages I have saved about attention residue that would fit in a draft about deep work", and it is reading from your actual library, not hallucinating. See the digital commonplace book post for that same LLM-query pattern applied to a different system.

What people get wrong when they try this

A few repeating failure modes, written down so you can skip them.

  • Putting the article into Obsidian. A web clipper plugin drops the full article body into a vault note, and six months later the vault is 80% article dumps and 20% your notes. Keep the article out. The vault is for your thinking.
  • One zettel per article. The cardinal sin. One zettel equals one idea, not one source. A single article can seed three or four zettels; a dense essay can seed ten. If you are averaging one per article, you are writing literature notes and calling them permanent notes.
  • Paraphrasing so loose it is basically original writing. If your zettel could be about two different articles, you have stripped it too far. Keep one concrete hook from the source in the note, a specific example or a named claim, so future-you can still audit it.
  • Treating the source layer as a to-read queue. That is a different tool with a different job. Save-for-later and save-for-zettel are the same button; what differs is whether you ever come back. Route unread articles through a dedicated reading session, not through the zettel layer.
  • Rebuilding the whole thing every six months. Every zettelkasten tutorial suggests a slightly different folder layout, and every time you adopt the new one you burn a week of your own thinking on reorganization. Pick the boringest structure that works and stop rebuilding.

None of this is secret. It is the stuff the Obsidian subreddit rediscovers every third week, but spread out so nobody writes the summary.

A minimum viable setup you can run this week

If you want to start without making forty decisions, this works:

  • Obsidian with exactly one plugin enabled: Templates (built in).
  • A single top-level folder called zettels, no subfolders.
  • A second top-level folder called literature for the rare case where you want longer notes in the vault before atomising them. If you never use it, delete it later.
  • Six to eight durable topic tags you can name from memory.
  • Keep or Readwise Reader as the source layer. Pick the one that matches your reading shape, not the one with more features.
  • A weekly fifteen-minute review on the calendar.

Niklas Luhmann built a zettelkasten of roughly 90,000 cards over thirty-odd years, documented by the Niklas Luhmann Archive and Johannes Schmidt's 2016 scholarship on it. You are not trying to match that. You are trying to make a system where a year of reading shows up a year later as a thing you can write from. Splitting the source layer and the zettel layer is what makes that possible once your inputs are the modern web instead of a library.

Keep stores the full text of every article, tweet, and long-form post you save, so your zettelkasten source layer does not depend on the original URL still being alive. Start saving sources for your zettelkasten. If X bookmarks are part of your reading, connect them once in your subscription settings and every future save lands in the same library.