<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>慢慢构建</title><description>记录技术实践，把值得留下的经验写清楚。</description><link>https://blog.aauui.com/</link><item><title>从 Obsidian 发布一篇文章</title><link>https://blog.aauui.com/posts/obsidian-publishing-demo/</link><guid isPermaLink="true">https://blog.aauui.com/posts/obsidian-publishing-demo/</guid><description>用一篇公开样例检查笔记转换与博客发布。</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇文章是发布流程的公开样例，不包含私人笔记。&lt;/p&gt;
&lt;h2&gt;写作与链接&lt;/h2&gt;
&lt;p&gt;双链与中文锚点已完成发布验证；独立的链接测试页现已撤回。&lt;/p&gt;
&lt;p&gt;未公开样例与草稿目录已通过上传排除检查。&lt;/p&gt;
&lt;h2&gt;图片与提示&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/blog/blog-publishing-flow.svg&quot; alt=&quot;blog-publishing-flow&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE] 发布说明
文章上传后，由 GitHub Actions 构建并部署。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;const message = &quot;中文与 code&quot;;
console.log(message);
&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;检查&lt;/th&gt;
&lt;th&gt;状态&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;中文标题&lt;/td&gt;
&lt;td&gt;已验证&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;附件&lt;/td&gt;
&lt;td&gt;已验证&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;更新记录&lt;/h2&gt;
&lt;p&gt;样例版本：2。已完成从 Obsidian 更新同一篇文章的验证。&lt;/p&gt;
</content:encoded><category>技术笔记</category><author>Ravenbaar</author></item><item><title>从一篇笔记开始，慢慢构建自己的博客</title><link>https://blog.aauui.com/posts/building-in-public/</link><guid isPermaLink="true">https://blog.aauui.com/posts/building-in-public/</guid><description>先让文字有一个舒服的落脚处，再逐步完善图片、代码和发布体验。</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;一个长期维护的网站，首先应该是一处愿意经常回来的地方。&lt;/p&gt;
&lt;p&gt;我希望这里既能放下完整的技术教程，也能容纳解决一个小问题时留下的几行笔记。页面可以安静一些，让内容自己说话。&lt;/p&gt;
&lt;h2&gt;先把基本的事情做好&lt;/h2&gt;
&lt;p&gt;文字要易读，代码要清楚，图片应该帮助解释问题。无论在电脑还是手机上打开，都能顺着文章读下去。&lt;/p&gt;
&lt;p&gt;现在的起点是 Astro 和 Typography。接下来，会逐步加入目录、搜索和图片放大，并打通 Obsidian 到网站的发布流程。&lt;/p&gt;
&lt;h2&gt;留下过程，也留下结果&lt;/h2&gt;
&lt;p&gt;技术记录不只有最后一条命令。为什么这样做、哪里容易出错、如何确认成功，同样值得写下来。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;把今天弄明白的一件事，写成明天依然看得懂的文字。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这是一篇用于审阅排版的项目样例，正式内容会在发布流程确认后加入。&lt;/p&gt;
</content:encoded><category>项目手记</category><author>Ravenbaar</author></item><item><title>技术文章样例：从 Markdown 到静态网页</title><link>https://blog.aauui.com/posts/technical-writing-sample/</link><guid isPermaLink="true">https://blog.aauui.com/posts/technical-writing-sample/</guid><description>用目录、长代码、图片、表格和 Callout，检查一篇技术文章从写作到阅读的完整体验。</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇样例用于检查技术文章的排版。它包含常见的内容类型，并给后续的 Obsidian 转换提供一份公开测试材料。&lt;/p&gt;
&lt;h2&gt;一、整理文章&lt;/h2&gt;
&lt;p&gt;给文章一个清楚的标题和固定的文件名。修改标题时保持文件名不变，已有链接就不会轻易失效。&lt;/p&gt;
&lt;h3&gt;文章属性&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;title: 我的第一篇技术笔记
pubDate: 2026-09-08
categories:
  - 技术笔记
