Introducing Wayback Link Preserver for Micro.blog

Links break. It’s one of the sad facts of the web — a blog post you linked to five years ago might just be gone today. The domain expired, the server was shut down, or the page was quietly removed. This is called link rot, and studies suggest that over 25% of all web links eventually stop working.

I built Wayback Link Preserver to do something about it, specifically for Micro.blog.

What it does

The plugin scans the external links in your blog posts and checks if they’re still alive. For broken links, it looks up the Internet Archive Wayback Machine for an archived copy. If one exists, a small green “View archived copy” badge appears next to the link, giving your readers a one-click fallback to the content you originally linked to.

Working links are left completely untouched. No icons, no styling, nothing changes.

How it works

When a reader visits one of your posts, two things happen:

  1. Every external link gets a quick liveness check. These run in parallel and are fast — usually under a second for a typical post.
  2. For any link where the server didn’t respond (expired domain, server offline, DNS failure), the plugin queries the Wayback Machine to find an archived snapshot.

Results are cached in the reader’s browser, so repeat visits don’t trigger any new requests.

The whole thing runs client-side — no server needed, no database, no background jobs. It’s just JavaScript that gets injected via the Micro.blog plugin system.

What it can’t do

Since the plugin runs in the browser, it can only detect server-level failures: domains that no longer exist, servers that are offline, connections that time out. It cannot detect a 404 page on an otherwise working server — the server still responds, but with an error page. Detecting that would require a server-side component, which Micro.blog’s plugin architecture doesn’t support.

Inspired by

Automattic and the Internet Archive recently released a Wayback Machine Link Fixer for WordPress. It’s a great plugin with server-side link checking, background jobs, and proactive archiving. I wanted something similar for Micro.blog, adapted to the constraints of a static site.

Try it

The plugin is open source and available on GitHub: wayback-link-preserver

You can install it from the Micro.blog plugin directory, or add it manually via Design → Edit Custom Themes → New Plug-in.

If you care about your links surviving the years, give it a try.

Jan Gradvall har med biljettkoll.se pÄ sin lista i DI Weekend. Roligt att höra hur fler och fler hittar biljetter till utsÄlda förestÀllningar.

Tack för all kÀrlek under kvÀllen, har varit otroligt. KvÀllens kodrunda för sl-map.gunnar.se blev följande uppdateringar:

  • Transporttyper — SpĂ„rvĂ€g, pendeltĂ„g och bĂ„tar har egna fĂ€rger
  • Destinationer — Se vart fordonet ska, t.ex. “3 mot Södersjukhuset”
  • Linjer & stationer — SpĂ„rvĂ€g och pendeltĂ„g visas pĂ„ kartan
  • Lagerpanel — Filtrera trafikslag

Upphittat vecka 7 2026

Hur jag byggde biljettkoll.se utan att skriva en rad kod

Auto-generated description: A group of people is standing closely together, with some looking forward attentively.

För precis ett Ă„r sen ville jag se hyllade förestĂ€llningen Arv pĂ„ Dramaten. Åtta timmar av magisk teater. Men tiden var knapp, det var inte mĂ„nga veckor kvar innan den skulle tas ner frĂ„n repertoaren. Jag satte upp en bevakning via en webbtjĂ€nst som skickade SMS nĂ€r bokningssidan Ă€ndrades och ordet “slutsĂ„ld” försvann. Jag sĂ„g Arv tvĂ„ gĂ„nger.

Det fröet lÄg kvar.

Torsdag, lunch

Den 30 januari installerade jag Claude Code i terminalen och pekade den mot en tom mapp pÄ datorn. Jag har jobbat med webb sedan 1995, som redaktör, produktÀgare, konceptutvecklare, men aldrig skrivit kod. Jag Àr nybörjare pÄ det hÀr, bÄde pÄ att utveckla och pÄ att ta hjÀlp av AI för att göra det. Men jag ville testa att bygga nÄgot pÄ riktigt. Som en webbsnickare som fÄr hjÀlp med bygget.

Hemma hade jag en Raspberry Pi 4, julklapp frÄn barnen. Stod i bokhyllan. Jag frÄgade Claude om den kunde installera det som behövdes dÀr.

Det gick bra.

“Kan du ta reda pĂ„ biljettstatus pĂ„ Dramaten?”

UngefÀr min första frÄga. Ingen spec, ingen wireframe.

Claude utforskade dramaten.se, hittade att förestÀllningsdata lÄg inbÀddad i sidans HTML, och frÄgade om jag ville spara det i en databas. Ja. Om jag ville kunna bevaka förestÀllningar. Ja. SÄ rullade det vidare.

