<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://blyciallo.com/</id>
  <title type="text">Blyの小破站~</title>
  <subtitle type="text">はくれん</subtitle>
  <updated>2026-08-26T00:00:00.000Z</updated>
  <author><name>Bly~</name></author>
  <link rel="alternate" href="https://blyciallo.com/"/>
  <link rel="self" href="https://blyciallo.com/atom.xml"/>
  <generator uri="https://github.com/CuteLeaf/Firefly">Firefly v6.16.8</generator>
    <entry>
      <id>https://blyciallo.com/posts/wo-de-api-zhong-zhuan-zhan-blyciallololiyyds-xyz/</id>
      <title type="text">我的API中转站：blyciallololiyyds.xyz</title>
      <published>2026-08-26T00:00:00.000Z</published>
      <updated>2026-08-26T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/wo-de-api-zhong-zhuan-zhan-blyciallololiyyds-xyz/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<p>我的中转站：blyciallololiyyds.xzy 他一般我自用，用我接入Agent来做各种事情，这个api中转站已经很久没管过了，打开我的api中转站得用VPN打开，进去注册账号，联系我可以送你额度 （在说一下为什么取那么长的域名） Bly是我的名字 Ciallo~（不用多说，柚子厨旮旯给木）</p>
<p><img src="/assets/images/posts/D658EE0E223426882E12AA4EFBEBEA3F.png" alt="" /></p>
<p><img src="/assets/images/posts/23FDEC49A6424D0E26C75650D9757278-1.jpg" alt="" /></p>]]></content>
    </entry>
    <entry>
      <id>https://blyciallo.com/posts/wo-de-bly-duo-zhang-hao-guan-li/</id>
      <title type="text">我的Bly多账号管理~</title>
      <published>2026-08-26T00:00:00.000Z</published>
      <updated>2026-08-26T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/wo-de-bly-duo-zhang-hao-guan-li/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<p>我的Bly多账号管理
<img src="/assets/images/posts/QQ20260813-025808-4.png" alt="" />
还可以进行密码验证</p>
<p><img src="/assets/images/posts/QQ20260813-025523-4.png" alt="" />
可以进行批量加群，定时批量发消息，以及自动交互功能，代理ip功能，进行自动营销，自动养号，自动引流，打广告等各种用途</p>]]></content>
    </entry>
    <entry>
      <id>https://blyciallo.com/posts/wo-de-mi-mi/</id>
      <title type="text">我的秘密~</title>
      <published>2026-08-26T00:00:00.000Z</published>
      <updated>2026-08-26T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/wo-de-mi-mi/"/>
      <summary type="text">有本事破解我密码~</summary>
      <content type="html"><![CDATA[本文已加密保护，请访问网站查看。]]></content>
    </entry>
    <entry>
      <id>https://blyciallo.com/posts/wu-yi-jian-fa-xian-de-bot/</id>
      <title type="text">无意间发现的Bot</title>
      <published>2026-08-26T00:00:00.000Z</published>
      <updated>2026-08-26T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/wu-yi-jian-fa-xian-de-bot/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<section><h1>🌸 Mioku：以初音未来为主题、AI 优先的 QQ 机器人框架<a href="#-mioku以初音未来为主题ai-优先的-qq-机器人框架"><span>#</span></a></h1><blockquote><p>轻量、现代、Agent 优先～<br />
基于 mioki，让机器人真正「会用 QQ」的可爱框架。</p></blockquote><hr /><section><h2>📌 项目简介<a href="#-项目简介"><span>#</span></a></h2><p><strong>Mioku</strong> 是一个以<strong>初音未来</strong>为主题、基于 <a href="https://mioki.viki.moe/" target="_blank">mioki</a> 的 <strong>AI 优先</strong> QQ 机器人框架。</p><ul>
<li>仓库地址：<a href="https://github.com/mioku-lab/mioku" target="_blank">https://github.com/mioku-lab/mioku</a></li>
<li>官网：<a href="https://mioku.pages.dev" target="_blank">https://mioku.pages.dev</a></li>
<li>开源协议：MIT</li>
<li>技术栈：TypeScript + Bun</li>
<li>底层协议：NapCat / OneBot v11</li>
</ul><p>它不是传统意义上的「接大模型聊天机器人」，而是围绕 <strong>Agent / Skill</strong> 设计，让机器人可以自然地使用 QQ 功能、调用自己的插件完成各种任务。</p><hr /></section><section><h2>✨ 核心特性<a href="#-核心特性"><span>#</span></a></h2>

