<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script>
// Resolve the saved theme preference (auto/light/dark) to a concrete
// data-theme before first paint, so there is no flash of the wrong theme.
(function () {
  try {
    var pref = localStorage.getItem("theme") || "auto";
    var dark = pref === "dark" || (pref === "auto" &&
      window.matchMedia("(prefers-color-scheme: dark)").matches);
    document.documentElement.dataset.theme = dark ? "dark" : "light";
  } catch (e) {}
})();
</script>
<title>Sitemap | pyssg</title>
<meta name="description" content="A fast, incremental static site generator for Markdown.">
<link rel="stylesheet" href="/assets/style.css">
<style>pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #F00 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666 } /* Operator */
.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #9C6500 } /* Comment.Preproc */
.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #E40000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #008400 } /* Generic.Inserted */
.highlight .go { color: #717171 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #04D } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #687822 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #00F; font-weight: bold } /* Name.Class */
.highlight .no { color: #800 } /* Name.Constant */
.highlight .nd { color: #A2F } /* Name.Decorator */
.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #00F } /* Name.Function */
.highlight .nl { color: #767600 } /* Name.Label */
.highlight .nn { color: #00F; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #A2F; font-weight: bold } /* Operator.Word */
.highlight .w { color: #BBB } /* Text.Whitespace */
.highlight .mb { color: #666 } /* Literal.Number.Bin */
.highlight .mf { color: #666 } /* Literal.Number.Float */
.highlight .mh { color: #666 } /* Literal.Number.Hex */
.highlight .mi { color: #666 } /* Literal.Number.Integer */
.highlight .mo { color: #666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #A45A77 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #00F } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666 } /* Literal.Number.Integer.Long */</style>
<style>pre { line-height: 125%; }
td.linenos .normal { color: #D8DEE9; background-color: #242933; padding-left: 5px; padding-right: 5px; }
span.linenos { color: #D8DEE9; background-color: #242933; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #242933; background-color: #D8DEE9; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #242933; background-color: #D8DEE9; padding-left: 5px; padding-right: 5px; }
[data-theme="dark"] .highlight .hll { background-color: #3B4252 }
[data-theme="dark"] .highlight { background: #2E3440; color: #D8DEE9 }
[data-theme="dark"] .highlight .c { color: #616E87; font-style: italic } /* Comment */
[data-theme="dark"] .highlight .err { color: #BF616A } /* Error */
[data-theme="dark"] .highlight .esc { color: #D8DEE9 } /* Escape */
[data-theme="dark"] .highlight .g { color: #D8DEE9 } /* Generic */
[data-theme="dark"] .highlight .k { color: #81A1C1; font-weight: bold } /* Keyword */
[data-theme="dark"] .highlight .l { color: #D8DEE9 } /* Literal */
[data-theme="dark"] .highlight .n { color: #D8DEE9 } /* Name */
[data-theme="dark"] .highlight .o { color: #81A1C1; font-weight: bold } /* Operator */
[data-theme="dark"] .highlight .x { color: #D8DEE9 } /* Other */
[data-theme="dark"] .highlight .p { color: #ECEFF4 } /* Punctuation */
[data-theme="dark"] .highlight .ch { color: #616E87; font-style: italic } /* Comment.Hashbang */
[data-theme="dark"] .highlight .cm { color: #616E87; font-style: italic } /* Comment.Multiline */
[data-theme="dark"] .highlight .cp { color: #5E81AC; font-style: italic } /* Comment.Preproc */
[data-theme="dark"] .highlight .cpf { color: #616E87; font-style: italic } /* Comment.PreprocFile */
[data-theme="dark"] .highlight .c1 { color: #616E87; font-style: italic } /* Comment.Single */
[data-theme="dark"] .highlight .cs { color: #616E87; font-style: italic } /* Comment.Special */
[data-theme="dark"] .highlight .gd { color: #BF616A } /* Generic.Deleted */
[data-theme="dark"] .highlight .ge { color: #D8DEE9; font-style: italic } /* Generic.Emph */
[data-theme="dark"] .highlight .ges { color: #D8DEE9; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
[data-theme="dark"] .highlight .gr { color: #BF616A } /* Generic.Error */
[data-theme="dark"] .highlight .gh { color: #88C0D0; font-weight: bold } /* Generic.Heading */
[data-theme="dark"] .highlight .gi { color: #A3BE8C } /* Generic.Inserted */
[data-theme="dark"] .highlight .go { color: #D8DEE9 } /* Generic.Output */
[data-theme="dark"] .highlight .gp { color: #616E88; font-weight: bold } /* Generic.Prompt */
[data-theme="dark"] .highlight .gs { color: #D8DEE9; font-weight: bold } /* Generic.Strong */
[data-theme="dark"] .highlight .gu { color: #88C0D0; font-weight: bold } /* Generic.Subheading */
[data-theme="dark"] .highlight .gt { color: #BF616A } /* Generic.Traceback */
[data-theme="dark"] .highlight .kc { color: #81A1C1; font-weight: bold } /* Keyword.Constant */
[data-theme="dark"] .highlight .kd { color: #81A1C1; font-weight: bold } /* Keyword.Declaration */
[data-theme="dark"] .highlight .kn { color: #81A1C1; font-weight: bold } /* Keyword.Namespace */
[data-theme="dark"] .highlight .kp { color: #81A1C1 } /* Keyword.Pseudo */
[data-theme="dark"] .highlight .kr { color: #81A1C1; font-weight: bold } /* Keyword.Reserved */
[data-theme="dark"] .highlight .kt { color: #81A1C1 } /* Keyword.Type */
[data-theme="dark"] .highlight .ld { color: #D8DEE9 } /* Literal.Date */
[data-theme="dark"] .highlight .m { color: #B48EAD } /* Literal.Number */
[data-theme="dark"] .highlight .s { color: #A3BE8C } /* Literal.String */
[data-theme="dark"] .highlight .na { color: #8FBCBB } /* Name.Attribute */
[data-theme="dark"] .highlight .nb { color: #81A1C1 } /* Name.Builtin */
[data-theme="dark"] .highlight .nc { color: #8FBCBB } /* Name.Class */
[data-theme="dark"] .highlight .no { color: #8FBCBB } /* Name.Constant */
[data-theme="dark"] .highlight .nd { color: #D08770 } /* Name.Decorator */
[data-theme="dark"] .highlight .ni { color: #D08770 } /* Name.Entity */
[data-theme="dark"] .highlight .ne { color: #BF616A } /* Name.Exception */
[data-theme="dark"] .highlight .nf { color: #88C0D0 } /* Name.Function */
[data-theme="dark"] .highlight .nl { color: #D8DEE9 } /* Name.Label */
[data-theme="dark"] .highlight .nn { color: #8FBCBB } /* Name.Namespace */
[data-theme="dark"] .highlight .nx { color: #D8DEE9 } /* Name.Other */
[data-theme="dark"] .highlight .py { color: #D8DEE9 } /* Name.Property */
[data-theme="dark"] .highlight .nt { color: #81A1C1 } /* Name.Tag */
[data-theme="dark"] .highlight .nv { color: #D8DEE9 } /* Name.Variable */
[data-theme="dark"] .highlight .ow { color: #81A1C1; font-weight: bold } /* Operator.Word */
[data-theme="dark"] .highlight .pm { color: #ECEFF4 } /* Punctuation.Marker */
[data-theme="dark"] .highlight .w { color: #D8DEE9 } /* Text.Whitespace */
[data-theme="dark"] .highlight .mb { color: #B48EAD } /* Literal.Number.Bin */
[data-theme="dark"] .highlight .mf { color: #B48EAD } /* Literal.Number.Float */
[data-theme="dark"] .highlight .mh { color: #B48EAD } /* Literal.Number.Hex */
[data-theme="dark"] .highlight .mi { color: #B48EAD } /* Literal.Number.Integer */
[data-theme="dark"] .highlight .mo { color: #B48EAD } /* Literal.Number.Oct */
[data-theme="dark"] .highlight .sa { color: #A3BE8C } /* Literal.String.Affix */
[data-theme="dark"] .highlight .sb { color: #A3BE8C } /* Literal.String.Backtick */
[data-theme="dark"] .highlight .sc { color: #A3BE8C } /* Literal.String.Char */
[data-theme="dark"] .highlight .dl { color: #A3BE8C } /* Literal.String.Delimiter */
[data-theme="dark"] .highlight .sd { color: #616E87 } /* Literal.String.Doc */
[data-theme="dark"] .highlight .s2 { color: #A3BE8C } /* Literal.String.Double */
[data-theme="dark"] .highlight .se { color: #EBCB8B } /* Literal.String.Escape */
[data-theme="dark"] .highlight .sh { color: #A3BE8C } /* Literal.String.Heredoc */
[data-theme="dark"] .highlight .si { color: #A3BE8C } /* Literal.String.Interpol */
[data-theme="dark"] .highlight .sx { color: #A3BE8C } /* Literal.String.Other */
[data-theme="dark"] .highlight .sr { color: #EBCB8B } /* Literal.String.Regex */
[data-theme="dark"] .highlight .s1 { color: #A3BE8C } /* Literal.String.Single */
[data-theme="dark"] .highlight .ss { color: #A3BE8C } /* Literal.String.Symbol */
[data-theme="dark"] .highlight .bp { color: #81A1C1 } /* Name.Builtin.Pseudo */
[data-theme="dark"] .highlight .fm { color: #88C0D0 } /* Name.Function.Magic */
[data-theme="dark"] .highlight .vc { color: #D8DEE9 } /* Name.Variable.Class */
[data-theme="dark"] .highlight .vg { color: #D8DEE9 } /* Name.Variable.Global */
[data-theme="dark"] .highlight .vi { color: #D8DEE9 } /* Name.Variable.Instance */
[data-theme="dark"] .highlight .vm { color: #D8DEE9 } /* Name.Variable.Magic */
[data-theme="dark"] .highlight .il { color: #B48EAD } /* Literal.Number.Integer.Long */</style>

</head>
<body>
<input type="checkbox" class="hidden-toggle" id="menu-control">
<main class="container">
  <aside class="book-menu">
    <div class="book-menu-content">
      <nav>
        
        <p class="book-brand"><a href="/">pyssg</a></p>
        
        
        
        
        
        
        
        
          <p class="book-section-title">References</p>
          <ul>
            
            <li><a href="/references/pyssg/">pyssg</a></li>
            
            <li><a href="/references/pyssg/cli/">pyssg.cli</a></li>
            
            <li><a href="/references/pyssg/cli/common/">pyssg.cli.common</a></li>
            
            <li><a href="/references/pyssg/cli/scaffold/">pyssg.cli.scaffold</a></li>
            
            <li><a href="/references/pyssg/cli/serve/">pyssg.cli.serve</a></li>
            
            <li><a href="/references/pyssg/config/">pyssg.config</a></li>
            
            <li><a href="/references/pyssg/contrib/">pyssg.contrib</a></li>
            
            <li><a href="/references/pyssg/contrib/apidoc/">pyssg.contrib.apidoc</a></li>
            
            <li><a href="/references/pyssg/contrib/external_links/">pyssg.contrib.external_links</a></li>
            
            <li><a href="/references/pyssg/core/">pyssg.core</a></li>
            
            <li><a href="/references/pyssg/core/build/">pyssg.core.build</a></li>
            
            <li><a href="/references/pyssg/core/builder/">pyssg.core.builder</a></li>
            
            <li><a href="/references/pyssg/core/dependency/">pyssg.core.dependency</a></li>
            
            <li><a href="/references/pyssg/core/errors/">pyssg.core.errors</a></li>
            
            <li><a href="/references/pyssg/core/graph/">pyssg.core.graph</a></li>
            
            <li><a href="/references/pyssg/core/hook/">pyssg.core.hook</a></li>
            
            <li><a href="/references/pyssg/core/incremental/">pyssg.core.incremental</a></li>
            
            <li><a href="/references/pyssg/core/incremental/cache/">pyssg.core.incremental.cache</a></li>
            
            <li><a href="/references/pyssg/core/incremental/depdiff/">pyssg.core.incremental.depdiff</a></li>
            
            <li><a href="/references/pyssg/core/incremental/hashing/">pyssg.core.incremental.hashing</a></li>
            
            <li><a href="/references/pyssg/core/incremental/invalidation/">pyssg.core.incremental.invalidation</a></li>
            
            <li><a href="/references/pyssg/core/node/">pyssg.core.node</a></li>
            
            <li><a href="/references/pyssg/core/phases/">pyssg.core.phases</a></li>
            
            <li><a href="/references/pyssg/core/registry/">pyssg.core.registry</a></li>
            
            <li><a href="/references/pyssg/core/scheduler/">pyssg.core.scheduler</a></li>
            
            <li><a href="/references/pyssg/core/types/">pyssg.core.types</a></li>
            
            <li><a href="/references/pyssg/layout/">pyssg.layout</a></li>
            
            <li><a href="/references/pyssg/plugins/">pyssg.plugins</a></li>
            
            <li><a href="/references/pyssg/plugins/api/">pyssg.plugins.api</a></li>
            
            <li><a href="/references/pyssg/plugins/asset_copy/">pyssg.plugins.asset_copy</a></li>
            
            <li><a href="/references/pyssg/plugins/collections/">pyssg.plugins.collections</a></li>
            
            <li><a href="/references/pyssg/plugins/content_meta/">pyssg.plugins.content_meta</a></li>
            
            <li><a href="/references/pyssg/plugins/directory_loader/">pyssg.plugins.directory_loader</a></li>
            
            <li><a href="/references/pyssg/plugins/frontmatter/">pyssg.plugins.frontmatter</a></li>
            
            <li><a href="/references/pyssg/plugins/highlight/">pyssg.plugins.highlight</a></li>
            
            <li><a href="/references/pyssg/plugins/i18n/">pyssg.plugins.i18n</a></li>
            
            <li><a href="/references/pyssg/plugins/link_resolver/">pyssg.plugins.link_resolver</a></li>
            
            <li><a href="/references/pyssg/plugins/markdown/">pyssg.plugins.markdown</a></li>
            
            <li><a href="/references/pyssg/plugins/mermaid/">pyssg.plugins.mermaid</a></li>
            
            <li><a href="/references/pyssg/plugins/nav/">pyssg.plugins.nav</a></li>
            
            <li><a href="/references/pyssg/plugins/permalink/">pyssg.plugins.permalink</a></li>
            
            <li><a href="/references/pyssg/plugins/render/">pyssg.plugins.render</a></li>
            
            <li><a href="/references/pyssg/plugins/rss/">pyssg.plugins.rss</a></li>
            
            <li><a href="/references/pyssg/plugins/sitemap/">pyssg.plugins.sitemap</a></li>
            
            <li><a href="/references/pyssg/plugins/taxonomy/">pyssg.plugins.taxonomy</a></li>
            
            <li><a href="/references/pyssg/plugins/transclude/">pyssg.plugins.transclude</a></li>
            
            <li><a href="/references/pyssg/plugins/wikilink/">pyssg.plugins.wikilink</a></li>
            
            <li><a href="/references/pyssg/presets/">pyssg.presets</a></li>
            
            <li><a href="/references/pyssg/presets/blog/">pyssg.presets.blog</a></li>
            
            <li><a href="/references/pyssg/presets/docs/">pyssg.presets.docs</a></li>
            
            <li><a href="/references/pyssg/themes/">pyssg.themes</a></li>
            
            <li><a href="/references/pyssg/watch/">pyssg.watch</a></li>
            
            <li><a href="/references/pyssg/watch/events/">pyssg.watch.events</a></li>
            
            <li><a href="/references/pyssg/watch/ignore/">pyssg.watch.ignore</a></li>
            
            <li><a href="/references/pyssg/watch/watcher/">pyssg.watch.watcher</a></li>
            
          </ul>
        
        <div class="book-menu-footer">
          
          <button type="button" id="theme-toggle" class="theme-toggle" aria-label="Toggle color theme">
            <svg class="theme-icon" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="7" fill="none" stroke="currentColor" stroke-width="1.4"/><path d="M8 1 A7 7 0 0 1 8 15 Z" fill="currentColor"/></svg>
            <span class="theme-label">Auto</span>
          </button>
        </div>
      </nav>
    </div>
  </aside>
  <label for="menu-control" class="book-menu-overlay"></label>

  <div class="book-page">
    <header class="book-header">
      <label for="menu-control" class="menu-toggle" aria-label="Toggle menu">&#9776;</label>
      <strong>Sitemap</strong>
      <span class="header-spacer"></span>
    </header>
    
<article class="markdown book-article">
  
  <nav class="breadcrumbs">
    <a href="/">Overview</a> <span class="sep">/</span> <a href="/sitemap.xml/">sitemap.xml</a>
  </nav>
  
  
  <?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://pyssg.nkthanh.dev/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/explanation/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/explanation/architecture/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/explanation/incremental-builds/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/explanation/linking-model/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/explanation/plugin-pipeline/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/how-to/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/how-to/api-reference/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/how-to/customize-theme/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/how-to/deploy/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/how-to/internationalization/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/how-to/write-a-plugin/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/reference/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/reference/cli/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/reference/configuration/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/reference/frontmatter/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/reference/plugins/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/cli/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/cli/common/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/cli/scaffold/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/cli/serve/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/config/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/contrib/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/contrib/apidoc/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/contrib/external_links/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/build/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/builder/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/dependency/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/errors/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/graph/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/hook/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/incremental/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/incremental/cache/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/incremental/depdiff/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/incremental/hashing/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/incremental/invalidation/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/node/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/phases/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/registry/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/scheduler/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/core/types/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/layout/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/api/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/asset_copy/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/collections/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/content_meta/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/directory_loader/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/frontmatter/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/highlight/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/i18n/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/link_resolver/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/markdown/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/mermaid/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/nav/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/permalink/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/render/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/rss/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/sitemap/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/taxonomy/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/transclude/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/plugins/wikilink/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/presets/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/presets/blog/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/presets/docs/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/themes/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/watch/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/watch/events/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/watch/ignore/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/references/pyssg/watch/watcher/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/tutorial/build-your-first-site/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/explanation/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/explanation/architecture/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/explanation/incremental-builds/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/explanation/linking-model/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/explanation/plugin-pipeline/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/how-to/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/how-to/api-reference/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/how-to/customize-theme/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/how-to/deploy/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/how-to/internationalization/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/how-to/write-a-plugin/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/reference/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/reference/cli/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/reference/configuration/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/reference/frontmatter/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/reference/plugins/</loc>
  </url>
  <url>
    <loc>https://pyssg.nkthanh.dev/vi/tutorial/build-your-first-site/</loc>
  </url>
</urlset>

  
</article>
<footer class="book-footer prevnext">
  <span class="spacer"></span>
  
</footer>


  </div>

  <aside class="book-toc">
    <div class="book-toc-content">
      
      
      
    </div>
  </aside>
</main>
<script>
// Theme switcher: cycles the saved preference auto -> light -> dark, applies it,
// and keeps "auto" in sync with the OS while selected.
(function () {
  var btn = document.getElementById("theme-toggle");
  if (!btn) return;
  var label = btn.querySelector(".theme-label");
  var mql = window.matchMedia("(prefers-color-scheme: dark)");
  var NAMES = { auto: "Auto", light: "Light", dark: "Dark" };
  function pref() {
    try { return localStorage.getItem("theme") || "auto"; } catch (e) { return "auto"; }
  }
  function apply(p) {
    var dark = p === "dark" || (p === "auto" && mql.matches);
    document.documentElement.dataset.theme = dark ? "dark" : "light";
    if (label) label.textContent = NAMES[p];
    btn.setAttribute("aria-label", "Color theme: " + NAMES[p]);
  }
  apply(pref());
  btn.addEventListener("click", function () {
    var order = ["auto", "light", "dark"];
    var next = order[(order.indexOf(pref()) + 1) % order.length];
    try { localStorage.setItem("theme", next); } catch (e) {}
    apply(next);
  });
  mql.addEventListener("change", function () { if (pref() === "auto") apply("auto"); });
})();
</script>

</body>
</html>