“Jag vill skicka notiser via mejl nĂ€r det finns biljetter, kan du kolla vilka tjĂ€nster som Ă€r bra för det?” Claude kom tillbaka med alternativ och rekommenderade Resend – gratis, enkelt API. Jag sa kör.

“Kan du göra en tillgĂ€nglighetsgranskning?” Claude körde en, hittade problem, Ă„tgĂ€rdade.

“Är vi artiga mot deras servrar nĂ€r vi skrapar?” Claude la in pauser mellan anropen.

SÄ gick det till. Jag vet vad jag behöver frÄga om. Claude vet hur man bygger det.

Vid kvÀllen hade jag en fungerande webbapp. Skrapning, inloggning, bevakning, mejlnotiser. PÄ julklappen i bokhyllan.

Dag 2–4

Dag tvĂ„: SMS-notiser. Changelog. VĂ€lkomstguide. Jag bestĂ€mde att man loggar in innan man bevakar – fĂ€rre felstavade mejladresser.

Dag tre: fler teatrar. Kulturhuset Stadsteatern visade sig köra Tixly som biljettsystem. Liksom Uppsala, Scala, Malmö, Helsingborg, BorÄs och Göteborg. Sju av Ätta teatrar, samma system. En dag, Ätta teatrar.

Dag fyra: flytt frĂ„n Raspberry Pi till en riktig server. Egen domĂ€n – biljettkoll.se. Google-inloggning. Och stĂ€dning – 1 500 rader kopierad kod ersatt med gemensamma moduler. Varje skraper hade byggts som en kopia under de snabba dagarna. Jag sa att det behövde göras om.

I takt med att projektet vÀxte föreslog Claude att vi skulle ta fram en plan innan vi började bygga. Dag ett hade allt vuxit fram organiskt. Men Ätta teatrar och en refaktorering behövde struktur. Jag gick pÄ det.

Under helgen fick nÄgra vÀnner testa och komma med förslag pÄ förbÀttringar. OvÀrderlig hjÀlp som alltid.

CLAUDE.md

Det gick inte alltid smidigt. Claude föreslog vid ett tillfĂ€lle att jag borde optimera för Google med köplĂ€nkar sĂ„ att folk kunde hitta biljetter via min sajt. DĂ„ satte jag ner foten. Det hĂ€r ska aldrig vara ett stĂ€lle att köpa biljetter pĂ„. Det ska bara vara till för att upptĂ€cka förestĂ€llningar som byter status. DĂ„ fick jag ett ödmjukt “förlĂ„t, du har rĂ€tt, jag ska aldrig
” tillbaka.

Den typen av grÀnsdragningar hamnade i en fil som heter CLAUDE.md i roten av projektet. Claude lÀser den varje gÄng den börjar jobba. DÀr har Claude noterat mina krav: följ Web Sustainability Guidelines, var artig mot teatrarnas servrar nÀr vi skrapar, alla textelement ska fungera i mörkt lÀge med tillrÀcklig kontrast.

Det Àr i grunden min erfarenhet, fast nedskriven sÄ att Claude följer den varje gÄng.

Dag 5

Feber skrev om biljettkoll.se TjÀnsten var fyra dagar gammal och domÀnen en dag. En ironisk sak jag tÀnkt pÄ Àr att jag har byggt ett verktyg som gör det svÄrare för mig sjÀlv att fÄ tag i biljetter, men lÀttare för alla.

Vad jag lÀrde mig

Det Àr inte magi och det Àr inte kodning. Man behöver veta vad man vill bygga och varför. Man behöver kunna ge tydlig feedback pÄ resultatet. Jag bestÀmmer vart vi ska, Claude bygger vÀgen dit.

Jag snickrar redan pĂ„ nĂ€sta idĂ©, inspirerad av Johan Hallberg, “man borde köra en MVP* i veckan”. DomĂ€nen Ă€r ledig. Byggstarten har börjat.

* MVP = bygg den enklaste versionen av din produkt som faktiskt fungerar, slĂ€pp den, lĂ€r dig av anvĂ€ndarna, förbĂ€ttra sedan. IstĂ€llet för att gissa vad folk vill ha i ett halvĂ„r.​​​​​​​​​​​​​​​​ MVP - Minimum Viable Product

PopulĂ€ra teaterförestĂ€llningar Ă€r ofta utsĂ„lda i mĂ„nader. Men biljetter dyker upp – folk blir sjuka, planer Ă€ndras, extraförestĂ€llningar tillkommer. DĂ„ vill man ha koll. DĂ€rför byggde jag biljettkoll.se i helgen. Testa gĂ€rna. Vi ses i salongen.