Links and Page Discovery

Link from one content node to another and let Webifier render the reachable pages.

A static website is a set of pages connected by hyperlinks. Webifier keeps that model: a page links to another source file, and the build renders that source file into the corresponding output page.

This is what makes the workflow feel natural for personal projects. Add a Markdown note, notebook, report, or YAML page. Link to it from content that is already reachable. Commit and push. The website grows from the same files you were already maintaining.

Markdown links can use explicit prefixes. md= tells Webifier to render the Markdown file as a content page and rewrite the link to the generated HTML.

reading:
  label: Reading
  content: |
    - [Navigation and Pages](md=pages/user-guide/03-navigation-and-pages.md)
    - [Publishing Content Files](md=pages/user-guide/04-content-files.md)

index= links to another YAML page. The target YAML file gets the same page treatment as the root index.yml: page controls at the top, sections below, generated HTML in the output.

tutorials:
  label: Tutorials
  content: |
    - [YAML Pages and Sections](index=pages/user-guide/tutorials/01-yaml-pages-and-sections.yml)
    - [Section Controls](index=pages/user-guide/tutorials/02-section-controls.yml)

YAML lists can also describe links as objects. src points to a file that Webifier should process. href or link points to something that already exists.

resources:
  label: Resources
  links:
    - src: pages/user-guide/05-configuration.md
      text: Configuration Basics
      description: Site config, defaults, and extension instances.
    - link: https://github.com/webifier/build
      text: Webifier on GitHub

Every YAML page can carry page-level controls. The root page usually defines site-wide config, but generated YAML pages can still set local page data, headers, templates, or page-specific config.

title: Experiment Report
header:
  title: Experiment Report
  description: A generated page linked from the main site.

config:
  theme:
    default: light

summary:
  label: Summary
  content: |
    This page can use the normal defaults or override what it needs.

The default building blocks are intentionally plain. Once a structure is repeated, move it into an extension:

  • A page renderer can define a full-page format.
  • A section renderer can render a specific block such as publications, experience, people, galleries, or courses.
  • A content renderer can turn a file type into a page.
  • Hooks can inject page-specific CSS, JavaScript, head tags, navigation, or footer content based on page config or page content.

In other words, YAML gives you the graph and the content. Extensions let your project decide what new objects mean.

Markdown link prefixes:

[Markdown page](md=pages/report.md)
[Notebook page](md=notebooks/run.ipynb)
[YAML page](index=pages/report.yml)
[PDF asset](pdf=assets/report.pdf)

Link object shape:

links:
  - src: pages/report.md
    text: Report
    description: Optional Markdown description.
  - link: https://example.com
    text: External link

Prefix summary:

Prefix Target Output behavior
md=... Markdown-supported content file Render a generated content page and rewrite the link to .html.
md=... Notebook file Render a generated notebook page when the notebook extension is enabled.
index=... YAML page Render another Webifier page.
pdf=... PDF file Render an embedded PDF page when the PDF extension is enabled.

Link object summary:

Key Meaning
src Local file Webifier should render or copy.
link / href Existing URL that Webifier should leave alone.
text Visible link text.
description Optional supporting Markdown text.
image / icon Optional presentation data used by link templates.
kind Optional renderer/presentation hint.