<table><thead><tr><th>特性</th><th>说明</th></tr></thead><tbody><tr><td>🔌 <strong>插件系统</strong></td><td>支持独立 npm 包管理，支持热插拔</td></tr><tr><td>🛠️ <strong>服务架构</strong></td><td>可复用的服务层，插件声明式依赖</td></tr><tr><td>🤖 <strong>AI Skill 系统</strong></td><td>插件可注册 Skill，内含多个 AI 工具</td></tr><tr><td>📚 <strong>帮助系统</strong></td><td>插件帮助信息自动注册与生成</td></tr><tr><td>⚙️ <strong>配置管理</strong></td><td>插件独立配置，支持热更新</td></tr><tr><td>📦 <strong>Workspace 管理</strong></td><td>使用 bun workspace，插件与服务独立依赖</td></tr></tbody></table><p>官方还提供了配套项目：</p><ul>
<li><code>mioku-webui</code>：可视化管理界面</li>
<li>多个官方插件：表情包、群管理、60s、MC 连接等</li>
</ul><hr /></section><section><h2>💖 为什么选择 Mioku？<a href="#-为什么选择-mioku"><span>#</span></a></h2><ol>
<li>
<p><strong>真正 AI 优先</strong><br />
不是简单对接大模型，而是围绕 Agent / Skill 设计，机器人可以主动完成任务。</p>
</li>
<li>
<p><strong>轻量高性能</strong><br />
使用现代 TypeScript + Bun，官方称空载内存不超过 100MB。</p>
</li>
<li>
<p><strong>开发体验好</strong><br />
插件以 npm 包形式管理，支持热插拔和配置热更新。</p>
</li>
<li>
<p><strong>一键启动友好</strong><br />
<code>npx mioku</code> 即可创建项目，引导式配置，新手友好。</p>
</li>
<li>
<p><strong>自带 WebUI</strong><br />
可视化管理插件、服务和配置，不用全程敲命令。</p>
</li>
<li>
<p><strong>初音主题加持</strong><br />
对喜欢初音未来的用户，自带一份可爱滤镜～</p>
</li>
</ol><blockquote><p>目前项目还比较新，生态处于早期阶段。喜欢尝鲜和 AI Agent 玩法的朋友可以重点关注。</p></blockquote><hr /></section><section><h2>🛠️ 环境要求<a href="#️-环境要求"><span>#</span></a></h2><p>使用前请准备好以下环境：</p><ul>
<li><a href="https://bun.sh/" target="_blank">Bun</a>（推荐一键安装：<code>npm install -g bun</code>）</li>
<li>Git</li>
<li>Chromium 内核浏览器（Chrome / Edge 等，用于截图服务）</li>
<li>ffmpeg（部分插件需要）</li>
<li>一个可用的 <strong>NapCat</strong> 或其它 OneBot v11 实现端</li>
</ul><hr /></section><section><h2>🚀 快速开始<a href="#-快速开始"><span>#</span></a></h2><section><h3>1. 一键创建项目<a href="#1-一键创建项目"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>npx</span><span> </span><span>mioku</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>首次启动会自动询问 mioki 相关配置，并引导你填写 NapCat 正向 WebSocket 配置，同时询问是否安装 WebUI。</p></section><section><h3>2. 启动项目<a href="#2-启动项目"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>cd</span><span> </span><span>&lt;你的项目名&gt;</span></div></div><div><div><div>2</div></div><div><span>bun</span><span> </span><span>run</span><span> </span><span>start</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>3. 访问 WebUI<a href="#3-访问-webui"><span>#</span></a></h3><p>浏览器打开：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>http://127.0.0.1:3339</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>首次启动会提示设置登录密钥。</p></section><section><h3>4. 安装插件 / 服务<a href="#4-安装插件--服务"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span># 安装插件示例</span></div></div><div><div><div>2</div></div><div><span>npx</span><span> </span><span>mioku</span><span> </span><span>install</span><span> </span><span>plugin</span><span> </span><span>60s</span></div></div><div><div><div>3</div></div><div><span>npx</span><span> </span><span>mioku</span><span> </span><span>install</span><span> </span><span>plugin</span><span> </span><span>meme</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span># 安装服务示例</span></div></div><div><div><div>6</div></div><div><span>npx</span><span> </span><span>mioku</span><span> </span><span>install</span><span> </span><span>service</span><span> </span><span>ai</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span># 更新所有相关包</span></div></div><div><div><div>9</div></div><div><span>npx</span><span> </span><span>mioku</span><span> </span><span>update</span><span> </span><span>all</span></div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span># 更新框架自身</span></div></div><div><div><div>12</div></div><div><span>npx</span><span> </span><span>mioku</span><span> </span><span>update</span><span> </span><span>self</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>推荐优先使用 WebUI 进行插件与服务的管理，操作更直观。</p></section></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blyciallo.com/posts/xiang-kai-fa-ruan-jian-xiang-mu-de-ke-yi-zhao-wo/</id>
      <title type="text">想开发软件项目的可以找我~</title>
      <published>2026-08-26T00:00:00.000Z</published>
      <updated>2026-08-26T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/xiang-kai-fa-ruan-jian-xiang-mu-de-ke-yi-zhao-wo/"/>
      <summary type="text">🌸 软件 · 自动化 · 好想法</summary>
      <content type="html"><![CDATA[<section><h1>🌸 软件 · 自动化 · 好想法<a href="#-软件--自动化--好想法"><span>#</span></a></h1><blockquote><p>想做软件、搞自动化，或者有什么好玩的点子？<br />
都可以来找我聊聊～</p></blockquote><hr /><section><h2>✨ 可以找我做什么？<a href="#-可以找我做什么"><span>#</span></a></h2><p>如果你有以下需求或想法，欢迎随时联系我：</p><ul>
<li>想开发软件 / 小工具</li>
<li>需要做各种自动化脚本</li>
<li>有好的 idea，但不知道怎么落地</li>
<li>单纯想找人一起头脑风暴</li>
</ul><p>不管是正经项目，还是脑洞大开的小玩意，我都挺感兴趣的～</p></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blyciallo.com/posts/zen-me-yong-netlify-fan-dai/</id>
      <title type="text">怎么用Netlify反代</title>
      <published>2026-08-26T00:00:00.000Z</published>
      <updated>2026-08-26T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/zen-me-yong-netlify-fan-dai/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<p>🌸 Netlify 反向代理小教程</p>
<blockquote><p>用 Netlify 轻松实现反向代理，解决 CORS、隐藏真实接口地址，还超简单！<br />
适合前端、独立开发者和博客站长～</p></blockquote>
<hr />
<section><h2>✨ 什么是 Netlify 反向代理？<a href="#-什么是-netlify-反向代理"><span>#</span></a></h2><p>Netlify 的 <strong>Rewrites / Proxies</strong> 功能，本质上是把重定向状态码设为 <code>200</code>。</p><p>浏览器地址栏<strong>不会变</strong>，但请求会由 Netlify 的 CDN 在后端帮你转发到目标地址。<br />
超级适合：</p><ul>
<li>解决跨域（CORS）问题</li>
<li>隐藏真实 API 地址</li>
<li>把多个服务统一到一个域名下</li>
<li>网站迁移时平滑过渡</li>
</ul><p>官方文档：<a href="https://docs.netlify.com/manage/routing/redirects/rewrites-proxies/" target="_blank">Rewrites and proxies</a></p><hr /></section>
<section><h2>🧁 方法一：使用 <code>_redirects</code> 文件（最简单）<a href="#-方法一使用-_redirects-文件最简单"><span>#</span></a></h2><p>在网站的<strong>发布目录</strong>（通常是 <code>public</code>、<code>dist</code>、<code>build</code> 或根目录）下创建 <code>_redirects</code> 文件（注意：没有扩展名）。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span># 把 /api/* 代理到 https://api.example.com/*</span></div></div><div><div><div>2</div></div><div><span>/api/*  https://api.example.com/:splat  200</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span># 强制代理（即使本地有同名文件也优先代理）</span></div></div><div><div><div>5</div></div><div><span>/api/*  https://api.example.com/:splat  200!</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span># 代理整个网站</span></div></div><div><div><div>8</div></div><div><span>/*  https://target-site.com/:splat  200</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ul>
<li><code>:splat</code> 会自动捕获后面的所有路径</li>
<li>末尾加 <code>!</code> 表示强制生效（对应 <code>force = true</code>）</li>
</ul><hr /></section>
<section><h2>🍬 方法二：使用 <code>netlify.toml</code>（推荐，功能更强）<a href="#-方法二使用-netlifytoml推荐功能更强"><span>#</span></a></h2><p>在项目根目录创建或编辑 <code>netlify.toml</code>：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[[</span><span>redirects</span><span>]]</span></div></div><div><div><div>2</div></div><div><span>  </span><span>from</span><span> = </span><span>"/api/*"</span></div></div><div><div><div>3</div></div><div><span>  </span><span>to</span><span> = </span><span>"https://api.example.com/:splat"</span></div></div><div><div><div>4</div></div><div><span>  </span><span>status</span><span> = </span><span>200</span></div></div><div><div><div>5</div></div><div><span>  </span><span>force</span><span> = </span><span>true</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span># 还可以添加自定义请求头哦～</span></div></div><div><div><div>8</div></div><div><span>[[</span><span>redirects</span><span>]]</span></div></div><div><div><div>9</div></div><div><span>  </span><span>from</span><span> = </span><span>"/search"</span></div></div><div><div><div>10</div></div><div><span>  </span><span>to</span><span> = </span><span>"https://api.mysearch.com"</span></div></div><div><div><div>11</div></div><div><span>  </span><span>status</span><span> = </span><span>200</span></div></div><div><div><div>12</div></div><div><span>  </span><span>force</span><span> = </span><span>true</span></div></div><div><div><div>13</div></div><div><span>  </span><span>headers</span><span> = {</span><span>X-From</span><span> = </span><span>"Netlify"</span><span>, </span><span>X-Custom</span><span> = </span><span>"value"</span><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section>
<section><h2>🍓 常见使用场景示例<a href="#-常见使用场景示例"><span>#</span></a></h2><section><h3>1. 代理第三方 API（解决 CORS）<a href="#1-代理第三方-api解决-cors"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[[</span><span>redirects</span><span>]]</span></div></div><div><div><div>2</div></div><div><span>  </span><span>from</span><span> = </span><span>"/api/*"</span></div></div><div><div><div>3</div></div><div><span>  </span><span>to</span><span> = </span><span>"https://api.example.com/:splat"</span></div></div><div><div><div>4</div></div><div><span>  </span><span>status</span><span> = </span><span>200</span></div></div><div><div><div>5</div></div><div><span>  </span><span>force</span><span> = </span><span>true</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>前端直接请求 <code>/api/xxx</code> 就行，超级方便！</p></section><section><h3>2. 代理到另一个 Netlify 站点<a href="#2-代理到另一个-netlify-站点"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[[</span><span>redirects</span><span>]]</span></div></div><div><div><div>2</div></div><div><span>  </span><span>from</span><span> = </span><span>"/other/*"</span></div></div><div><div><div>3</div></div><div><span>  </span><span>to</span><span> = </span><span>"https://my-other-site.netlify.app/:splat"</span></div></div><div><div><div>4</div></div><div><span>  </span><span>status</span><span> = </span><span>200</span></div></div><div><div><div>5</div></div><div><span>  </span><span>force</span><span> = </span><span>true</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>推荐使用 <code>.netlify.app</code> 域名。</p></section><section><h3>3. 代理整个旧网站（迁移场景）<a href="#3-代理整个旧网站迁移场景"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>/*  https://old-site.com/:splat  200!</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section></section>
<section><h2>📌 小贴士与注意事项<a href="#-小贴士与注意事项"><span>#</span></a></h2>

<table><thead><tr><th>项目</th><th>说明</th></tr></thead><tbody><tr><td><strong>缓存</strong></td><td>代理响应默认不缓存。如果目标支持 ETag / Last-Modified，可以自动缓存</td></tr><tr><td><strong>自定义头</strong></td><td>只能在 <code>netlify.toml</code> 中添加自定义请求头</td></tr><tr><td><strong>规则顺序</strong></td><td>从上到下匹配，更具体的规则要写在前面</td></tr><tr><td><strong>本地测试</strong></td><td>使用 <code>netlify dev</code> 命令即可本地预览</td></tr><tr><td><strong>限制</strong></td><td>不是完整的 Nginx 级反向代理，复杂场景建议使用 Edge Functions</td></tr></tbody></table><hr /></section>
<section><h2>🌈 更复杂的需求怎么办？<a href="#-更复杂的需求怎么办"><span>#</span></a></h2><p>如果需要：</p><ul>
<li>任意 URL 通用代理</li>
<li>自动重写 HTML 内容</li>
<li>添加密码保护</li>
<li>更灵活的逻辑处理</li>
</ul><p>可以尝试使用 <strong>Netlify Edge Functions</strong>（基于 Deno）。<br />
GitHub 上搜索 <code>netlify proxy edge function</code> 有很多现成模板可以参考～</p><hr /></section>
<section><h2>✅ 快速验证方法<a href="#-快速验证方法"><span>#</span></a></h2><p>部署完成后，打开浏览器开发者工具（F12）→ Network 面板：</p><ol>
<li>访问你的域名 + 代理路径</li>
<li>看请求状态码是否为 <code>200</code></li>
<li>确认返回内容来自目标站点</li>
</ol><p>如果一切正常，就成功啦！🎉</p><hr /></section>
<section><h2>💌 写在最后<a href="#-写在最后"><span>#</span></a></h2><p>Netlify 的反向代理功能真的很贴心，配置简单、全球 CDN 加速、免费额度也够用。<br />
希望这篇小教程能帮到你～</p><p>有具体需求（比如代理某个 AI 接口、整个博客、或者复杂路由）随时告诉我，我可以帮你写出更精确的配置～</p><p>祝部署顺利，代码无 Bug！✨</p></section>]]></content>
    </entry>
    <entry>
      <id>https://blyciallo.com/posts/guan-jian-ci-jian-ting-ji-qi-ren/</id>
      <title type="text">关键词监听机器人~</title>
      <published>2026-08-13T00:00:00.000Z</published>
      <updated>2026-08-13T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/guan-jian-ci-jian-ting-ji-qi-ren/"/>
      <summary type="text">哈基米~~~</summary>
      <content type="html"><![CDATA[<p>监控所有已加入的群聊，你设定的关键词，可监听所有的群聊，当有人发消息匹配到你的关键词，机器人将会把用户信息ID和哪个群（可一件定位）到所发消息的地方，把用户信息ID统一打包发给你，部署到服务器上面可24小时无间断监听~~~配合多账号管理太爽了~
<img src="/assets/images/posts/QQ20260813-032308.png" alt="" /></p>
<p><img src="/assets/images/posts/QQ20260813-031719.png" alt="" /></p>]]></content>
    </entry>
    <entry>
      <id>https://blyciallo.com/posts/cloudflare-vs-vercel/</id>
      <title type="text">Cloudflare VS Vercel？！</title>
      <published>2026-08-12T00:00:00.000Z</published>
      <updated>2026-08-12T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/cloudflare-vs-vercel/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<p>引言
