<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>芹菜炖雪梨</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://qincaidunxueli.cn/</id>
  <link href="https://qincaidunxueli.cn/" rel="alternate"/>
  <link href="https://qincaidunxueli.cn/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, 芹菜炖雪梨</rights>
  <subtitle>记录生活与技术</subtitle>
  <title>芹菜炖雪梨的小屋</title>
  <updated>2026-11-06T01:55:00.000Z</updated>
  <entry>
    <author>
      <name>芹菜炖雪梨</name>
    </author>
    <category term="生活" scheme="https://qincaidunxueli.cn/categories/%E7%94%9F%E6%B4%BB/"/>
    <category term="随笔" scheme="https://qincaidunxueli.cn/tags/%E9%9A%8F%E7%AC%94/"/>
    <content>
      <![CDATA[<p>你好你好你好你好你好</p>]]>
    </content>
    <id>https://qincaidunxueli.cn/2026/11/06/%E8%87%AD%E5%B1%81%E7%90%B4%E6%98%AF%E7%8C%AA/</id>
    <link href="https://qincaidunxueli.cn/2026/11/06/%E8%87%AD%E5%B1%81%E7%90%B4%E6%98%AF%E7%8C%AA/"/>
    <published>2026-11-06T01:55:00.000Z</published>
    <summary>哈哈哈哈哈哈</summary>
    <title>臭屁琴是猪</title>
    <updated>2026-11-06T01:55:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>芹菜炖雪梨</name>
    </author>
    <category term="技术" scheme="https://qincaidunxueli.cn/categories/%E6%8A%80%E6%9C%AF/"/>
    <category term="Hexo" scheme="https://qincaidunxueli.cn/tags/Hexo/"/>
    <category term="建站" scheme="https://qincaidunxueli.cn/tags/%E5%BB%BA%E7%AB%99/"/>
    <category term="Cloudflare" scheme="https://qincaidunxueli.cn/tags/Cloudflare/"/>
    <content>
      <![CDATA[<p>这个博客是从零搭起来的：Hexo 8 + NexT 8，托管在 Cloudflare Workers，域名在国内可直接访问。</p><p>整个过程踩了不少坑，有些是教程里过时的说法，有些是只能自己撞一次才知道的。这篇把完整流程和结论记下来，方便以后重装时照着抄，也给同样在折腾的人省几个小时。</p><span id="more"></span><h2 id="一、技术选型：为什么是-Hexo"><a href="#一、技术选型：为什么是-Hexo" class="headerlink" title="一、技术选型：为什么是 Hexo"></a>一、技术选型：为什么是 Hexo</h2><p>静态博客的核心逻辑很简单：本地把 Markdown 渲染成 HTML，把 HTML 扔到某个能托管文件的地方。没有数据库、没有后台、没有服务器要维护，也就不存在被拖库、被打、被挂马这些事。</p><p>选 Hexo 而不是 WordPress 的理由只有三条：</p><ul><li><strong>零运维</strong>。WordPress 要 PHP + MySQL + 一台常开的服务器，个人博客完全用不上</li><li><strong>写作体验纯粹</strong>。写的都是 <code>.md</code> 文件，放在 Obsidian、VS Code 里都能写，随时可以用 Git 备份</li><li><strong>改造成本低</strong>。想改样式就改 CSS，想加功能就装插件，不会陷入「主题里全是别人写的 PHP」</li></ul><p>主题选 NexT，因为它的移动端处理是同类里最成熟的，而且社区大、踩过的坑都有人写过。</p><h2 id="二、环境与初始化"><a href="#二、环境与初始化" class="headerlink" title="二、环境与初始化"></a>二、环境与初始化</h2><p>需要三样东西：Node.js（18 以上）、npm、Git。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">node -v          <span class="comment"># v22.x</span></span><br><span class="line">npm -v           <span class="comment"># 10.x</span></span><br><span class="line">git --version    <span class="comment"># 2.x</span></span><br></pre></td></tr></table></figure><p>如果 npm 装包慢，先换镜像：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm config <span class="built_in">set</span> registry https://registry.npmmirror.com</span><br></pre></td></tr></table></figure><p>初始化：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">npx hexo-cli init blog</span><br><span class="line"><span class="built_in">cd</span> blog</span><br><span class="line">npm install</span><br></pre></td></tr></table></figure><p>装主题和常用插件：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">npm i hexo-theme-next</span><br><span class="line">npm i hexo-generator-searchdb hexo-generator-sitemap hexo-generator-feed</span><br><span class="line">npm i hexo-autonofollow hexo-deployer-git</span><br><span class="line">npm i hexo-word-counter</span><br></pre></td></tr></table></figure><blockquote><p><strong>坑 1</strong>：网上大量教程写的是 <code>hexo-wordcount</code>。NexT 8 新版要求的是 <code>hexo-word-counter</code>，装错了侧栏和页脚的字数统计会静默消失，不报错。</p></blockquote><p>启动本地预览：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npx hexo server     <span class="comment"># http://localhost:4000</span></span><br></pre></td></tr></table></figure><h2 id="三、主题配置：三处关键设置"><a href="#三、主题配置：三处关键设置" class="headerlink" title="三、主题配置：三处关键设置"></a>三、主题配置：三处关键设置</h2><p>NexT 的配置不要直接改 <code>node_modules</code>，正确做法是把默认配置复制到站点根目录：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cp</span> node_modules/hexo-theme-next/_config.yml _config.next.yml</span><br></pre></td></tr></table></figure><p>之后所有改动都在 <code>_config.next.yml</code> 里，升级主题不会丢。</p><h3 id="1-配色方案（scheme）"><a href="#1-配色方案（scheme）" class="headerlink" title="1. 配色方案（scheme）"></a>1. 配色方案（scheme）</h3><p>NexT 内置四套布局，改动这一行影响全局观感：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">scheme:</span> <span class="string">Gemini</span>    <span class="comment"># 双栏，侧栏在左，窄屏自动折叠单栏</span></span><br><span class="line"><span class="comment">#scheme: Muse    # 单栏，最朴素</span></span><br><span class="line"><span class="comment">#scheme: Mist    # 单栏，紧凑</span></span><br><span class="line"><span class="comment">#scheme: Pisces  # 双栏，留白最多</span></span><br></pre></td></tr></table></figure><p>选 Gemini 是因为它在 500px 以下会自动把侧栏收进抽屉，手机上不用额外调。</p><h3 id="2-关掉入场动效（重要）"><a href="#2-关掉入场动效（重要）" class="headerlink" title="2. 关掉入场动效（重要）"></a>2. 关掉入场动效（重要）</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">motion:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">false</span></span><br></pre></td></tr></table></figure><p><strong>这是最容易踩的坑，没有之一。</strong> NexT 的入场动画依赖 <code>animate.css</code>，而它默认从国外 CDN 加载。一旦这个 CDN 在国内被墙或超时：</p><ul><li>页面结构完整加载了</li><li>但正文的 <code>opacity</code> 停在 <code>0</code></li><li>结果就是<strong>整页白屏</strong>，只有背景色</li></ul><p>我第一次预览就遇到了，排查了半小时才想到是动效的问题。</p><h3 id="3-移动端留白"><a href="#3-移动端留白" class="headerlink" title="3. 移动端留白"></a>3. 移动端留白</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">mobile_layout_economy:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure><p>关掉这个的话，手机上的左右边距会贴着屏幕边，正文看起来非常挤。开了之后按窄屏重新计算 padding，实测 390px 宽度下左右各留 20px，读起来正常。</p><h2 id="四、头像与站点图标"><a href="#四、头像与站点图标" class="headerlink" title="四、头像与站点图标"></a>四、头像与站点图标</h2><p>三个尺寸就够了，放 <code>source/images/</code>：</p><table><thead><tr><th>文件</th><th>尺寸</th><th>用途</th></tr></thead><tbody><tr><td><code>avatar.png</code></td><td>400×400</td><td>侧边栏头像</td></tr><tr><td><code>favicon.png</code></td><td>64×64</td><td>浏览器标签页</td></tr><tr><td><code>apple-touch-icon.png</code></td><td>180×180</td><td>手机「添加到主屏幕」</td></tr></tbody></table><p>想省事用 Node 的 <code>sharp</code> 一次裁好（原图非正方形时按中心裁切）：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> sharp = <span class="built_in">require</span>(<span class="string">&#x27;sharp&#x27;</span>);</span><br><span class="line"><span class="keyword">await</span> <span class="title function_">sharp</span>(<span class="string">&#x27;原图.jpg&#x27;</span>)</span><br><span class="line">  .<span class="title function_">resize</span>(<span class="number">400</span>, <span class="number">400</span>, &#123; <span class="attr">fit</span>: <span class="string">&#x27;cover&#x27;</span>, <span class="attr">position</span>: <span class="string">&#x27;centre&#x27;</span> &#125;)</span><br><span class="line">  .<span class="title function_">png</span>()</span><br><span class="line">  .<span class="title function_">toFile</span>(<span class="string">&#x27;source/images/avatar.png&#x27;</span>);</span><br></pre></td></tr></table></figure><p>配置里指向它们：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">avatar:</span></span><br><span class="line">  <span class="attr">url:</span> <span class="string">/images/avatar.png</span></span><br><span class="line">  <span class="attr">rounded:</span> <span class="literal">true</span></span><br><span class="line"></span><br><span class="line"><span class="attr">favicon:</span></span><br><span class="line">  <span class="attr">small:</span> <span class="string">/images/favicon.png</span></span><br><span class="line">  <span class="attr">medium:</span> <span class="string">/images/favicon.png</span></span><br><span class="line">  <span class="attr">apple_touch_icon:</span> <span class="string">/images/apple-touch-icon.png</span></span><br></pre></td></tr></table></figure><h2 id="五、部署：GitHub-Cloudflare-Workers"><a href="#五、部署：GitHub-Cloudflare-Workers" class="headerlink" title="五、部署：GitHub + Cloudflare Workers"></a>五、部署：GitHub + Cloudflare Workers</h2><p>代码放 GitHub，构建和托管交给 Cloudflare。推一次代码，一分钟左右自动上线，全程不用管服务器。</p><h3 id="仓库与-SSH"><a href="#仓库与-SSH" class="headerlink" title="仓库与 SSH"></a>仓库与 SSH</h3><p>不用存密码，用密钥：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t ed25519 -C <span class="string">&quot;你的邮箱&quot;</span> -f ~/.ssh/id_ed25519_github</span><br><span class="line"><span class="built_in">cat</span> ~/.ssh/id_ed25519_github.pub</span><br></pre></td></tr></table></figure><p>把输出的公钥贴到 GitHub → Settings → SSH and GPG keys。然后：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git init -b main</span><br><span class="line">git remote add origin git@github.com:用户名/仓库名.git</span><br><span class="line">git push -u origin main</span><br></pre></td></tr></table></figure><p>测试是否通：<code>ssh -T git@github.com</code>，看到 <code>Hi 用户名!</code> 就成了。</p><h3 id="Cloudflare-侧配置"><a href="#Cloudflare-侧配置" class="headerlink" title="Cloudflare 侧配置"></a>Cloudflare 侧配置</h3><p>新版仪表盘把 Pages 合并进了 Workers，入口只有 <strong>Create application</strong>，所以部署走 Worker + 静态资源。项目根目录加一个 <code>wrangler.jsonc</code>：</p><figure class="highlight jsonc"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;$schema&quot;</span><span class="punctuation">:</span> <span class="string">&quot;node_modules/wrangler/config-schema.json&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;你的项目名&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;compatibility_date&quot;</span><span class="punctuation">:</span> <span class="string">&quot;2026-01-01&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;assets&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;directory&quot;</span><span class="punctuation">:</span> <span class="string">&quot;./public&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;not_found_handling&quot;</span><span class="punctuation">:</span> <span class="string">&quot;404-page&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>构建配置：</p><table><thead><tr><th>字段</th><th>值</th></tr></thead><tbody><tr><td>Build command</td><td><code>npm run build</code></td></tr><tr><td>Deploy command</td><td><code>npx wrangler deploy</code></td></tr><tr><td>Preview command</td><td>留空</td></tr></tbody></table><p><code>package.json</code> 里确保有：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">&quot;scripts&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;build&quot;</span><span class="punctuation">:</span> <span class="string">&quot;hexo generate&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><blockquote><p><strong>坑 2</strong>：<code>Enable Preview builds</code> 建议关掉。它会给每个分支生成临时域名，白占每月构建额度——尤其仓库里有 Dependabot 自动建的依赖升级分支时，纯属浪费。</p></blockquote><h2 id="六、被墙：workers-dev-根本打不开"><a href="#六、被墙：workers-dev-根本打不开" class="headerlink" title="六、被墙：workers.dev 根本打不开"></a>六、被墙：<code>workers.dev</code> 根本打不开</h2><p>部署成功后拿到地址 <code>项目名.账号子域.workers.dev</code>，本地能开。但用手机一测：<strong>完全打不开</strong>；电脑不开代理也打不开。</p><p>一开始以为是配置问题，查了一圈才确认：</p><blockquote><p><code>*.workers.dev</code> 从 <strong>2024 年 6 月 10 日</strong>起在中国大陆被持续屏蔽，方式是 DNS 污染 + 数据包静默丢弃，三大运营商全部受影响。</p></blockquote><p>判断方法很简单，查一下解析：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nslookup 你的项目.workers.dev 223.5.5.5</span><br></pre></td></tr></table></figure><p>如果返回的是 <code>198.18.x.x</code> 这类保留地址（属于基准测试网段），说明 DNS 被投毒了——这个 IP 根本连不到 Cloudflare。</p><p><strong>结论：这不是你的部署有问题，是这个域名后缀本身在国内不通。</strong> 换子域名、换项目名、清缓存都没用，同一个后缀共享同一批被封的节点。</p><h3 id="解法：绑自己的域名"><a href="#解法：绑自己的域名" class="headerlink" title="解法：绑自己的域名"></a>解法：绑自己的域名</h3><p>唯一有效的办法是换一个干净的域名，让流量走独立的解析链路：</p><ol><li>买一个域名（<code>.cn</code> 一年三十块左右，不需要备案——服务器在境外）</li><li>在 Cloudflare 里 <code>Connect a domain</code> 接入，选 <strong>Free</strong> 计划</li><li>到域名注册商处把 <strong>NS</strong> 改成 Cloudflare 给的两条</li><li>等 NS 生效（十分钟到一小时，用 <code>nslookup -type=NS 你的域名 223.5.5.5</code> 验证）</li><li>Worker → Settings → Domains &amp; Routes → <strong>Add → Custom domain</strong>，输入根域名（子域名框<strong>留空</strong>）</li></ol><p>第 5 步会自动生成 DNS 记录并签发证书，几分钟后状态变 <code>Active</code>。</p><h3 id="实测数据"><a href="#实测数据" class="headerlink" title="实测数据"></a>实测数据</h3><p>换成自有域名后，从境内测试（三次）：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">HTTP 200  总耗时 1.34s / 1.09s / 1.06s</span><br><span class="line">TLS 握手  0.78s / 0.52s / 0.50s</span><br></pre></td></tr></table></figure><p>首页、归档、关于、标签、sitemap、RSS、robots 全部 200。</p><p>结论：<strong>能打开，首屏一秒出头，比「一半请求打不开」是质变</strong>。但没有备案就没法用国内节点，这个速度已经是免费方案的天花板；想再快只能备案 + 国内 CDN，代价是两周时间和一台国内服务器。</p><h2 id="七、日常写作流"><a href="#七、日常写作流" class="headerlink" title="七、日常写作流"></a>七、日常写作流</h2><p>命令敲多了会烦，所以做了两个双击即用的入口（<code>.bat</code> + Node 脚本）：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">1-新建文章.bat   →  生成带日期的 .md 文件，自动用编辑器打开</span><br><span class="line">2-发布文章.bat   →  git add / commit / push，触发自动构建</span><br></pre></td></tr></table></figure><p>编辑器用 Obsidian：把 <code>source</code> 目录作为库打开，写文章在 <code>_posts</code> 里，图片放 <code>images</code>。</p><p>Obsidian 侧要改三个设置，否则写出来的链接博客不认：</p><ul><li><strong>关闭 wikilink 格式</strong>（<code>useMarkdownLinks: true</code>）—— <code>[[双链]]</code> 这种语法 Hexo 不支持</li><li><strong>附件目录设为 <code>images</code></strong> —— 粘贴的截图统一落在一个地方</li><li><strong>链接格式设为站点绝对路径</strong> —— 生成 <code>![](/images/xxx.png)</code> 而不是 <code>../images/xxx.png</code></li></ul><p>这些可以直接写进 <code>source/.obsidian/app.json</code>：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;useMarkdownLinks&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;newLinkFormat&quot;</span><span class="punctuation">:</span> <span class="string">&quot;absolute&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;attachmentFolderPath&quot;</span><span class="punctuation">:</span> <span class="string">&quot;images&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p><code>.obsidian</code> 以点开头，Hexo 打包时会自动忽略，不会混进 <code>public</code>。</p><p>发布脚本里顺手做了三件自动化：</p><ol><li><strong>图片路径兜底</strong>：把 <code>../images/x.png</code> 改成 <code>/images/x.png</code>，防止相对路径在子页面里解析失败</li><li><strong>按标题重命名</strong>：文件名是 <code>2026-11-06-0935.md</code> 这种时间戳时，读 front-matter 的 <code>title</code> 改成 <code>标题.md</code>，编辑器里一眼能认出</li><li><strong>试运行开关</strong>：<code>PUBLISH_DRY=1</code> 只跑检查不提交，改脚本时安全</li></ol><h2 id="八、踩坑清单"><a href="#八、踩坑清单" class="headerlink" title="八、踩坑清单"></a>八、踩坑清单</h2><table><thead><tr><th>#</th><th>坑</th><th>现象</th><th>解法</th></tr></thead><tbody><tr><td>1</td><td>装了 <code>hexo-wordcount</code></td><td>字数统计静默消失，无报错</td><td>换 <code>hexo-word-counter</code></td></tr><tr><td>2</td><td>入场动效依赖国外 CDN</td><td>整页白屏，只有背景色</td><td><code>motion.enable: false</code></td></tr><tr><td>3</td><td>不蒜子统计用旧域名</td><td>页面白屏或统计数字异常</td><td>域名已废弃，换 <code>busuanzi.ibruce.info</code></td></tr><tr><td>4</td><td>用 <code>blog/scripts/</code> 放自己的脚本</td><td>构建时被 Hexo 当插件加载并执行</td><td>改放 <code>blog/tools/</code></td></tr><tr><td>5</td><td>GitHub 图床 + jsDelivr</td><td>图片大面积裂图</td><td>图片跟文章一起打包，或换对象存储</td></tr><tr><td>6</td><td><code>workers.dev</code> 域名</td><td>国内完全打不开</td><td>绑自有域名</td></tr><tr><td>7</td><td>文章太少时页脚显示 <code>0k</code></td><td>总字数不足一千，显示成 0k</td><td>关闭全站字数合计，只留每篇</td></tr></tbody></table><p>第 4 条值得单独说：Hexo 会把站点根目录下的 <code>scripts/</code> 当插件目录自动加载。我把「新建文章」的脚本放在那里，结果每次构建都会执行一遍——脚本里还带 <code>spawn</code> 动作，在 CI 里跑起来就是灾难。<strong>自己的工具脚本永远别放进 <code>scripts/</code>。</strong></p><h2 id="九、成本"><a href="#九、成本" class="headerlink" title="九、成本"></a>九、成本</h2><table><thead><tr><th>项目</th><th>费用</th></tr></thead><tbody><tr><td>Hexo &#x2F; NexT</td><td>免费</td></tr><tr><td>GitHub 仓库</td><td>免费</td></tr><tr><td>Cloudflare Workers 静态托管</td><td>免费（每月 10 万次请求）</td></tr><tr><td>域名 <code>.cn</code></td><td>约 30 元&#x2F;年</td></tr><tr><td>服务器 &#x2F; 备案</td><td>不需要</td></tr></tbody></table><p>一年三十块，剩下的全是白嫖。代价是首屏一秒出头，以及接受「偶尔某个运营商网络抽风」这件事。</p><p>想追求「点开秒开」，就得备案 + 国内节点，那是另一套成本结构：时间两周起，钱一百五起。对个人博客来说，三十块这个方案已经够用了。</p><h2 id="十、收尾"><a href="#十、收尾" class="headerlink" title="十、收尾"></a>十、收尾</h2><p>回头看，真正花时间的不是搭建，是<strong>判断哪些教程已经过期</strong>。静态博客这套东西十年前就成熟了，变的是托管平台的可达性——<code>workers.dev</code> 被封、jsDelivr 大陆节点被吊销、不蒜子换域名，这些都是近几年才发生的事，而大量教程还停在能用的年代。</p><p>所以搭之前先花十分钟验证「托管平台的域名在国内能不能打开」，比照着教程一步步抄要省事得多。</p>]]>
    </content>
    <id>https://qincaidunxueli.cn/2026/11/06/hexo-blog-notes/</id>
    <link href="https://qincaidunxueli.cn/2026/11/06/hexo-blog-notes/"/>
    <published>2026-11-06T01:35:00.000Z</published>
    <summary>域名、托管、主题、部署、被墙、写作流，一次讲完整。包含实测数据和踩过的七个坑。</summary>
    <title>从零搭一个国内能打开的 Hexo 博客：全流程与七个坑</title>
    <updated>2026-11-06T01:35:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>芹菜炖雪梨</name>
    </author>
    <category term="开始" scheme="https://qincaidunxueli.cn/categories/%E5%BC%80%E5%A7%8B/"/>
    <category term="随笔" scheme="https://qincaidunxueli.cn/tags/%E9%9A%8F%E7%AC%94/"/>
    <content>
      <![CDATA[<p>这是第一篇文章。博客用 Hexo 8 + NexT 8 搭成，纯静态，托管在云端，不需要服务器。</p>]]>
    </content>
    <id>https://qincaidunxueli.cn/2026/11/05/hello-blog/</id>
    <link href="https://qincaidunxueli.cn/2026/11/05/hello-blog/"/>
    <published>2026-11-05T12:00:00.000Z</published>
    <summary>见证开始</summary>
    <title>你好，博客</title>
    <updated>2026-11-05T12:00:00.000Z</updated>
  </entry>
</feed>
