microblog

    Built-in support for the ‘Web of Markdown’?

    A Feature Request: Support for Static .md Outputs & Discovery

    Motivation: A Simpler, Less Exploitative Web

    I’ve been interested in a simpler, less exploitative web for a long time. It feels like the modern web is increasingly dominated by ads, intrusive surveillance, tracking scripts, and bloated layouts that mock our control over our own reading decisions.

    I’ve explored simpler alternative networks like Gopher and the Gemini protocol to find a quieter reading experience. But separate protocols don’t fit smoothly into my existing publishing workflow. They require running parallel infrastructure, managing new server software, and creating extra publishing overhead.

    At the same time, recent developments in AI have rapidly turned Markdown into the default lingua franca of the web. Micro.blog users already author their posts in native Markdown, as does everyone using a static site, so converting that source into HTML only to have tools and readers parse it back into text feels a bit redundant. Why not cut out the middleman and directly serve the original Markdown to anyone, human or software agent, who chooses to read it?

    The Web of Markdown ‘movement’ (maybe that’s a bit premature) feels like a practical way forward. It allows us to achieve calm, distraction-free, text-first reading directly on the HTTP(S) web we already use, without abandoning open standards or adding friction to our existing publishing stack. TBH, I don’t really understand why this isn’t already possible. Maybe it’s because people really love their wonderful graphics and styling and JavaScript functionality and html served programmatically etc. etc. I do too, but not for everything. Some sites are just simple. For many, simple is boring and obsolete, and won’t achieve what’s required. But can’t we at least have an option to stay simple? The recent AI love affair with Markdown may be a moment of opportunity to correct this.

    Summary

    I would like to propose support for the Web of Markdown philosophy across Micro.blog sites—either as an official community plugin or ultimately as a native platform toggle under Design Settings.

    As discussed across the web (e.g., Dave Winer’s Scripting News, Andrew Shell and his https://md.geekity.com, and scanners like IsItAgentReady), serving lightweight, unstyled Markdown alongside HTML makes sites instantly readable for distraction-free clients, RSS/Markdown aggregators, and AI agents. Because Micro.blog stores post content in Markdown natively and uses Hugo as its rendering engine, it’s well-positioned to move forward on this emerging standard.

    I’m not suggesting this proposal would solve all problems, or even many problems. As a counterpoint, I should perhaps mention Joost de Valk’s EmDash CMS. EmDash takes an agent-native, JSON-structured approach under the hood rather than relying solely on flat text files, though it still supports Markdown for round-trip editing. But that addresses a slightly different use-case: managing a CMS backend. Whereas I see serving clean Markdown as handy because both humans and bots can read the published output without much difficulty.

    Apologies in advance for using AI to come up with a draft project scope, since I’m keen but have no idea what I’m doing. Please let me know what you think (about the concept, that is, not my incompetence).

    Technical Specifications & Compatibility Requirements (Click to expand)

    1. Static Markdown File Generation

    Every published post and standalone page should build an accompanying Markdown endpoint at a predictable path (e.g., /post-slug/index.md or /post-slug.md).

    • Content: The generated file outputs the .RawContent of the post with Hugo shortcodes evaluated or cleaned.

    • Headers & Metadata: Plain-text header metadata at the top linking to the canonical source:

      # Post Title
      Date: YYYY-MM-DD
      Canonical URL: https://example.com/post-slug/
      
      [Original Markdown body content]
      
    • MIME Type: Static file delivery or edge routing must return Content-Type: text/markdown; charset=utf-8.

    Inject a discovery tag into the HTML <head> on single posts and pages:

    <link rel="alternate" type="text/markdown" href="https://example.com/post-slug/index.md" title="Markdown version">
    

    3. SEO & Canonicalization

    • The primary HTML page remains the primary canonical URL (<link rel="canonical" href="...">).

    • The .md file explicitly references the HTML permalink as its canonical URL.

    • Server responses for Content Negotiation include Vary: Accept headers to keep CDN/edge caches clear.

    4. Root Level llms.txt (Optional Extension)

    Generate /llms.txt at the root, listing recent posts pointing directly to their .md endpoints for streamlined indexing.

    Implementation Scope & Roadmap

    • Option A: Proof-of-Concept Plugin

      A packaged Micro.blog plugin supplying custom Hugo output definitions (config.json), a custom rendering layout (layouts/_default/single.md), and a <head> partial injection (layouts/partials/head.html).

    • Option B: Native Platform Integration

      A built-in toggle in Design Settings (“Enable Markdown endpoints for posts”). Bonus: Server/edge support for HTTP Content Negotiation (responding with Markdown directly when a request carries an Accept: text/markdown header).

    Some benefits for Micro.blog

    • Distraction-Free Reading: Provides clean text endpoints without JavaScript or styling overhead.

    • Agent & Reader Readiness: Complies with emerging web standards (isitagentready.com / md.geekity.com).

    • Low Overhead: Leverages existing Hugo output formats with minimal impact on build times.

    Now you can listen to Writing Slowly

    As attentive readers of this website will know, I’m happily using micro.blog as the site’s hosting platform. Micro.blog has a surprisingly wide range of features and it comes with several associated mini-apps, which provide easy access to those features. One of the apps is called Wavelength, and it has just been updated. This has inspired me, finally, to actually make use of it.

    Wavelength makes it easy to edit and publish voice recordings and now with Wavelength I’ve been recording my voice, reading aloud a number of the longer articles on this site. So if you navigate to one of these posts (nearly twenty of them so far) you might find there’s now a little ’listen’ button, which will enable you to hear me speaking my own written words.

    Why bother doing this? Well, so far it’s been quite fun, and you might just enjoy the opportunity to hear the person behind the writing.

    I feel these days it’s more important than ever to lean into our own humanity. Sure, you can get a better, more professional experience elsewhere, enabled no doubt by AI automation and by the mimicking of human experience rather than the real thing. But as I’ve pointed out before, my range is me.

    There’s an increasing amount of slop online and this is one small way to show my words are handmade and originated from a real person.

    I’m celebrating the human touch and trying to respect you, dear reader, as a real person too.1

    You’ll be relieved to know that while I might still insist on writing slowly, I speak at a reasonable speed.

    So do let me know what you think, and whether I sound like you imagined I would. And if you’d like to subscribe to the weekly e-mail digest, there’s never been a better time to do so.

    Talking of which, now would also be a pretty good time to check out my book, Shu Ha RI. The Japanese Way of Learning, for Artists and Fighters.

    A microphone is mounted on a black adjustable arm against a white wall.


    1. unless you’re actually a bot, scraping my voice to make scam adverts to send to my friends and family – in which case, my respect will be commensurately diminished. ↩︎

    Simon Willison says:

    💬 “I’m effectively using Substack as a lightweight way to allow people to subscribe to my blog via email.”

    I already do this easily via micro.blog and it’s a lot less convoluted. I guess he has complete control of the output though, provided he’s happy to tinker like this.

    💬 Back in 2018 I said “the next Web will be fit for humans”.

    And how did that little prediction go? Well, I’ve updated my original post with some reflections.

    How to get Strata for micro.blog up and running

    I’ve decided to make use of the ‘notes’ feature in micro.blog.

    This is like making private posts in a blog. But my main use case is brainstorming future blog posts. I want to take notes of half-formed ideas, which may or may not end up as blog posts. They’re not quite draft quality, but I have a hunch they’ll end up as public posts, not just remain as private notes.

    The Notes feature is very easy to use. You make notes from the main page by clicking on the ‘Notes’ menu item.
    And you can set up multiple ’notebooks’, which you can rename at will.

    Icon of the mobile application titled Strata.

    But there’s also an iOS app called Strata to make the experience easy and fun. That’s what I wanted to try.

    Read More →

    Micro.blog photo challenge April 2024. Day 3: Card. My daughter made this card for my birthday, to go with a themed collection of sci-fi novels.

    A hand-painted card depicting a planet or moon against a swirling blue-green background.

    #mbapr

    📷 Micro.blog photo challenge April 2024. Day 2: Flowers. This extraordinary bunch came our way. What a beautiful gift!

    A bunch of flowers on a wooden surface, with a guitar in the background.

    #mbapr

    Updating a Wordpress site this weekend felt like a chore. I really wanted to enjoy it, but the writing interface, with its content blocks, seemed to block the flow. Why is it like this? Feels like the priority is machine convenience, not the human experience. Opinions, anyone?

    The only problem with 📷🎉 completing the September 2023 micro.blog photoblog challenge - 30 days of posting photos - is that by the end I kind of felt like I needed a short rest. But with normal service now resuming, I’m writing slowly again!

    A cat lies curled up asleep

    📷🎉 Celebrating the completion of the September 2023 micro.blog photoblog challenge. 30 days of posting photos. I’ve really enjoyed seeing how everyone else interpreted the prompts.

Older Posts →