draft: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;draft&lt;/code&gt; 控制文章是否进入正式构建。它与插件用于选择上传的 &lt;code&gt;share&lt;/code&gt; 是两件事，需要在发布配置中分别处理。&lt;/p&gt;
&lt;h4&gt;保持固定链接&lt;/h4&gt;
&lt;p&gt;文件名是文章的稳定标识。例如 &lt;code&gt;technical-writing-sample&lt;/code&gt; 不随标题修改变化。第四级标题用于细分说明，目录也应保留这一层级。&lt;/p&gt;
&lt;h2&gt;二、执行构建&lt;/h2&gt;
&lt;p&gt;下面是一个 JavaScript 示例，展示如何把步骤组织成明确的返回值。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function describeRelease({ title, version, files }) {
  return {
    title,
    version,
    fileCount: files.length,
    ready: files.length &amp;gt; 0,
  }
}

const release = describeRelease({
  title: &apos;一篇技术笔记&apos;,
  version: &apos;preview-01&apos;,
  files: [&apos;index.html&apos;, &apos;styles.css&apos;],
})

console.log(release)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;长行与长代码&lt;/h3&gt;
&lt;p&gt;下面的长行用于检查手机上的换行和完整复制；复制后应该保留原始文本。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;release-artifact: technical-writing-sample--immutable-static-assets--verified-build--image-and-search-index--rollback-ready--2026-09-08
01. 选择公开文章
02. 核对文章属性
03. 检查附件范围
04. 导出 Markdown
05. 校验内部链接
06. 排除草稿与私有引用
07. 生成静态页面
08. 构建搜索索引
09. 检查订阅源
10. 保留构建产物
11. 上传候选版本
12. 检查页面与图片
13. 切换正式版本
14. 记录回退目标
15. 复核公开页面
16. 完成本次发布
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;对比各个环节&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;环节&lt;/th&gt;
&lt;th&gt;输入&lt;/th&gt;
&lt;th&gt;输出&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;写作&lt;/td&gt;
&lt;td&gt;观察与实验&lt;/td&gt;
&lt;td&gt;Markdown 笔记&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;转换&lt;/td&gt;
&lt;td&gt;选定的文章和附件&lt;/td&gt;
&lt;td&gt;网站内容文件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;构建&lt;/td&gt;
&lt;td&gt;内容、主题和配置&lt;/td&gt;
&lt;td&gt;静态网页&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;部署&lt;/td&gt;
&lt;td&gt;验证后的发布包&lt;/td&gt;
&lt;td&gt;可访问的网站&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;窄屏上的宽表格可以独立横向滚动，也可以聚焦表格后用方向键查看。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;检查项&lt;/th&gt;
&lt;th&gt;桌面浏览器&lt;/th&gt;
&lt;th&gt;手机浏览器&lt;/th&gt;
&lt;th&gt;键盘操作&lt;/th&gt;
&lt;th&gt;页面切换后&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;文章目录&lt;/td&gt;
&lt;td&gt;侧栏展示&lt;/td&gt;
&lt;td&gt;可折叠&lt;/td&gt;
&lt;td&gt;Tab 与 Enter 定位&lt;/td&gt;
&lt;td&gt;切换为当前文章目录&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;图片预览&lt;/td&gt;
&lt;td&gt;点击放大&lt;/td&gt;
&lt;td&gt;点击放大&lt;/td&gt;
&lt;td&gt;Enter 打开、Escape 关闭&lt;/td&gt;
&lt;td&gt;重新绑定一次&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;搜索&lt;/td&gt;
&lt;td&gt;标题、分类与正文&lt;/td&gt;
&lt;td&gt;同一索引&lt;/td&gt;
&lt;td&gt;输入后 Enter&lt;/td&gt;
&lt;td&gt;可重复进入&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;三、用图片补充说明&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/publishing-flow.svg&quot; alt=&quot;从 Obsidian 写作、GitHub 构建到云服务器提供网页的流程&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图片应当有替代文字；外链下载应说明文件内容，让读者知道点击后会得到什么。&lt;/p&gt;
&lt;p&gt;可以阅读 &lt;a href=&quot;https://docs.astro.build/&quot;&gt;Astro 文档&lt;/a&gt;，或&amp;lt;a href=&quot;/images/publishing-flow.svg&quot; download=&quot;publishing-flow.svg&quot; data-no-swup&amp;gt;下载发布流程示意图（SVG）&amp;lt;/a&amp;gt;。&lt;/p&gt;
&lt;h2&gt;四、检查结果&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;首页能够找到新文章。&lt;/li&gt;
&lt;li&gt;代码、表格和图片在窄屏上仍然可读。&lt;/li&gt;
&lt;li&gt;页面中的链接指向预期内容。&lt;/li&gt;
&lt;li&gt;草稿不会出现在正式站点或订阅源中。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
这是 Obsidian 官方语法的 Callout。文章源保留 Markdown，网站在构建时生成对应结构。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;提示与折叠&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP] 给读者一个清楚的下一步
可以通过目录定位、放大图片，或搜索正文里的「不可变产物」。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;[!WARNING]- 展开检查发布前置条件
确认构建成功，再核对目标目录与回退版本。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DNS、证书与缓存分别验证。&lt;/li&gt;
&lt;li&gt;上传成功并不等于公开页面可用。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;[!EXAMPLE]+ 默认展开的例子
在不引入私人文章的情况下，使用合成样例验证表现。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!SUCCESS] 嵌套说明
不可变产物便于核对版本，也便于回退。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;[!QUESTION] 只有标题也成立&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;普通引用保留原来的排版，不会被当作 Callout。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;继续阅读&lt;/h3&gt;
&lt;p&gt;回到&lt;a href=&quot;/&quot;&gt;首页&lt;/a&gt;，阅读&lt;a href=&quot;/posts/building-in-public/&quot;&gt;为什么开始写技术博客&lt;/a&gt;，再返回这篇文章，检查目录、代码复制、图片和折叠提示是否仍然可用。&lt;/p&gt;
</content:encoded><category>技术笔记</category><author>Ravenbaar</author></item><item><title>把技术过程写清楚：步骤、标签页与延伸阅读</title><link>https://blog.aauui.com/posts/reading-components/</link><guid isPermaLink="true">https://blog.aauui.com/posts/reading-components/</guid><description>用有序步骤、可切换的代码样例和链接卡片，把一段技术过程组织得更易读。</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import Steps from &apos;../../components/article/Steps.astro&apos;
import Tabs from &apos;../../components/article/Tabs.astro&apos;
import Tab from &apos;../../components/article/Tab.astro&apos;
import LinkCard from &apos;../../components/article/LinkCard.astro&apos;&lt;/p&gt;
&lt;p&gt;一篇教程不必堆满组件。读者需要执行顺序时用步骤，需要比较同一操作的不同写法时用标签页，延伸材料则用一张简洁的卡片。&lt;/p&gt;
&lt;h2&gt;把发布分成三个步骤&lt;/h2&gt;
&lt;p&gt;&amp;lt;Steps&amp;gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;准备内容&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;选好公开文章和附件，确认标题、日期及固定链接。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;检查产物&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;阅读页面，验证代码、图片和搜索，保留可核对的版本。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;发布与复核&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在部署条件具备后发布，再访问公开页面检查结果。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;lt;/Steps&amp;gt;&lt;/p&gt;
&lt;h2&gt;选择适合的代码示例&lt;/h2&gt;
&lt;p&gt;两个示例都输出同样的结果。点击标签切换，也可以用左右方向键、Home 和 End 选择；Tab 键进入当前面板。&lt;/p&gt;
&lt;p&gt;&amp;lt;Tabs id=&quot;language-example&quot; label=&quot;示例语言&quot;&amp;gt;
&amp;lt;Tab title=&quot;JavaScript&quot;&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const message = &apos;写清楚，也验证清楚。&apos;
console.log(message)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/Tab&amp;gt;
&amp;lt;Tab title=&quot;Python&quot;&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;message = &apos;写清楚，也验证清楚。&apos;
print(message)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/Tab&amp;gt;
&amp;lt;/Tabs&amp;gt;&lt;/p&gt;
&lt;h2&gt;延伸阅读&lt;/h2&gt;
&lt;p&gt;&amp;lt;LinkCard href=&quot;/posts/technical-writing-sample/&quot; title=&quot;技术文章的完整阅读样例&quot; description=&quot;继续检查标题层级、长代码、表格、图片预览和折叠提示。&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;LinkCard href=&quot;https://docs.astro.build/&quot; title=&quot;Astro 官方文档&quot; description=&quot;了解内容驱动的网站如何组织页面与组件。&quot; /&amp;gt;&lt;/p&gt;
</content:encoded><category>技术笔记</category><author>Ravenbaar</author></item></channel></rss>