<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Paper Blog</title>
        <link>https://linbo-cyber.github.io/paper</link>
        <description>一个用 Paper 构建的极简博客</description>
        <lastBuildDate>Sat, 28 Feb 2026 13:45:24 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <item>
            <title><![CDATA[组件演示]]></title>
            <link>https://linbo-cyber.github.io/paper/posts/components-demo.html</link>
            <guid>https://linbo-cyber.github.io/paper/posts/components-demo.html</guid>
            <pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Paper 内置组件演示 — 音乐播放器、卡片、按钮、计数器。]]></description>
            <content:encoded><![CDATA[<h2 id="音乐播放器">音乐播放器</h2><p>默认播放器（带标题、作者、循环按钮、音量控制）：</p>
<div class="paper-player" data-src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3" data-title="SoundHelix Song 1" data-artist="T. Schürger" data-loop="false"></div>

<p>无封面、无作者的简洁播放器：</p>
<div class="paper-player" data-src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-2.mp3" data-title="背景音乐" data-loop="true"></div>

<h2 id="卡片组件">卡片组件</h2><p>简单卡片：</p>
<div class="paper-card"><div class="card-icon">📝</div><p class="card-title">Paper Blog</p><p class="card-subtitle">极简静态博客框架</p><p class="card-text">纸质暖色调，为 GitHub Pages 而生。</p></div>

<h3 id="墓碑卡片-计数器">墓碑卡片 + 计数器</h3><div class="paper-card"><div class="card-icon">🪦</div><p class="card-title">某某某</p><p class="card-subtitle">UID: 1234567890</p><p class="card-text">他来过，他骚扰过，他被挂了。</p></div>

<div class="paper-counter-btn" data-key="demo_mourn" data-label="为此人哀悼" data-icon="🙏"></div>

<h3 id="带内容的卡片">带内容的卡片</h3><div class="paper-card"><div class="card-icon">🎉</div><p class="card-title">欢迎使用 Paper</p><p class="card-text">这是一个功能丰富的静态博客框架。</p></div>

<h2 id="按钮组件">按钮组件</h2><button class="paper-btn">默认按钮</button>
<button class="paper-btn btn-primary">主要按钮</button>
<button class="paper-btn btn-accent">强调按钮</button>
<button class="paper-btn btn-accent btn-sm">小按钮</button>
<button class="paper-btn btn-primary btn-lg">大按钮</button>
<a class="paper-btn btn-accent" href="https://github.com/Linbo-cyber/paper">链接按钮</a>

<h2 id="图片加载">图片加载</h2><p>正常图片（会显示骨架加载动画）：</p>
<p><img src="https://picsum.photos/800/400" alt="测试图片"></p>
<p>加载失败的图片（会显示破碎图片图标）：</p>
<p><img src="https://example.com/nonexistent-image-12345.jpg" alt="不存在的图片"></p>
<h2 id="组件语法参考">组件语法参考</h2><h3 id="音乐播放器">音乐播放器</h3><pre><code>&lt;!--PAPER_COMPONENT_12--&gt;
</code></pre>
<p>所有参数除 <code>src</code> 外均可选。</p>
<h3 id="卡片">卡片</h3><pre><code>&lt;!--PAPER_COMPONENT_13--&gt;
可选的卡片内容（如按钮、计数器等）
&lt;!--PAPER_COMPONENT_14--&gt;
</code></pre>
<h3 id="计数器按钮">计数器按钮</h3><pre><code>&lt;!--PAPER_COMPONENT_15--&gt;
</code></pre>
<h3 id="按钮">按钮</h3><pre><code>&lt;!--PAPER_COMPONENT_16--&gt;
</code></pre>
<h3 id="精神科诊断卡">精神科诊断卡</h3><div class="paper-diagnosis"><div class="diag-header">互联网精神卫生中心 · 精神科诊断证明</div><div class="diag-stamp">确诊</div><div class="diag-body"><div class="diag-row"><span class="diag-label">患者姓名</span><span class="diag-value">MCSeekeri</span></div><div class="diag-row"><span class="diag-label">病历号</span><span class="diag-value">NX-20260227</span></div><div class="diag-row"><span class="diag-label">就诊日期</span><span class="diag-value">2026-02-27</span></div><div class="diag-row"><span class="diag-label">主治医师</span><span class="diag-value">Dr. Lin Bo</span></div><hr class="diag-divider" /><div class="diag-result">重度妄想症（自研系统型）</div><div class="diag-row" style="margin-top:10px"><span class="diag-label">详细描述</span><span class="diag-value">患者长期将 NixOS 配置文件误认为自研操作系统，伴有严重的自我认知障碍。建议立即停止一切开源活动，进行为期 6 个月的封闭治疗。</span></div></div><div class="diag-footer">本证明仅供医学参考 · 互联网精神卫生中心</div></div>

<pre><code>&lt;!--PAPER_COMPONENT_18--&gt;
</code></pre>
<h3 id="墓碑">墓碑</h3><div class="paper-tombstone" id="tomb_e7iw2f"><div class="tomb-stone"><div class="tomb-cross">✝</div><div class="tomb-rip">R.I.P.</div><div class="tomb-name">Hux Blog</div><div class="tomb-dates">2015 — 2026</div><div class="tomb-epitaph">"死于 Ruby 依赖地狱"</div></div><div class="tomb-base"></div><div class="tomb-ground"></div><div class="tomb-incense-area"><button class="tomb-incense-btn" onclick="paperIncense('tomb_e7iw2f')">🕯 为此人上香</button><div class="tomb-incense-holder" id="tomb_e7iw2f_holder"></div><div class="tomb-incense-count" id="tomb_e7iw2f_count"></div></div></div>

<div class="paper-tombstone" id="tomb_njmh81j"><div class="tomb-stone"><div class="tomb-cross">✝</div><div class="tomb-rip">R.I.P.</div><div class="tomb-name">MCSeekeri 的技术信誉</div><div class="tomb-dates">2024 — 2026</div><div class="tomb-epitaph">"从未真正活过"</div></div><div class="tomb-base"></div><div class="tomb-ground"></div><div class="tomb-incense-area"><button class="tomb-incense-btn" onclick="paperIncense('tomb_njmh81j')">🕯 为此人上香</button><div class="tomb-incense-holder" id="tomb_njmh81j_holder"></div><div class="tomb-incense-count" id="tomb_njmh81j_count"></div></div></div>

<pre><code>&lt;!--PAPER_COMPONENT_21--&gt;
</code></pre>
<p>添加 <code>incense=&quot;true&quot;</code> 开启上香按钮。点击后会插三炷香，带烟雾效果，越烧越短，最后烧完。上香次数通过 localStorage 持久化。</p>
<h3 id="遗书">遗书</h3><div class="paper-lastwords"><div class="lw-title">遗 书</div><div class="lw-body"><p>我走了。</p>
<p>不是因为我不够好，而是这个世界变了。当年我也是万星项目，README 写得比谁都漂亮，Jekyll 生态里我说第二没人敢说第一。</p>
<p>但我没想到，有一天会有人用 4 个 npm 包、3000 行代码，做出一个比我快 100 倍的东西。我的 Ruby 依赖链比我的文章还长，我的构建时间比读者的耐心还久。</p>
<p>我不怪 Paper。我怪自己没有与时俱进。</p>
<p>如果你还在用我，请迁移吧。运行 <code>npx paper migrate</code>，给自己一个体面的告别。</p>
<p>别为我哭泣。我会在 npm 的垃圾回收里，看着你们。</p></div><div class="lw-sign">Hux Blog 绝笔</div><div class="lw-date">2026 年 2 月 27 日</div><div class="lw-stain"></div></div>

<pre><code>&lt;!--PAPER_COMPONENT_24--&gt;
遗书正文，支持 HTML。
&lt;!--PAPER_COMPONENT_25--&gt;
</code></pre>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[欢迎使用 Paper]]></title>
            <link>https://linbo-cyber.github.io/paper/posts/hello-paper.html</link>
            <guid>https://linbo-cyber.github.io/paper/posts/hello-paper.html</guid>
            <pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Paper 是一个极简的静态博客框架，纸质暖色调，为 GitHub Pages 而生。]]></description>
            <content:encoded><![CDATA[<h2 id="什么是-paper">什么是 Paper</h2><p>Paper 是一个零依赖（几乎）的静态博客生成器。用 Markdown 写文章，一条命令构建，直接部署到 GitHub Pages。</p>
<p>特性一览：</p>
<ul>
<li>📝 Markdown 写作 + YAML frontmatter</li>
<li>🎨 纸质暖色调 + 深色模式自适应</li>
<li>🔍 客户端全文搜索（Ctrl+K）</li>
<li>📑 自动生成目录（TOC）</li>
<li>🏷️ 标签系统 + 归档页</li>
<li>💬 评论系统（utterances）</li>
<li>📡 RSS + Atom 订阅</li>
<li>🗺️ 自动 Sitemap + robots.txt</li>
<li>⚡ 代码高亮（Prism.js）</li>
<li>📖 阅读时间估算</li>
<li>📄 分页</li>
<li>🚀 GitHub Actions 一键部署</li>
</ul>
<h2 id="快速开始">快速开始</h2><pre><code class="language-bash"># 克隆
git clone https://github.com/Linbo-cyber/paper.git my-blog
cd my-blog

# 安装依赖
npm install

# 写文章
# 在 posts/ 目录下创建 .md 文件

# 构建
npm run build

# 输出在 dist/ 目录
</code></pre>
<h2 id="文章格式">文章格式</h2><p>在 <code>posts/</code> 目录下创建 <code>.md</code> 文件，文件名即为 URL slug：</p>
<pre><code class="language-markdown">---
title: 我的第一篇文章
date: 2026-01-01
tags: [随笔, 技术]
description: 这是文章摘要
lang: zh-CN
draft: false
---

正文内容，支持完整的 Markdown 语法。
</code></pre>
<h3 id="frontmatter-字段">Frontmatter 字段</h3><table>
<thead>
<tr>
<th>字段</th>
<th>必填</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>title</td>
<td>✅</td>
<td>文章标题</td>
</tr>
<tr>
<td>date</td>
<td>✅</td>
<td>发布日期</td>
</tr>
<tr>
<td>tags</td>
<td>❌</td>
<td>标签数组</td>
</tr>
<tr>
<td>description</td>
<td>❌</td>
<td>摘要</td>
</tr>
<tr>
<td>lang</td>
<td>❌</td>
<td>语言（默认跟随站点配置）</td>
</tr>
<tr>
<td>draft</td>
<td>❌</td>
<td>设为 true 则不会构建</td>
</tr>
</tbody></table>
<h2 id="代码高亮">代码高亮</h2><p>支持所有主流语言：</p>
<pre><code class="language-javascript">function hello(name) {
  console.log(`Hello, ${name}!`);
  return { greeting: true };
}
</code></pre>
<pre><code class="language-python">def fibonacci(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b
</code></pre>
<h2 id="自定义页面">自定义页面</h2><p>在 <code>pages/</code> 目录下创建 <code>.md</code> 文件，会生成为根路径下的独立页面。比如 <code>pages/about.md</code> → <code>/about.html</code>。</p>
<h2 id="主题">主题</h2><p>默认主题在 <code>themes/default/</code> 下。你可以：</p>
<ul>
<li>修改 <code>assets/style.css</code> 调整样式</li>
<li>修改 <code>templates/</code> 下的 HTML 模板</li>
<li>创建新主题目录，在 <code>paper.config.js</code> 中切换</li>
</ul>
<h2 id="部署">部署</h2><p>推送到 GitHub，Actions 会自动构建并部署到 Pages。就这么简单。</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[新功能演示]]></title>
            <link>https://linbo-cyber.github.io/paper/posts/new-features.html</link>
            <guid>https://linbo-cyber.github.io/paper/posts/new-features.html</guid>
            <pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[演示 Paper v1.1 的新功能 — 主题切换、代码复制、提示框、封面图、相关文章。]]></description>
            <content:encoded><![CDATA[<h2 id="提示框-callout">提示框 / Callout</h2><p>支持 <code>:::note</code> <code>:::tip</code> <code>:::warning</code> <code>:::caution</code> <code>:::important</code> 五种样式：</p>
<div class="callout callout-note"><div class="callout-header"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg><span>Note</span></div><div class="callout-body"><p>这是一条普通提示。用于补充说明信息。</p>
</div></div>
<div class="callout callout-tip"><div class="callout-header"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/><path d="M9 18h6"/><path d="M10 22h4"/></svg><span>Tip</span></div><div class="callout-body"><p>这是一条建议。帮助用户更好地使用功能。</p>
</div></div>
<div class="callout callout-important"><div class="callout-header"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg><span>Important</span></div><div class="callout-body"><p>这是重要信息。用户必须了解的关键内容。</p>
</div></div>
<div class="callout callout-warning"><div class="callout-header"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg><span>Warning</span></div><div class="callout-body"><p>这是一条警告。提醒用户注意潜在风险。</p>
</div></div>
<div class="callout callout-caution"><div class="callout-header"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg><span>Caution</span></div><div class="callout-body"><p>这是一条危险提示。操作可能导致不可逆后果。</p>
</div></div>
<p>也支持 GitHub 风格的语法：</p>
<div class="callout callout-tip"><div class="callout-header"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/><path d="M9 18h6"/><path d="M10 22h4"/></svg><span>Tip</span></div><div class="callout-body"><p>你可以用 GitHub 风格的语法来写提示框。</p>
</div></div>
<h2 id="代码复制按钮">代码复制按钮</h2><p>鼠标悬停在代码块上，右上角会出现复制按钮：</p>
<pre><code class="language-javascript">function greet(name) {
  console.log(`Hello, ${name}!`);
  return { success: true };
}

greet(&#39;Paper&#39;);
</code></pre>
<pre><code class="language-bash"># 克隆 Paper
git clone https://github.com/Linbo-cyber/paper.git
cd paper &amp;&amp; npm install &amp;&amp; npm run build
</code></pre>
<h2 id="封面图">封面图</h2><p>这篇文章设置了 <code>cover</code> 字段，标题下方会显示封面大图。</p>
<p>在 frontmatter 中添加：</p>
<pre><code class="language-yaml">cover: https://example.com/image.jpg
</code></pre>
<h2 id="主题切换">主题切换</h2><p>点击导航栏右侧的太阳/月亮图标，可以手动切换深色/浅色模式。选择会保存到 localStorage。</p>
<h2 id="阅读进度条">阅读进度条</h2><p>页面顶部有一条细线，随滚动显示阅读进度。</p>
<h2 id="回到顶部">回到顶部</h2><p>滚动超过一定距离后，右下角会出现回到顶部按钮。</p>
<h2 id="相关文章">相关文章</h2><p>文章底部会根据标签匹配推荐相关文章。</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Markdown 渲染测试]]></title>
            <link>https://linbo-cyber.github.io/paper/posts/markdown-test.html</link>
            <guid>https://linbo-cyber.github.io/paper/posts/markdown-test.html</guid>
            <pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[测试 Paper 的 Markdown 渲染能力，包括代码块、表格、引用、列表等。]]></description>
            <content:encoded><![CDATA[<h2 id="文本样式">文本样式</h2><p>这是一段普通文本。<strong>粗体</strong>、<em>斜体</em>、<del>删除线</del>、<code>行内代码</code>。</p>
<p><a href="https://github.com">这是一个链接</a></p>
<h2 id="引用">引用</h2><blockquote>
<p>好的工具应该像空气一样——你不会注意到它，但离开它你会窒息。</p>
</blockquote>
<blockquote>
<p>嵌套引用：</p>
<blockquote>
<p>第二层引用</p>
</blockquote>
</blockquote>
<h2 id="列表">列表</h2><p>无序列表：</p>
<ul>
<li>第一项</li>
<li>第二项<ul>
<li>嵌套项</li>
<li>另一个嵌套项</li>
</ul>
</li>
<li>第三项</li>
</ul>
<p>有序列表：</p>
<ol>
<li>步骤一</li>
<li>步骤二</li>
<li>步骤三</li>
</ol>
<h2 id="代码">代码</h2><p>行内代码：<code>const x = 42;</code></p>
<p>代码块：</p>
<pre><code class="language-go">package main

import &quot;fmt&quot;

func main() {
    ch := make(chan string, 1)
    go func() {
        ch &lt;- &quot;hello from goroutine&quot;
    }()
    fmt.Println(&lt;-ch)
}
</code></pre>
<pre><code class="language-rust">fn main() {
    let numbers: Vec&lt;i32&gt; = (1..=10)
        .filter(|x| x % 2 == 0)
        .collect();
    println!(&quot;{:?}&quot;, numbers);
}
</code></pre>
<h2 id="表格">表格</h2><table>
<thead>
<tr>
<th>框架</th>
<th>语言</th>
<th>特点</th>
</tr>
</thead>
<tbody><tr>
<td>Paper</td>
<td>Node.js</td>
<td>极简、纸质风</td>
</tr>
<tr>
<td>Hugo</td>
<td>Go</td>
<td>速度快</td>
</tr>
<tr>
<td>Hexo</td>
<td>Node.js</td>
<td>插件丰富</td>
</tr>
<tr>
<td>Jekyll</td>
<td>Ruby</td>
<td>GitHub 原生支持</td>
</tr>
</tbody></table>
<h2 id="图片">图片</h2><p>图片语法：<code>![alt](url)</code></p>
<h2 id="分割线">分割线</h2><hr>
<h2 id="任务列表">任务列表</h2><ul>
<li><input checked="" disabled="" type="checkbox"> 完成基础框架</li>
<li><input checked="" disabled="" type="checkbox"> 添加代码高亮</li>
<li><input checked="" disabled="" type="checkbox"> 添加搜索功能</li>
<li><input disabled="" type="checkbox"> 添加更多主题</li>
</ul>
<h2 id="数学公式">数学公式</h2><p>Paper 目前不内置数学公式支持，但你可以通过在模板中引入 KaTeX 来实现。</p>
<h2 id="脚注">脚注</h2><p>这是一段带脚注的文本<a href="%E8%BF%99%E6%98%AF%E8%84%9A%E6%B3%A8%E5%86%85%E5%AE%B9%E3%80%82">^1</a>。</p>
]]></content:encoded>
        </item>
    </channel>
</rss>