Vercel 和 Cloudflare 是目前较为常见的两个 Web 部署平台。Vercel 偏向前端生态和开发体验，Cloudflare 则依托其全球边缘网络提供底层计算和存储能力。两者都在往”全栈应用交付平台”的方向发展，但实现路径和适用场景有所不同。</p>
<p>本文将介绍双方的服务和异同点，希望能帮读者理清其中的差别，从而根据自身需求做出合适的选择。</p>
<p>Cloudflare
Cloudflare 依托其全球边缘网络，将计算和存储部署在离用户较近的节点上。以下是其四个核心服务。</p>
<p>Workers
Workers 是一个在 Cloudflare 全球网络上运行的无服务器计算平台，基于 Service Workers API，运行在 V8 隔离环境中，启动速度快。</p>
<p>能跑什么后端代码： Workers 运行在 V8 引擎上，不兼容完整的 Node.js API（没有 fs、net 等模块），但提供了 fetch、Request、Response 等 Web 标准 API。支持的编程语言包括 JavaScript、TypeScript、Rust（编译为 WASM）和 Python（通过 Pyodide）。</p>
<p>能运行什么框架：</p>
<p>Web 框架：Hono、Itty Router
全栈框架：Astro（SSR）、SvelteKit、Remix、SolidStart
静态站点：Hugo、Jekyll、Zola、Astro（静态模式）
免费计划每天 10 万次请求，128 MB 内存。</p>
<p>D1
D1 是 Cloudflare 的无服务器关系型数据库，基于 SQLite，可通过 Workers 直接访问或通过 HTTP API 操作，无需管理连接池。免费计划 5 GB 存储。</p>
<p>KV
Workers KV 是一个全局键值存储，数据被复制到 Cloudflare 的边缘节点，适合存储配置、缓存数据等。免费计划 10 万个键。</p>
<p>R2
R2 是 Cloudflare 的对象存储服务，兼容 S3 API，特点是不收取出口流量费。阿里云 OSS 属于同一类。它主要用于存储非结构化数据，所以可以存很多东西，甚于像本站一样的博客。免费计划 10 GB 存储。</p>
<p>Vercel
Vercel 与前端的框架整合较好，提供了从开发到部署的一体化体验。</p>
<p>Node.js 运行时
Vercel 的核心无服务器函数基于 Node.js 运行时，也支持 Python、Go、Ruby、Bun。函数在 AWS Lambda 上执行，可以使用完整的 Node.js API。</p>
<p>能跑什么后端代码： 函数运行在标准的 Node.js 环境中，可以访问 fs、net、http、child_process 等所有 Node.js 内置模块，也可以安装任何 npm 包。因此能跑大多数 Node.js 后端代码，包括 Express、Fastify、Apollo Server 等。注意函数有超时限制（Hobby 计划 60 秒），不适合长时间运行的后台任务。</p>
<p>能运行什么框架：</p>
<p>React 框架：Next.js（原生支持最好）、Remix
Vue 框架：Nuxt
Svelte 框架：SvelteKit
通用框架：Astro、VitePress、Docusaurus、Hexo
几乎所有前端框架都能自动检测并选择最佳构建配置
免费计划每月 100 小时函数执行时间，单函数最大 50 MB。</p>
<p>数据库（PostgreSQL）
Vercel 与 Neon 合作提供了 Vercel Postgres（现为 Vercel Storage 的一部分），是标准的 PostgreSQL 数据库。也可以用 pg 或 @vercel/postgres 连接外部 PG 实例，如 Supabase、AWS RDS 等。</p>
<p>构建系统
Vercel 的构建系统会为每次 git push 自动触发构建和部署，自动检测框架并生成预览环境。免费计划每月 6,000 分钟构建时长。</p>
<p>D1（SQLite）与 PG 的差异
D1 基于 SQLite，PostgreSQL（Neon）是一个独立的关系型数据库，两者差异不小：
什么项目适合什么：</p>
<p>D1 适合个人博客、小型 API、配置管理、原型项目、边缘地理位置需要低延迟的场景。不需要复杂查询和高并发，追求简单和免运维。</p>
<p>PostgreSQL 适合需要事务完整性、复杂查询、高并发的项目：如电商系统、论坛、内容管理系统、数据分析后台等。如果已经有现成的 PG 应用迁移过来也更合适。</p>]]></content>
    </entry>
    <entry>
      <id>https://blyciallo.com/posts/ge-ge-ge/</id>
      <title type="text">鸽鸽鸽~</title>
      <published>2026-08-26T00:00:00.000Z</published>
      <updated>2026-08-26T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/ge-ge-ge/"/>
      <summary type="text">鸽鸽鸽</summary>
      <content type="html"><![CDATA[<p>鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽鸽</p>]]></content>
    </entry>
    <entry>
      <id>https://blyciallo.com/posts/ji-yi-ci-bo-ke-shou-lu-you-hua-cong-1-ge-ye-mian-dao-quan-bu-ke-shou-lu/</id>
      <title type="text">记一次博客收录优化：从 1 个页面到全部可收录</title>
      <published>2026-08-26T00:00:00.000Z</published>
      <updated>2026-08-26T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/ji-yi-ci-bo-ke-shou-lu-you-hua-cong-1-ge-ye-mian-dao-quan-bu-ke-shou-lu/"/>
      <summary type="text">🌱 起因某天打开 Google Search Console</summary>
      <content type="html"><![CDATA[<section><h1>🌸 记一次博客收录优化：从 1 个页面到全部可收录<a href="#-记一次博客收录优化从-1-个页面到全部可收录"><span>#</span></a></h1><blockquote><p>从只有首页被搜到，到全站文章都能被收录的实战记录～<br />
分享排查 Google / Bing 收录问题的全过程：canonical 缺失、重复页面判定、meta description 雷同，以及 IndexNow 接入时踩过的各种坑。</p></blockquote><hr /><section><h2>🌱 起因<a href="#-起因"><span>#</span></a></h2><p>某天打开 Google Search Console，看了一眼站点的收录情况，数据有点惨：</p><ul>
<li><strong>已索引页面</strong>：只有 <strong>1 个</strong>（首页）</li>
<li><strong>未编入索引</strong>：23 个</li>
</ul><p>未索引的原因分三类：</p>

<table><thead><tr><th>原因</th><th>数量</th><th>说明</th></tr></thead><tbody><tr><td>Crawled - currently not indexed</td><td>21</td><td>已抓取但未收录，新站常见</td></tr><tr><td>Duplicate without user-selected canonical</td><td>1</td><td>没有指定规范网页的重复内容</td></tr><tr><td>Not found (404)</td><td>1</td><td><code>/posts/</code> 返回 404</td></tr></tbody></table><p>最扎眼的是「<strong>Duplicate without user-selected canonical</strong>」——全站居然<strong>没有任何 <code>&lt;link rel="canonical"&gt;</code> 标签</strong>！</p><p>没有 canonical，Google 无法区分：</p><ul>
<li><code>https://blyciallo.com/</code></li>
<li>不带斜杠的版本</li>
<li>分页页、搜索参数变体</li>
</ul><p>于是它只收录一个代表页（首页），其余全部被当成重复内容。</p><hr /></section><section><h2>🛠️ 修复一：补上 canonical<a href="#️-修复一补上-canonical"><span>#</span></a></h2><p>在布局组件的 <code>&lt;head&gt;</code> 里加一行：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;</span><span>link</span><span> </span><span>rel</span><span>=</span><span>"canonical"</span><span> </span><span>href</span><span>=</span><span>{Astro.url}</span><span> /&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>配合 Astro 的 <code>trailingSlash: "always"</code>，输出的就是带斜杠的完整 URL，与 sitemap 保持一致。</p><p>这是一个纯声明式的修复，不影响页面显示，只影响搜索引擎对 URL 的判断。</p><p>修复后，无斜杠版本虽然在 Vercel 上同样返回 200，但页面内的 canonical 指向带斜杠版本，Google 会自动剔除重复 URL。</p><hr /></section><section><h2>🛡️ 修复二：robots.txt 屏蔽参数页<a href="#️-修复二robotstxt-屏蔽参数页"><span>#</span></a></h2><p><code>/archive/?tag=xxx</code> 这类带查询参数的过滤页会被反复抓取，但永远不会被收录，纯浪费抓取配额。</p><p>在 <code>robots.txt</code> 里加上：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Disallow: /*?tag=</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>简单有效！</p><hr /></section><section><h2>📝 修复三：消除雷同的 meta description<a href="#-修复三消除雷同的-meta-description"><span>#</span></a></h2><p>Bing 后台提示「太多页面使用相同的 meta description」。</p><p>原因是之前用的兜底逻辑：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>description</span><span> </span></span><span>||</span><span><span> </span><span>siteConfig</span><span>.</span></span><span>description</span><span> </span><span>||</span><span><span> </span><span>pageTitle</span></span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>所有没写 description 的页面（归档、搜索、标签、分类页）全部退回到同一个站点描述。</p><p><strong>修复方案：</strong></p><ol>
<li><strong>文章页</strong>：没有手写 description 时，兜底用正文第一段作为摘要（项目里本来就有 remark-excerpt 插件在生成 excerpt，只是没人用）</li>
<li><strong>归档 / 搜索 / 标签 / 分类页</strong>：各自补充独立的 description（走 i18n，六种语言都加了翻译）</li>
</ol><hr /></section><section><h2>🚀 修复四：接入 IndexNow<a href="#-修复四接入-indexnow"><span>#</span></a></h2><p>IndexNow 是一个开放协议，Bing、Yandex、Naver、Seznam 都支持。</p><p>网站根目录放一个 <code>&lt;key&gt;.txt</code> 文件作为“地盘证明”，发布内容后主动向搜索引擎提交 URL，通常几小时到一两天内就会被抓取，不需要等爬虫慢慢来。</p><p>我做了三件事：</p><ol>
<li>生成一个 UUID 作为 key，写入 <code>public/&lt;key&gt;.txt</code>（注意：<strong>文件内容不能有多余的换行符</strong>，Bing 校验非常严格）</li>
<li>写了一个构建后脚本 <code>scripts/indexnow.ts</code>：读 sitemap 里的 URL，逐个端点提交</li>
<li>接入 <code>pnpm build</code> 最后一步，以后每次部署自动提交</li>
</ol><section><h3>踩坑记录 🕳️<a href="#踩坑记录-️"><span>#</span></a></h3><p><strong>坑一：key 文件不能有换行符</strong><br />
写入文件时默认带 <code>\n</code>，Bing 验证 key 文件内容时严格比对，多余的换行符会导致验证失败（403）。</p><p><strong>坑二：POST 接口 403，GET 接口正常</strong><br />
相同的 key、相同的 URL，<code>POST https://api.indexnow.org/indexnow</code> 稳定返回 403，改用 GET 请求则返回 202。</p><p>最终脚本改成对多个端点逐一提交：</p><ul>
<li>api.indexnow.org（Bing 聚合）</li>
<li><a href="http://www.bing.com" target="_blank">www.bing.com</a></li>
<li>yandex.com</li>
<li>searchadvisor.naver.com</li>
<li>search.seznam.cz</li>
</ul><p>实测同一 key：Yandex / Naver / Seznam 全部接受，只有 Bing 拒绝。</p><p><strong>坑三：Bing 会把主机标记为“未授权”并缓存</strong><br />
Bing 的验证器会异步验证 key 文件，一旦判定主机“未授权”（比如 key 文件还没上线就去提交），这个状态会被缓存。<br />
<strong>换新 key 也绕不过去</strong>，只能等缓存过期（最长 24 小时）或等待域名验证方式修正。</p><p><strong>坑四：用“从 Google Search Console 导入”验证的域名，Bing 的 IndexNow 会拒绝</strong><br />
在 Bing Webmaster Tools 里重新添加了站点，改用 XML 文件方式验证，之后 Bing 的 IndexNow 面板就能看到提交记录了（353 条）。</p><p><strong>坑五：搜索引擎不解析 sitemap 索引文件</strong><br />
先是在 Bing 上发现提交 <code>sitemap-index.xml</code> 只发现 1 个 URL；后来发现 Google Search Console 也一样——读过一次索引后 “Sitemaps read” 一直为 0。</p><p>两个搜索引擎都改成<strong>直接提交 sitemap-0.xml</strong> 后，Bing 和 Google 均成功发现 39 个 URL。</p><hr /></section></section><section><h2>🌈 现状与总结<a href="#-现状与总结"><span>#</span></a></h2><ul>
<li><strong>Google 侧</strong>：canonical、meta description、robots.txt 均已修复；sitemap-0.xml 已成功处理（39 个 URL）。剩下的交给时间（新站收录慢是正常的）</li>
<li><strong>Bing 侧</strong>：网站地图 ✅（39 个 URL）、IndexNow ✅（353 条提交记录），Yandex / Naver / Seznam 也已收到提交</li>
<li><strong>后续</strong>：发新文章，部署时自动提交 IndexNow，无需手动操作</li>
</ul><section><h3>最大的感悟<a href="#最大的感悟"><span>#</span></a></h3><blockquote><p><strong>SEO 里 90% 的问题都是“少了一行标签”。</strong></p></blockquote></section></section></section>]]></content>
    </entry>
    <entry>
      <id>https://blyciallo.com/posts/ce-shi/</id>
      <title type="text">测试</title>
      <published>2026-08-11T00:00:00.000Z</published>
      <updated>2026-08-11T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/ce-shi/"/>
      <summary type="text">测试</summary>
      <content type="html"><![CDATA[<p>测试
1241412
1512512
咕咕嘎嘎
咕咕嘎嘎过</p>]]></content>
    </entry>
    <entry>
      <id>https://blyciallo.com/posts/markdown-mermaid/</id>
      <title type="text">Markdown Mermaid 图表</title>
      <published>1970-01-01T00:00:00.000Z</published>
      <updated>1970-01-01T00:00:00.000Z</updated>
      <author><name>Bly~</name></author>
      <link rel="alternate" href="https://blyciallo.com/posts/markdown-mermaid/"/>
      <summary type="text">一个包含 Mermaid 的 Markdown 博客文章简单示例。</summary>
      <content type="html"><![CDATA[<section><h2>Markdown 中 Mermaid 图表完整指南<a href="#markdown-中-mermaid-图表完整指南"><span>#</span></a></h2><p>本文演示如何在 Markdown 文档中使用 Mermaid 创建各种复杂图表，包括流程图、时序图、ER 图、类图、状态图、XY 图、甘特图、思维导图等。</p><blockquote><p>Mermaid 图表由 <a href="https://github.com/Latias94/merman" target="_blank">Merman</a> 实现。Firefly 在 Astro 构建阶段生成亮色和深色两套静态 SVG，无需在浏览器中加载 Mermaid 渲染运行时。可以前往 <a href="http://frankorz.com/merman/" target="_blank">Merman Playground</a> 实时编辑语法并预览渲染结果。</p></blockquote></section>
<section><h2>流程图示例<a href="#流程图示例"><span>#</span></a></h2><p>流程图非常适合表示流程或算法步骤。</p><div><div><div><div><span></span></div><div><span><p>是</p></span></div><div><span><p>否</p></span></div><div><span><p>选项 1</p></span></div><div><span><p>选项 2</p></span></div><div><span><p>选项 3</p></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span><p>子过程详情</p></span></div><div><span></span></div><div><span></span></div><div><span><p>子步骤 1</p></span></div><div><span><p>子步骤 2</p></span></div><div><span><p>子步骤 3</p></span></div><div><span><p>开始</p></span></div><div><span><p>条件检查</p></span></div><div><span><p>处理步骤 1</p></span></div><div><span><p>处理步骤 2</p></span></div><div><span><p>另一个决策</p></span></div><div><span><p>结果 1</p></span></div><div><span><p>结果 2</p></span></div><div><span><p>结果 3</p></span></div><div><span><p>结束</p></span></div>
</div><div><div><span></span></div><div><span><p>是</p></span></div><div><span><p>否</p></span></div><div><span><p>选项 1</p></span></div><div><span><p>选项 2</p></span></div><div><span><p>选项 3</p></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span><p>子过程详情</p></span></div><div><span></span></div><div><span></span></div><div><span><p>子步骤 1</p></span></div><div><span><p>子步骤 2</p></span></div><div><span><p>子步骤 3</p></span></div><div><span><p>开始</p></span></div><div><span><p>条件检查</p></span></div><div><span><p>处理步骤 1</p></span></div><div><span><p>处理步骤 2</p></span></div><div><span><p>另一个决策</p></span></div><div><span><p>结果 1</p></span></div><div><span><p>结果 2</p></span></div><div><span><p>结果 3</p></span></div><div><span><p>结束</p></span></div>
</div></div></div></section>
<section><h2>时序图示例<a href="#时序图示例"><span>#</span></a></h2><p>时序图显示对象之间随时间的交互。</p><div><div><div>数据库服务器网页应用用户数据库服务器网页应用用户alt[认证成功][认证失败]提交登录请求发送认证请求查询用户凭据返回用户数据返回认证结果显示欢迎页面请求用户数据获取用户偏好返回偏好设置返回用户数据加载个性化界面显示错误消息提示重新输入
</div><div>数据库服务器网页应用用户数据库服务器网页应用用户alt[认证成功][认证失败]提交登录请求发送认证请求查询用户凭据返回用户数据返回认证结果显示欢迎页面请求用户数据获取用户偏好返回偏好设置返回用户数据加载个性化界面显示错误消息提示重新输入
</div></div></div></section>
<section><h2>ER 图示例<a href="#er-图示例"><span>#</span></a></h2><p>ER 图（实体关系图）非常适合表示数据库结构。</p><div><div><div>

<div><span><p>writes</p></span></div><div><span><p>posts</p></span></div><div><span><p>has</p></span></div><div><span><p>belongs to</p></span></div>
<div><span><p>USER</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>username</p></span></div><div><span></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>email</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>created_at</p></span></div><div><span></span></div><div><span></span></div><div><span><p>ARTICLE</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>title</p></span></div><div><span></span></div><div><span></span></div><div><span><p>text</p></span></div><div><span><p>content</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>published</p></span></div><div><span></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>author_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>COMMENT</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>text</p></span></div><div><span><p>content</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>created_at</p></span></div><div><span></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>user_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>article_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>CATEGORY</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>name</p></span></div><div><span></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>description</p></span></div><div><span></span></div><div><span></span></div>

</div><div>

<div><span><p>writes</p></span></div><div><span><p>posts</p></span></div><div><span><p>has</p></span></div><div><span><p>belongs to</p></span></div>
<div><span><p>USER</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>username</p></span></div><div><span></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>email</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>created_at</p></span></div><div><span></span></div><div><span></span></div><div><span><p>ARTICLE</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>title</p></span></div><div><span></span></div><div><span></span></div><div><span><p>text</p></span></div><div><span><p>content</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>published</p></span></div><div><span></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>author_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>COMMENT</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>text</p></span></div><div><span><p>content</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>created_at</p></span></div><div><span></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>user_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>article_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>CATEGORY</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>name</p></span></div><div><span></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>description</p></span></div><div><span></span></div><div><span></span></div>

</div></div></div></section>
<section><h2>类图示例<a href="#类图示例"><span>#</span></a></h2><p>类图显示系统的静态结构，包括类、属性、方法及其关系。</p><div><div><div><div><span><p>写作</p></span></div><div><span><p>发表</p></span></div><div><span><p>拥有</p></span></div><div><span><p>属于</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>User</p></span></div><div><span><p>+String username</p></span></div><div><span><p>+String password</p></span></div><div><span><p>+String email</p></span></div><div><span><p>+Boolean active</p></span></div><div><span><p>+login()</p></span></div><div><span><p>+logout()</p></span></div><div><span><p>+updateProfile()</p></span></div><div><span><p>Article</p></span></div><div><span><p>+String title</p></span></div><div><span><p>+String content</p></span></div><div><span><p>+Date publishDate</p></span></div><div><span><p>+Boolean published</p></span></div><div><span><p>+publish()</p></span></div><div><span><p>+edit()</p></span></div><div><span><p>+delete()</p></span></div><div><span><p>Comment</p></span></div><div><span><p>+String content</p></span></div><div><span><p>+Date commentDate</p></span></div><div><span><p>+addComment()</p></span></div><div><span><p>+deleteComment()</p></span></div><div><span><p>Category</p></span></div><div><span><p>+String name</p></span></div><div><span><p>+String description</p></span></div><div><span><p>+addArticle()</p></span></div><div><span><p>+removeArticle()</p></span></div></div><div><div><span><p>写作</p></span></div><div><span><p>发表</p></span></div><div><span><p>拥有</p></span></div><div><span><p>属于</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>User</p></span></div><div><span><p>+String username</p></span></div><div><span><p>+String password</p></span></div><div><span><p>+String email</p></span></div><div><span><p>+Boolean active</p></span></div><div><span><p>+login()</p></span></div><div><span><p>+logout()</p></span></div><div><span><p>+updateProfile()</p></span></div><div><span><p>Article</p></span></div><div><span><p>+String title</p></span></div><div><span><p>+String content</p></span></div><div><span><p>+Date publishDate</p></span></div><div><span><p>+Boolean published</p></span></div><div><span><p>+publish()</p></span></div><div><span><p>+edit()</p></span></div><div><span><p>+delete()</p></span></div><div><span><p>Comment</p></span></div><div><span><p>+String content</p></span></div><div><span><p>+Date commentDate</p></span></div><div><span><p>+addComment()</p></span></div><div><span><p>+deleteComment()</p></span></div><div><span><p>Category</p></span></div><div><span><p>+String name</p></span></div><div><span><p>+String description</p></span></div><div><span><p>+addArticle()</p></span></div><div><span><p>+removeArticle()</p></span></div></div></div></div></section>
<section><h2>状态图示例<a href="#状态图示例"><span>#</span></a></h2><p>状态图显示对象在其生命周期中经历的状态序列。</p><div><div><div><div><span></span></div><div><span><p>提交</p></span></div><div><span><p>拒绝</p></span></div><div><span><p>批准</p></span></div><div><span><p>发布</p></span></div><div><span><p>归档</p></span></div><div><span><p>撤回</p></span></div><div><span></span></div><div><span><p>草稿</p></span></div><div><span><p>审核中</p></span></div><div><span><p>已批准</p></span></div><div><span><p>已归档</p></span></div><div><span>已发布</span></div><div><span></span></div><div><span><p>临时隐藏</p></span></div><div><span><p>恢复</p></span></div><div><span></span></div><div><span></span></div><div><span><p>活跃</p></span></div><div><span><p>隐藏</p></span></div>
</div><div><div><span></span></div><div><span><p>提交</p></span></div><div><span><p>拒绝</p></span></div><div><span><p>批准</p></span></div><div><span><p>发布</p></span></div><div><span><p>归档</p></span></div><div><span><p>撤回</p></span></div><div><span></span></div><div><span><p>草稿</p></span></div><div><span><p>审核中</p></span></div><div><span><p>已批准</p></span></div><div><span><p>已归档</p></span></div><div><span>已发布</span></div><div><span></span></div><div><span><p>临时隐藏</p></span></div><div><span><p>恢复</p></span></div><div><span></span></div><div><span></span></div><div><span><p>活跃</p></span></div><div><span><p>隐藏</p></span></div>
</div></div></div></section>
<section><h2>XY 图示例<a href="#xy-图示例"><span>#</span></a></h2><p>XY 图表非常适合展示趋势和对比数据。</p><div><div><div>月度访问量趋势1月2月3月4月5月6月5000450040003500300025002000150010005000访问量
</div><div>月度访问量趋势1月2月3月4月5月6月5000450040003500300025002000150010005000访问量
</div></div></div></section>
<section><h2>饼图示例<a href="#饼图示例"><span>#</span></a></h2><p>饼图适合直观展示各部分在整体中的占比。</p><div><div><div>45%30%15%10%内容类型占比技术文章 [45]项目记录 [30]生活随笔 [15]其他 [10]
</div><div>45%30%15%10%内容类型占比技术文章 [45]项目记录 [30]生活随笔 [15]其他 [10]
</div></div></div></section>
<section><h2>甘特图示例<a href="#甘特图示例"><span>#</span></a></h2><p>甘特图可以按时间轴展示项目阶段、任务依赖和当前进度。</p><div><div><div>07/0107/0307/0507/0707/0907/1107/1307/1507/17需求整理 视觉设计 功能实现 内容迁移 构建检查 正式上线 准备开发发布博客版本发布计划
</div><div>07/0107/0307/0507/0707/0907/1107/1307/1507/17需求整理 视觉设计 功能实现 内容迁移 构建检查 正式上线 准备开发发布博客版本发布计划
</div></div></div></section>
<section><h2>思维导图示例<a href="#思维导图示例"><span>#</span></a></h2><p>思维导图适合梳理主题层级和知识结构。</p><div><div><div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span><p>Firefly</p></span></div><div><span><p>内容</p></span></div><div><span><p>技术文章</p></span></div><div><span><p>生活记录</p></span></div><div><span><p>体验</p></span></div><div><span><p>搜索</p></span></div><div><span><p>深色模式</p></span></div><div><span><p>图表</p></span></div><div><span><p>工程</p></span></div><div><span><p>Astro</p></span></div><div><span><p>Svelte</p></span></div><div><span><p>Merman</p></span></div>
</div><div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span><p>Firefly</p></span></div><div><span><p>内容</p></span></div><div><span><p>技术文章</p></span></div><div><span><p>生活记录</p></span></div><div><span><p>体验</p></span></div><div><span><p>搜索</p></span></div><div><span><p>深色模式</p></span></div><div><span><p>图表</p></span></div><div><span><p>工程</p></span></div><div><span><p>Astro</p></span></div><div><span><p>Svelte</p></span></div><div><span><p>Merman</p></span></div>
</div></div></div></section>
<section><h2>时间线示例<a href="#时间线示例"><span>#</span></a></h2><p>时间线用于按年份或阶段呈现项目的重要事件。</p><div><div><div>2024建立博客完成基础主题2025加入搜索与图库完善内容系统2026升级   Astro   7使用   Merman   渲染图表Firefly 演进时间线
</div><div>2024建立博客完成基础主题2025加入搜索与图库完善内容系统2026升级   Astro   7使用   Merman   渲染图表Firefly 演进时间线
</div></div></div></section>
<section><h2>用户旅程图示例<a href="#用户旅程图示例"><span>#</span></a></h2><p>用户旅程图能够描述用户在不同阶段的行为和体验评分。</p><div><div><div>读者<div><div>发现内容</div></div>发现内容读者<div><div>      打开首页</div></div>      打开首页读者<div><div>      搜索主题</div></div>      搜索主题<div><div>阅读文章</div></div>阅读文章读者<div><div>      浏览正文</div></div>      浏览正文读者<div><div>      查看图表</div></div>      查看图表<div><div>继续探索</div></div>继续探索读者<div><div>      查看相关文章</div></div>      查看相关文章读者<div><div>      分享文章</div></div>      分享文章读者浏览文章的旅程
</div><div>读者<div><div>发现内容</div></div>发现内容读者<div><div>      打开首页</div></div>      打开首页读者<div><div>      搜索主题</div></div>      搜索主题<div><div>阅读文章</div></div>阅读文章读者<div><div>      浏览正文</div></div>      浏览正文读者<div><div>      查看图表</div></div>      查看图表<div><div>继续探索</div></div>继续探索读者<div><div>      查看相关文章</div></div>      查看相关文章读者<div><div>      分享文章</div></div>      分享文章读者浏览文章的旅程
</div></div></div></section>
<section><h2>Git 图示例<a href="#git-图示例"><span>#</span></a></h2><p>Git 图可以清晰展示分支、提交和合并历史。</p><div><div><div>mainfeatureinitadd-diagramspolish-themesmerge-featurerelease
</div><div>mainfeatureinitadd-diagramspolish-themesmerge-featurerelease
</div></div></div></section>
<section><h2>看板示例<a href="#看板示例"><span>#</span></a></h2><p>看板适合展示任务在不同工作阶段之间的分布。</p><div><div><div><div><span><p>待办</p></span></div><div><span><p>进行中</p></span></div><div><span><p>已完成</p></span></div><div><span><p>整理需求</p></span></div><div><span></span></div><div><span></span></div><div><span><p>准备示例</p></span></div><div><span></span></div><div><span></span></div><div><span><p>接入 Merman</p></span></div><div><span></span></div><div><span></span></div><div><span><p>服务端渲染</p></span></div><div><span></span></div><div><span></span></div><div><span><p>亮暗主题</p></span></div><div><span></span></div><div><span></span></div>
</div><div><div><span><p>待办</p></span></div><div><span><p>进行中</p></span></div><div><span><p>已完成</p></span></div><div><span><p>整理需求</p></span></div><div><span></span></div><div><span></span></div><div><span><p>准备示例</p></span></div><div><span></span></div><div><span></span></div><div><span><p>接入 Merman</p></span></div><div><span></span></div><div><span></span></div><div><span><p>服务端渲染</p></span></div><div><span></span></div><div><span></span></div><div><span><p>亮暗主题</p></span></div><div><span></span></div><div><span></span></div>
</div></div></div></section>
<section><h2>Sankey 图示例<a href="#sankey-图示例"><span>#</span></a></h2><p>Sankey 图通过连线宽度展示流量在不同节点之间的流向。</p><div><div><div>Home
1650Post list
1200Search
450Post detail
1220Related posts
260External shares
180</div><div>Home
1650Post list
1200Search
450Post detail
1220Related posts
260External shares
180</div></div></div></section>
<section><h2>总结<a href="#总结"><span>#</span></a></h2><p>Mermaid 是在 Markdown 文档中创建各种类型图表的强大工具。本文演示了流程图、时序图、ER 图、类图、状态图、XY 图、饼图、甘特图、思维导图、时间线、用户旅程图、Git 图、看板和 Sankey 图。这些图表可以帮助您更清晰地表达复杂的概念、流程和数据结构。</p><p>要使用 Mermaid，只需在代码块中指定 mermaid 语言，并使用简洁的文本语法描述图表。图表会在构建时自动渲染为 SVG，无需客户端 JavaScript 加载。</p><p>可以前往 <a href="http://frankorz.com/merman/" target="_blank">Merman Playground</a> 尝试更多语法，再将图表代码粘贴到文章中。</p></section>]]></content>
    </entry>
</feed>
