docs/Seed Pages

Seed Pages#

Write [[Something You Have Not Written Yet]] and mdssg does not give you a broken link. It builds the page.

Not a stub, and not a 404 with a nicer face: a real page at a real URL, assembled out of every sentence anywhere on the site that mentioned that name, each one quoted and linked back to where it came from.

This page has one linked from it. Future Note has not been written. Follow it and you will land on a page built entirely out of the places it gets discussed.

Why this is the interesting part#

Every other generator treats an unresolved link as an error condition. The best of them degrade it to plain text so readers do not hit a 404.

But an unwritten link is not a mistake. It is the most useful thing in a set of notes: a place where you already knew a concept belonged before you had worked out what to say about it. Throwing that away, or painting it grey, discards the signal.

Collecting the mentions instead turns it into something you can read. A seed page shows you the shape of a note before the note exists — and quite often shows you that you have already written it, scattered across four other pages.

Closed under linking#

Because every link target has a page, an internal dead link cannot be produced. Not "should not" — the build has no way to emit one.

The test suite asserts this directly: after a build, every internal href in every output file must resolve to a file that exists in the output. It is the thesis of the project written as a single assertion, and it catches breakage in link resolution, slug generation, seed building and the incremental machinery described in How It Works, all at once.

The URL does not move#

This is what makes a seed safe to link to from outside the site.

A seed's URL comes from its name, through exactly the same function a real note's URL comes from. So when you eventually write the note — anywhere, in any folder — it lands on the URL the seed already had.

[[Future Note]]          with nothing written ->  /future-note/
content/notes/future.md  titled Future Note   ->  /future-note/

No redirect, no broken bookmark, no 301 to maintain. This only works because names are flat and paths are irrelevant; a URL derived from the folder would change the moment the note was filed somewhere.

It runs backwards too. Delete a note that other notes link to and its page does not vanish — it reverts to a seed, rebuilt from the mentions that outlived it. Those mentions are collected exactly the way Backlinks are, because they are the same thing seen from the other side.

Typos#

A seed is created for every unresolved name, including the ones you got wrong. mdssg does not suppress seeds that are only mentioned once, because a genuinely new idea is mentioned exactly once the first time you have it.

Instead it tells you when a seed looks like something you already wrote:

warning: [[Kannt]] (1 mention) looks like 'Kant' - typo?

And mdssg doctor lists every seed with its mention count, least-mentioned first, which puts the typos at the top where you can see them.

A seed still takes part in Related Notes, since being mentioned by three notes says as much about a name as writing it would have.

Turning it off#

See Configuration for the rest of the options.

[seeds]
enabled = false

Unresolved links then render as plain text with a wikilink-missing class, and the site is no longer closed under linking. Seed pages carry <meta name="robots" content="noindex,follow"> by default, and never appear in the RSS feed — a feed is for finished writing, and a seed is the opposite of that. The follow matters: the crawl graph stays intact even while the pages themselves stay out of the index.

Connections