<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>Wen xi</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://wenxixixi.cc/</id>
  <link href="https://wenxixixi.cc/" rel="alternate"/>
  <link href="https://wenxixixi.cc/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, Wen xi</rights>
  <subtitle>Do your self</subtitle>
  <title>文汐的Blog</title>
  <updated>2026-07-12T06:23:29.528Z</updated>
  <entry>
    <author>
      <name>Wen xi</name>
    </author>
    <category term="项目" scheme="https://wenxixixi.cc/categories/%E9%A1%B9%E7%9B%AE/"/>
    <category term="建站" scheme="https://wenxixixi.cc/tags/%E5%BB%BA%E7%AB%99/"/>
    <category term="健身" scheme="https://wenxixixi.cc/tags/%E5%81%A5%E8%BA%AB/"/>
    <category term="数据可视化" scheme="https://wenxixixi.cc/tags/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96/"/>
    <content>
      <![CDATA[<p>从 3 月开始健身，到现在练了快五个月。每天用 Hermes 记录训练和饮食，<code>fitness_log.md</code> 已经攒了 50 多 KB。但纯文本翻起来太累——想看看上个月哪天练了腿、体重趋势怎么样、哪个部位练得最多，得一行行翻 markdown。</p><p>于是趁周末在博客上搭了个健身数据可视化面板。</p><h2 id="效果"><a href="#效果" class="headerlink" title="效果"></a>效果</h2><p>地址：<a href="https://wenxixixi.cc/fitness/">https://wenxixixi.cc/fitness/</a></p><p>四个 Tab：</p><ul><li><strong>日历</strong> — 月视图，有训练的日子标彩色圆点（红&#x3D;腿、蓝&#x3D;胸、绿&#x3D;背、黄&#x3D;肩），点日期弹出当天所有动作和饮食</li><li><strong>热力图</strong> — GitHub 贡献图风格，一眼看出训练频率</li><li><strong>体重趋势</strong> — 折线图，蓝色实线是实际体重，绿色虚线是目标体重</li><li><strong>统计</strong> — 训练部位分布饼图 + 每周训练天数柱状图</li></ul><p>最满意的功能是<strong>肌肉可视化</strong>：点开某天的详情，会显示人体正反面轮廓图，当天练到的肌肉自动变红，剩下保持灰色。比如练背日，背阔肌、大圆肌那块就红了。</p><h2 id="技术栈"><a href="#技术栈" class="headerlink" title="技术栈"></a>技术栈</h2><p>全套纯静态，零后端：</p><ul><li>数据：<code>fitness_log.md</code> 只读解析 → JSON</li><li>前端：Alpine.js + Chart.js + 手写日历&#x2F;热力图</li><li>部署：Nginx 直接托管，挂在博客域名下</li><li>更新：服务器 Hermes 每小时自动跑解析脚本同步</li></ul><p>总共不到 300 行 JS + 200 行 CSS，没有 npm 没有 webpack，加载飞快。</p><h2 id="踩坑"><a href="#踩坑" class="headerlink" title="踩坑"></a>踩坑</h2><p>最大的坑是数据格式不统一。五月的记录和七月的记录写法不一样，同一日期可能分成两个 block（一个纯饮食一个训练）。解析脚本改了好几版才稳定——加了容错逻辑、自动格式检测、同日 block 合并、新动作智能映射。</p><p>另一个坑是 Hexo 的 Markdown 渲染和 Alpine.js 的模板语法打架——<code>&lt;div x-show&gt;</code> 被当成代码块渲染出来。最后干脆把健身页做成独立 HTML，绕过 Hexo。</p><h2 id="后续"><a href="#后续" class="headerlink" title="后续"></a>后续</h2><p>想加的功能：手机下拉刷新、肌肉群训练频率热力图、小米健康数据接入。</p><p>不过现在的版本已经够用了——训练完打开看一眼日历，就知道这周练得怎么样、明天该练哪儿。</p>]]>
    </content>
    <id>https://wenxixixi.cc/2026/07/12/%E5%81%A5%E8%BA%AB%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96/</id>
    <link href="https://wenxixixi.cc/2026/07/12/%E5%81%A5%E8%BA%AB%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96/"/>
    <published>2026-07-11T16:00:00.000Z</published>
    <summary>
      <![CDATA[<p>从 3 月开始健身，到现在练了快五个月。每天用 Hermes 记录训练和饮食，<code>fitness_log.md</code> 已经攒了 50 多 KB。但纯文本翻起来太累——想看看上个月哪天练了腿、体重趋势怎么样、哪个部位练得最多，得一行行翻]]>
    </summary>
    <title>给自己的健身数据做了个可视化面板</title>
    <updated>2026-07-12T06:23:29.528Z</updated>
  </entry>
  <entry>
    <author>
      <name>Wen xi</name>
    </author>
    <category term="学习" scheme="https://wenxixixi.cc/tags/%E5%AD%A6%E4%B9%A0/"/>
    <category term="数字媒体" scheme="https://wenxixixi.cc/tags/%E6%95%B0%E5%AD%97%E5%AA%92%E4%BD%93/"/>
    <category term="设计" scheme="https://wenxixixi.cc/tags/%E8%AE%BE%E8%AE%A1/"/>
    <content>
      <![CDATA[<h2 id="写在前面"><a href="#写在前面" class="headerlink" title="写在前面"></a>写在前面</h2><p>学数字媒体技术这个专业快两年了，从一开始的懵懵懂懂到现在能自己做点东西，中间踩了不少坑，也收获了不少。这篇文章就随便聊聊这一路走来的一些感受和经验。</p><h2 id="大一：从零开始"><a href="#大一：从零开始" class="headerlink" title="大一：从零开始"></a>大一：从零开始</h2><p>刚进大学的时候，对”数字媒体技术”这个专业其实没什么概念。只知道大概和设计、视频、网页这些东西有关。</p><p>大一上学期主要是一些基础课：</p><ul><li><strong>素描和色彩</strong> —— 这是真正意义上的”从零开始”。以前从来没正经画过画，第一次拿着铅笔画石膏体的时候，完全不知道从哪下手。不过画了一个学期之后，至少对光影、透视有了基本的理解</li><li><strong>设计概论</strong> —— 了解了什么是设计，设计的基本原则，比如对比、对齐、重复、亲密性这些。现在回头看，这些原则在做网页设计的时候天天用</li><li><strong>计算机基础</strong> —— 虽然内容比较基础，但为后面学编程打了个底</li></ul><p>大一下学期开始接触一些专业软件：</p><ul><li><strong>Photoshop</strong> —— 第一次用 PS 的时候觉得好神奇，什么都能做。从最基础的图层、蒙版开始学，到后来能做一些简单的海报设计</li><li><strong>Premiere</strong> —— 视频剪辑，学会了基本的剪切、转场、加字幕。剪了几个小视频，虽然现在看很粗糙，但当时挺有成就感的</li></ul><h2 id="大二：开始写代码"><a href="#大二：开始写代码" class="headerlink" title="大二：开始写代码"></a>大二：开始写代码</h2><p>大二是一个分水岭，课程开始涉及编程了。</p><ul><li><strong>HTML&#x2F;CSS</strong> —— 这是我第一次接触代码。刚开始写 <code>&lt;div&gt;</code> <code>&lt;p&gt;</code> 这些标签的时候觉得很枯燥，但当第一个网页在浏览器里跑起来的时候，那种感觉很不一样</li><li><strong>JavaScript</strong> —— 比 HTML&#x2F;CSS 难多了。变量、函数、DOM 操作，每一个概念都花了不少时间去理解。不过学会了之后发现前端的世界一下子打开了</li><li><strong>网页设计</strong> —— 把 HTML&#x2F;CSS&#x2F;JS 综合起来做项目，开始理解什么叫”用户体验”、”响应式布局”</li></ul><p>写代码和做设计是很不一样的思维方式。设计更多是感性的、视觉驱动的，而代码是逻辑的、结构化的。一开始切换思维模式还挺不适应的，但后来发现这两者其实是互补的 —— 懂设计的程序员写出来的页面会好看很多，懂代码的设计师做出来的东西更可落地。</p><h2 id="自学：课堂之外"><a href="#自学：课堂之外" class="headerlink" title="自学：课堂之外"></a>自学：课堂之外</h2><p>课堂教的东西毕竟有限，很多实用技能都是自学的。</p><h3 id="GitHub"><a href="#GitHub" class="headerlink" title="GitHub"></a>GitHub</h3><p>学会用 GitHub 是一个转折点。一开始只是把代码传上去当备份，后来开始看别人的开源项目，学到了很多。现在自己也写了几个小工具开源在上面，有人用、有人给 Star 的感觉挺好的。</p><h3 id="AI-工具"><a href="#AI-工具" class="headerlink" title="AI 工具"></a>AI 工具</h3><p>这两年 AI 发展很快，我也开始尝试用 AI 来辅助学习和开发：</p><ul><li>写代码的时候用 AI 帮忙查 bug、解释代码</li><li>做设计的时候用 AI 生成参考图</li><li>写文档的时候用 AI 帮忙排版（doc-formatter 就是这么来的）</li></ul><p>AI 不是万能的，但用好了确实能提高不少效率。</p><h3 id="搭博客"><a href="#搭博客" class="headerlink" title="搭博客"></a>搭博客</h3><p>最近搭了这个 Hexo 博客，算是把前端、服务器部署这些技能串起来了。从买域名、配服务器、装 Nginx、写 Markdown 到最终上线，整个过程虽然踩了不少坑，但学到的东西比课堂上多。</p><h2 id="一些感悟"><a href="#一些感悟" class="headerlink" title="一些感悟"></a>一些感悟</h2><ol><li><strong>动手比看书重要</strong> —— 很东西看教程觉得会了，自己动手做的时候才发现问题一堆。多写、多练、多踩坑，才能真正掌握</li><li><strong>不要怕写得烂</strong> —— 不管是代码还是设计，第一版肯定是很烂的。重要的是不断迭代、不断改进</li><li><strong>找到自己的节奏</strong> —— 有人喜欢一上来就做大项目，有人喜欢从小练习开始。找到适合自己的学习方式最重要</li><li><strong>记录很重要</strong> —— 踩过的坑、学到的技巧，如果不记下来，过几天就忘了。这也是我搭这个博客的原因之一</li></ol><h2 id="接下来的计划"><a href="#接下来的计划" class="headerlink" title="接下来的计划"></a>接下来的计划</h2><ul><li>继续完善博客，多写技术文章</li><li>学学后端开发，了解一下数据库和 API</li><li>做一个完整的个人项目，把设计和开发能力都用上</li><li>找一份实习，看看实际工作中是什么样的</li></ul><p>数字媒体这个专业学的东西很杂，设计、编程、视频、3D 都要接触。一开始觉得什么都学不精，但慢慢发现这种”杂”其实是一种优势 —— 你既能做设计，又能写代码，在很多场景下是很吃香的。</p><p>共勉。</p>]]>
    </content>
    <id>https://wenxixixi.cc/2026/06/21/digital-media-learning/</id>
    <link href="https://wenxixixi.cc/2026/06/21/digital-media-learning/"/>
    <published>2026-06-21T02:00:00.000Z</published>
    <summary>
      <![CDATA[<h2 id="写在前面"><a href="#写在前面" class="headerlink"]]>
    </summary>
    <title>我的数字媒体学习之路</title>
    <updated>2026-06-22T06:14:13.302Z</updated>
  </entry>
  <entry>
    <author>
      <name>Wen xi</name>
    </author>
    <category term="Hexo" scheme="https://wenxixixi.cc/tags/Hexo/"/>
    <category term="建站" scheme="https://wenxixixi.cc/tags/%E5%BB%BA%E7%AB%99/"/>
    <category term="博客" scheme="https://wenxixixi.cc/tags/%E5%8D%9A%E5%AE%A2/"/>
    <content>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>一直想有个自己的博客，写点技术笔记、记录生活什么的。之前试过 WordPress，太重了，光是搭环境就要折腾半天。后来发现了 <strong>Hexo</strong> —— 一个基于 Node.js 的静态博客生成器，轻量、快速、部署简单，特别适合自己这种想快速上线的人。</p><p>这篇就记录一下从零搭建到上线的整个过程。</p><h2 id="为什么选-Hexo"><a href="#为什么选-Hexo" class="headerlink" title="为什么选 Hexo"></a>为什么选 Hexo</h2><p>选 Hexo 主要因为几个原因：</p><ul><li><strong>快</strong> —— 静态页面，生成后直接扔到服务器上，不需要数据库</li><li><strong>Markdown 写作</strong> —— 不用碰富文本编辑器，写起来舒服</li><li><strong>主题多</strong> —— 社区有大量好看的主题可以直接用</li><li><strong>免费托管</strong> —— 可以放 GitHub Pages，也可以自己部署到服务器</li></ul><p>对比了一下 Hugo、Jekyll，最后还是选了 Hexo，主要是中文社区大，遇到问题好查。</p><h2 id="搭建过程"><a href="#搭建过程" class="headerlink" title="搭建过程"></a>搭建过程</h2><h3 id="1-本地初始化"><a href="#1-本地初始化" class="headerlink" title="1. 本地初始化"></a>1. 本地初始化</h3><p>首先要装 Node.js，然后全局安装 Hexo CLI：</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 install -g hexo-cli</span><br><span class="line">hexo init myblog</span><br><span class="line"><span class="built_in">cd</span> myblog</span><br><span class="line">npm install</span><br></pre></td></tr></table></figure><p>这三步会在当前目录生成一个完整的博客骨架，<code>hexo server</code> 本地就能预览。</p><h3 id="2-选主题：Butterfly"><a href="#2-选主题：Butterfly" class="headerlink" title="2. 选主题：Butterfly"></a>2. 选主题：Butterfly</h3><p>Hexo 自带的主题是 landscape，说实话不太好看。换了好几个主题之后，最终选了 <strong>Butterfly</strong>。</p><p>Butterfly 的优点：</p><ul><li>设计简洁现代，符合我的审美</li><li>自带暗色模式切换</li><li>支持 Pjax 无刷新加载</li><li>文档详细，中文友好</li><li>侧边栏、标签云、归档等功能开箱即用</li></ul><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">git <span class="built_in">clone</span> -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly</span><br></pre></td></tr></table></figure><p>然后在 <code>_config.yml</code> 里把 theme 改成 butterfly 就行。</p><h3 id="3-基础配置"><a href="#3-基础配置" class="headerlink" title="3. 基础配置"></a>3. 基础配置</h3><p>Hexo 的配置文件主要有两个：</p><ul><li><code>_config.yml</code> —— 站点配置（标题、描述、URL 等）</li><li><code>_config.butterfly.yml</code> —— 主题配置（样式、功能、侧边栏等）</li></ul><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><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 站点配置</span></span><br><span class="line"><span class="attr">title:</span> <span class="string">文汐的Blog</span></span><br><span class="line"><span class="attr">subtitle:</span> <span class="string">&#x27;Do your self&#x27;</span></span><br><span class="line"><span class="attr">author:</span> <span class="string">Wen</span> <span class="string">xi</span></span><br><span class="line"><span class="attr">language:</span> <span class="string">zh-CN</span></span><br><span class="line"><span class="attr">url:</span> <span class="string">https://wenxixixi.cc</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 主题配置</span></span><br><span class="line"><span class="attr">theme:</span> <span class="string">butterfly</span></span><br></pre></td></tr></table></figure><p>头像、背景图、Favicon 这些都在主题配置里改，放到 <code>source/images/</code> 目录下就行。</p><h3 id="4-部署到服务器"><a href="#4-部署到服务器" class="headerlink" title="4. 部署到服务器"></a>4. 部署到服务器</h3><p>我用的是阿里云 ECS（Ubuntu），部署思路是：</p><ol><li>本地 <code>hexo generate</code> 生成静态文件</li><li>把 <code>public/</code> 目录同步到服务器</li><li>服务器上用 Nginx 做 Web 服务</li></ol><p>Nginx 配置很简单：</p><figure class="highlight nginx"><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><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">server</span> &#123;</span><br><span class="line">    <span class="attribute">listen</span> <span class="number">80</span>;</span><br><span class="line">    <span class="attribute">server_name</span> wenxixixi.cc;</span><br><span class="line">    <span class="attribute">root</span> /var/www/html;</span><br><span class="line">    <span class="attribute">index</span> index.html;</span><br><span class="line"></span><br><span class="line">    <span class="section">location</span> / &#123;</span><br><span class="line">        <span class="attribute">try_files</span> <span class="variable">$uri</span> <span class="variable">$uri</span>/ =<span class="number">404</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>域名是在阿里云注册的，DNS 解析指向服务器 IP 就行。HTTPS 用 Let’s Encrypt 免费证书，certbot 一键搞定。</p><h3 id="5-配置自动部署"><a href="#5-配置自动部署" class="headerlink" title="5. 配置自动部署"></a>5. 配置自动部署</h3><p>每次写完文章都要手动 generate + deploy 太麻烦了，所以我写了个简单的部署脚本：</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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"><span class="built_in">cd</span> /root/myblog</span><br><span class="line">hexo clean &amp;&amp; hexo generate</span><br><span class="line"><span class="built_in">cp</span> -r public/* /var/www/html/</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;Deploy done at <span class="subst">$(date)</span>&quot;</span></span><br></pre></td></tr></table></figure><p>配合 Hexo 的 deploy 配置，一条命令就能发布。</p><h2 id="写作流程"><a href="#写作流程" class="headerlink" title="写作流程"></a>写作流程</h2><p>现在我的博客写作流程是：</p><ol><li>本地 <code>hexo new &quot;文章标题&quot;</code> 创建新文章</li><li>用 Markdown 编辑器写内容</li><li><code>hexo server</code> 本地预览</li><li>确认没问题后部署上线</li></ol><p>整个过程很流畅，从写完到发布也就几分钟。</p><h2 id="遇到的一些坑"><a href="#遇到的一些坑" class="headerlink" title="遇到的一些坑"></a>遇到的一些坑</h2><ul><li><strong>中文标题的 URL 编码</strong> —— Hexo 默认会对中文标题做 URL 编码，生成的链接很长。可以通过 <code>pretty_urls</code> 配置优化，或者写文章时用英文文件名</li><li><strong>图片路径</strong> —— Markdown 里的图片路径要用 <code>/images/xxx</code>，不是相对路径，不然详情页会加载不出来</li><li><strong>主题更新</strong> —— Butterfly 主题用 git clone 安装的话，更新时要注意不要覆盖自己改过的配置。推荐用 <code>_config.butterfly.yml</code> 覆盖配置，这样更新主题不会丢设置</li></ul><h2 id="写在后面"><a href="#写在后面" class="headerlink" title="写在后面"></a>写在后面</h2><p>从零搭建一个博客其实没有想象中那么难。Hexo + Butterfly 这个组合对新手很友好，基本上半天就能跑起来一个还不错的博客。</p><p>接下来打算多写点东西，把这里当成自己的技术笔记和生活记录本。如果你也想搭一个自己的博客，Hexo 是个不错的起点。</p><blockquote><p>博客地址：<a href="https://wenxixixi.cc/">wenxixixi.cc</a></p></blockquote>]]>
    </content>
    <id>https://wenxixixi.cc/2026/06/20/hexo-setup-record/</id>
    <link href="https://wenxixixi.cc/2026/06/20/hexo-setup-record/"/>
    <published>2026-06-20T06:00:00.000Z</published>
    <summary>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>一直想有个自己的博客，写点技术笔记、记录生活什么的。之前试过 WordPress，太重了，光是搭环境就要折腾半天。后来发现了]]>
    </summary>
    <title>我的Hexo博客搭建记录</title>
    <updated>2026-06-22T06:13:40.589Z</updated>
  </entry>
  <entry>
    <author>
      <name>Wen xi</name>
    </author>
    <category term="Python" scheme="https://wenxixixi.cc/tags/Python/"/>
    <category term="AI" scheme="https://wenxixixi.cc/tags/AI/"/>
    <category term="开源项目" scheme="https://wenxixixi.cc/tags/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/"/>
    <category term="文档排版" scheme="https://wenxixixi.cc/tags/%E6%96%87%E6%A1%A3%E6%8E%92%E7%89%88/"/>
    <content>
      <![CDATA[<p>做毕设的时候最烦的事情之一，就是把写好的论文内容手动调格式——标题居中、正文首行缩进、行距1.5倍、页眉页脚……每次改完内容又要重新调一遍。</p><p>于是我做了一个小工具：<strong>doc-formatter</strong>，让 AI 帮你排版。</p><p><img src="/images/doc-formatter-homepage.png" alt="项目主页"></p><h2 id="它能做什么"><a href="#它能做什么" class="headerlink" title="它能做什么"></a>它能做什么</h2><p>简单来说：<strong>上传一个排好版的 Word 模板 + 上传你的数据文件 → AI 自动理解模板格式 → 输出排好版的成品</strong>。</p><p>支持 Word (.docx) 和 Excel (.xlsx) 两种格式。</p><p>举个例子：你有一个学校提供的论文模板，里面规定了一级标题居中15pt加粗、正文两端对齐12pt首行缩进0.85cm。你只需要把这个模板传上去，再传你的论文内容，AI 就会按照模板的格式规范帮你把所有段落排好。</p><h2 id="技术架构"><a href="#技术架构" class="headerlink" title="技术架构"></a>技术架构</h2><p><img src="/images/doc-formatter-arch.png" alt="项目架构图"></p><p>核心思路是用 <strong>AI Function Calling</strong> 来操作文档，而不是让 AI 生成 Python 代码再去执行。这样更可靠，也更安全。</p><p>工作流程只有 3 步：</p><ol><li><strong>read_file</strong> — 读取文件，自动创建 Document 副本，提取模板页眉</li><li><strong>batch_set_paragraph_format</strong> — 一次调用提交所有段落格式操作</li><li><strong>finalize</strong> — 自动设置页眉页脚 + 验证文件</li></ol><p>相比之前让 AI 生成代码再执行的方案，步骤从 5+ 步减少到 3 步，而且不再有代码执行的安全风险。</p><h2 id="项目结构"><a href="#项目结构" class="headerlink" title="项目结构"></a>项目结构</h2><figure class="highlight plaintext"><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">doc-formatter/</span><br><span class="line">├── app.py              # Flask Web 应用入口</span><br><span class="line">├── core/</span><br><span class="line">│   ├── agent.py        # Function Calling 调用循环</span><br><span class="line">│   ├── tools.py        # 11 个结构化工具</span><br><span class="line">│   ├── session.py      # 会话管理 + Document 缓存</span><br><span class="line">│   └── post_processor.py  # 格式验证</span><br><span class="line">├── frontend/           # 前端界面</span><br><span class="line">├── prompts/            # AI 系统提示词</span><br><span class="line">├── skills/</span><br><span class="line">│   └── docx_formatting/</span><br><span class="line">│       └── SKILL.md    # 排版规范知识文档</span><br><span class="line">├── static/             # 静态资源</span><br><span class="line">└── test_cases/         # 测试用例</span><br></pre></td></tr></table></figure><h2 id="做了哪些改进"><a href="#做了哪些改进" class="headerlink" title="做了哪些改进"></a>做了哪些改进</h2><p>项目经历过一次大重构，主要改进：</p><table><thead><tr><th>改进项</th><th>改造前</th><th>改造后</th></tr></thead><tbody><tr><td>一级标题对齐</td><td>两端对齐</td><td>居中 15pt 加粗</td></tr><tr><td>正文首行缩进</td><td>无</td><td>0.85cm</td></tr><tr><td>页眉页脚</td><td>无</td><td>自动从模板提取</td></tr><tr><td>格式化段落数</td><td>0&#x2F;73</td><td>63&#x2F;63</td></tr><tr><td>工作流程</td><td>5+ 步</td><td>3 步</td></tr><tr><td>模板格式识别</td><td>无法获取</td><td>自动分析</td></tr></tbody></table><p>还加了 Markdown 语法清理——数据文件里的 <code>#</code>、<code>**</code> 等标记会干扰 AI 判断段落类型，现在会自动清理掉。</p><h2 id="怎么用"><a href="#怎么用" class="headerlink" title="怎么用"></a>怎么用</h2><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><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><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> https://github.com/wenxixixi-miao/doc-formatter.git</span><br><span class="line"><span class="built_in">cd</span> doc-formatter</span><br><span class="line">python3 -m venv venv</span><br><span class="line"><span class="built_in">source</span> venv/bin/activate</span><br><span class="line">pip install -r requirements.txt</span><br><span class="line"></span><br><span class="line"><span class="built_in">export</span> AI_API_BASE=<span class="string">&quot;https://api.openai.com/v1&quot;</span></span><br><span class="line"><span class="built_in">export</span> AI_API_KEY=sk-xxx</span><br><span class="line"><span class="built_in">export</span> AI_MODEL=gpt-4o-mini</span><br><span class="line"></span><br><span class="line">python app.py</span><br></pre></td></tr></table></figure><p>浏览器打开 <code>http://localhost:5000</code> 就能用了。</p><h2 id="写在后面"><a href="#写在后面" class="headerlink" title="写在后面"></a>写在后面</h2><p>这个工具的初衷就是解决毕设排版的痛点。目前支持 5 种文档类型：中文论文、商业报告、技术文档、课程教案、通用文档。AI 会根据内容自动判断类型，选择对应的格式规范。</p><p>项目刚起步，还有很多可以优化的地方——比如支持 PDF、支持批量处理多个文档、支持更复杂的模板分析等。</p><p>GitHub 地址：<a href="https://github.com/wenxixixi-miao/doc-formatter">wenxixixi-miao&#x2F;doc-formatter</a></p><p>欢迎试用和反馈 🙌</p>]]>
    </content>
    <id>https://wenxixixi.cc/2026/06/17/doc-formatter-%E6%99%BA%E8%83%BD%E6%96%87%E6%A1%A3%E6%8E%92%E7%89%88%E5%8A%A9%E6%89%8B/</id>
    <link href="https://wenxixixi.cc/2026/06/17/doc-formatter-%E6%99%BA%E8%83%BD%E6%96%87%E6%A1%A3%E6%8E%92%E7%89%88%E5%8A%A9%E6%89%8B/"/>
    <published>2026-06-17T03:30:00.000Z</published>
    <summary>
      <![CDATA[<p>做毕设的时候最烦的事情之一，就是把写好的论文内容手动调格式——标题居中、正文首行缩进、行距1.5倍、页眉页脚……每次改完内容又要重新调一遍。</p>
<p>于是我做了一个小工具：<strong>doc-formatter</strong>，让 AI]]>
    </summary>
    <title>doc-formatter：智能文档排版助手</title>
    <updated>2026-06-17T03:44:19.229Z</updated>
  </entry>
  <entry>
    <author>
      <name>Wen xi</name>
    </author>
    <content>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>最近折腾了一个小工具，解决了我长期以来的一个痛点——<strong>Telegram 频道资源自动转存到夸克网盘</strong>。</p><p>很多人喜欢在 Telegram 上关注各种资源分享频道，但 Telegram 本身不提供网盘转存功能，每次看到想要的资源都要手动复制链接、打开夸克、粘贴、转存，非常麻烦。于是我写了这个 <strong>telegram-quark-monitor</strong> 程序，实现全自动监听 + 转存。</p><p>项目已开源在 GitHub：<a href="https://github.com/wenxixixi-miao/telegram-quark-monitor">wenxixixi-miao&#x2F;telegram-quark-monitor</a></p><hr><h2 id="它能做什么"><a href="#它能做什么" class="headerlink" title="它能做什么"></a>它能做什么</h2><p>简单来说，这个程序会：</p><ol><li><p><strong>实时监听</strong>你关注的 Telegram 频道新消息</p></li><li><p><strong>自动识别</strong>消息中的夸克网盘链接（<code>pan.quark.cn/s/xxx</code>）</p></li><li><p><strong>按关键字过滤</strong>，只转存你感兴趣的资源（比如”斗破苍穹”、”完美世界”）</p></li><li><p><strong>自动转存</strong>到你指定的夸克网盘目录</p></li><li><p><strong>智能去重</strong>，同一个资源 N 天内不会重复转存</p></li></ol><hr><h2 id="功能亮点"><a href="#功能亮点" class="headerlink" title="功能亮点"></a>功能亮点</h2><ul><li><p>📡 <strong>实时监听</strong> - Telegram 频道新消息秒级响应</p></li><li><p>🔑 <strong>关键字过滤</strong> - 只转存匹配的资源，不浪费空间</p></li><li><p>🔗 <strong>自动提取链接</strong> - 智能识别夸克网盘分享链接</p></li><li><p>⏭️ <strong>同名去重</strong> - 同一关键字 5 天内已转存过则跳过</p></li><li><p>🔧 <strong>后缀修正</strong> - 大文件自动重命名为 .mp4</p></li><li><p>🔍 <strong>历史搜索</strong> - 支持搜索频道历史消息</p></li><li><p>📢 <strong>通知推送</strong> - 转存结果可推送通知（对接 Hermes Agent）</p></li><li><p>🛡️ <strong>失败重试</strong> - 转存失败的消息不会标记为已处理</p></li></ul><hr><h2 id="快速上手"><a href="#快速上手" class="headerlink" title="快速上手"></a>快速上手</h2><h3 id="1-安装"><a href="#1-安装" class="headerlink" title="1. 安装"></a>1. 安装</h3><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><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">git <span class="built_in">clone</span> https://github.com/wenxixixi-miao/telegram-quark-monitor.git</span><br><span class="line"></span><br><span class="line"><span class="built_in">cd</span> telegram-quark-monitor</span><br><span class="line"></span><br><span class="line">pip install telethon</span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="2-配置"><a href="#2-配置" class="headerlink" title="2. 配置"></a>2. 配置</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><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="built_in">cp</span> monitor_config.example.json monitor_config.json</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>配置文件长这样：</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><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“api_id”: 你的Telegram_API_ID,</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“api_hash”: “你的Telegram_API_HASH”,</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“phone”: “+86你的手机号”,</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“channels”: [“Quark_Movies”],</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“save_path”: “&#x2F;自动转存”,</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“keywords”: [“斗破苍穹”, “完美世界”],</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“dedup_days”: 5</p><figure class="highlight plaintext"><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><br><span class="line"></span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="3-获取-Telegram-API-凭据"><a href="#3-获取-Telegram-API-凭据" class="headerlink" title="3. 获取 Telegram API 凭据"></a>3. 获取 Telegram API 凭据</h3><ol><li><p>访问 <a href="https://my.telegram.org/">https://my.telegram.org</a></p></li><li><p>登录你的 Telegram 账号</p></li><li><p>进入 “API development tools”</p></li><li><p>创建应用，获取 <code>api_id</code> 和 <code>api_hash</code></p></li></ol><h3 id="4-运行"><a href="#4-运行" class="headerlink" title="4. 运行"></a>4. 运行</h3><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"></span><br><span class="line">python telegram_monitor.py</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>首次运行需要输入 Telegram 验证码，之后 session 会自动保存，下次启动无需重复验证。</p><hr><h2 id="核心代码解析"><a href="#核心代码解析" class="headerlink" title="核心代码解析"></a>核心代码解析</h2><p>整个项目的核心其实不复杂，主要分几个模块：</p><h3 id="配置加载"><a href="#配置加载" class="headerlink" title="配置加载"></a>配置加载</h3><figure class="highlight python"><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><br><span class="line"><span class="keyword">def</span> <span class="title function_">load_config</span>():</span><br><span class="line"></span><br></pre></td></tr></table></figure><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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>if not os.path.exists(CONFIG_FILE):</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>print(f”❌ 配置文件不存在: {CONFIG_FILE}”)</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>sys.exit(1)</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>with open(CONFIG_FILE, “r”, encoding&#x3D;”utf-8”) as f:</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>return json.load(f)</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="夸克链接提取"><a href="#夸克链接提取" class="headerlink" title="夸克链接提取"></a>夸克链接提取</h3><p>用正则表达式匹配所有夸克网盘链接：</p><figure class="highlight python"><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><br><span class="line">QUARK_URL_PATTERN = re.<span class="built_in">compile</span>(<span class="string">r&#x27;https?://pan\.quark\.cn/s/[a-zA-Z0-9]+&#x27;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="关键字去重"><a href="#关键字去重" class="headerlink" title="关键字去重"></a>关键字去重</h3><p>防止同一个资源短时间内重复转存：</p><figure class="highlight python"><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><br><span class="line"><span class="keyword">def</span> <span class="title function_">is_keyword_dedup</span>(<span class="params">keyword, dedup_days=<span class="number">5</span></span>):</span><br><span class="line"></span><br></pre></td></tr></table></figure><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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><h1 id="读取-keyword-dedup-json，比较时间戳"><a href="#读取-keyword-dedup-json，比较时间戳" class="headerlink" title="读取 keyword_dedup.json，比较时间戳"></a>读取 keyword_dedup.json，比较时间戳</h1><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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="通知系统"><a href="#通知系统" class="headerlink" title="通知系统"></a>通知系统</h3><p>转存结果写入队列，可对接外部推送：</p><figure class="highlight python"><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><br><span class="line"><span class="keyword">def</span> <span class="title function_">push_notify</span>(<span class="params">title, detail=<span class="string">&quot;&quot;</span></span>):</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“””将通知写入 notify_queue.json”””</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>notifications.append({</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“time”: datetime.now().strftime(“%m-%d %H:%M”),</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“title”: title,</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“detail”: detail,</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>“sent”: False,</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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><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"></span><br><span class="line"></span><br></pre></td></tr></table></figure><hr><h2 id="对接-Hermes-Agent"><a href="#对接-Hermes-Agent" class="headerlink" title="对接 Hermes Agent"></a>对接 Hermes Agent</h2><p>这个程序还支持和我的 <strong>Hermes Agent</strong> 联动。通过 <code>check_notify.py</code> 脚本，可以定时检查转存结果并推送到微信或 Telegram：</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><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="comment"># Hermes cron 配置</span></span><br><span class="line"></span><br><span class="line"><span class="bullet">-</span> <span class="attr">name:</span> <span class="string">quark-monitor-notify</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">schedule:</span> <span class="string">&quot;every 2m&quot;</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">script:</span> <span class="string">check_notify.py</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">no_agent:</span> <span class="literal">true</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>这样每当有新资源转存成功，Hermes Agent 会自动把结果推送给我，非常方便。</p><hr><h2 id="文件说明"><a href="#文件说明" class="headerlink" title="文件说明"></a>文件说明</h2><p>| 文件 | 说明 |</p><p>|——|——|</p><p>| <code>telegram_monitor.py</code> | 主监听脚本 |</p><p>| <code>monitor_config.json</code> | 配置文件（不提交到 git） |</p><p>| <code>quark_monitor.session</code> | Telegram 登录 session |</p><p>| <code>processed_messages.json</code> | 已处理消息记录 |</p><p>| <code>keyword_dedup.json</code> | 关键字去重时间戳 |</p><p>| <code>notify_queue.json</code> | 通知队列 |</p><p>| <code>monitor.log</code> | 运行日志 |</p><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>这个小工具虽然代码量不大，但解决了一个实际问题。现在我只需要配置好关键字，程序就会 24 小时自动帮我监听 Telegram 频道，看到匹配的资源就自动转存到夸克网盘，省去了大量手动操作的时间。</p><p>如果你也有类似的需求，欢迎去 GitHub 点个 Star 或者提 Issue。</p><blockquote><p>项目地址：<a href="https://github.com/wenxixixi-miao/telegram-quark-monitor">https://github.com/wenxixixi-miao/telegram-quark-monitor</a></p></blockquote><blockquote><p>基于 <a href="https://github.com/Cp0204/quark-auto-save">Cp0204&#x2F;quark-auto-save</a> 扩展开发，原项目协议 AGPL-3.0，本项目 MIT。</p></blockquote>]]>
    </content>
    <id>https://wenxixixi.cc/2026/06/15/Telegram%E9%A2%91%E9%81%93%E7%9B%91%E5%90%AC-%E2%86%92-%E5%A4%B8%E5%85%8B%E7%BD%91%E7%9B%98%E8%87%AA%E5%8A%A8%E8%BD%AC%E5%AD%98%EF%BC%8C%E6%88%91%E7%9A%84quark%E7%9B%91%E5%90%AC%E7%A8%8B%E5%BA%8F/</id>
    <link href="https://wenxixixi.cc/2026/06/15/Telegram%E9%A2%91%E9%81%93%E7%9B%91%E5%90%AC-%E2%86%92-%E5%A4%B8%E5%85%8B%E7%BD%91%E7%9B%98%E8%87%AA%E5%8A%A8%E8%BD%AC%E5%AD%98%EF%BC%8C%E6%88%91%E7%9A%84quark%E7%9B%91%E5%90%AC%E7%A8%8B%E5%BA%8F/"/>
    <published>2026-06-14T17:08:08.000Z</published>
    <summary>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>最近折腾了一个小工具，解决了我长期以来的一个痛点——<strong>Telegram]]>
    </summary>
    <title>Telegram频道监听 → 夸克网盘自动转存，我的quark监听程序</title>
    <updated>2026-06-15T01:08:08.112Z</updated>
  </entry>
  <entry>
    <author>
      <name>Wen xi</name>
    </author>
    <content>
      <![CDATA[<p>平原是北方人的海</p><p>第一次见到一望无垠的平原，像回到了第一次见到海的那种感觉</p><p>对比老家的一眼望去即是山和水，反差极大</p><p><img src="/images/img_69ffd7202c91.jpg" alt="从高处俯瞰平原"></p><p><img src="/images/img_20cf33ef5682.jpg" alt="烟雨朦胧的湖面"></p>]]>
    </content>
    <id>https://wenxixixi.cc/2026/05/18/%E4%BA%94%E4%B8%80%E5%8E%BB%E4%BA%86%E4%B8%80%E8%B6%9F%E6%B2%B3%E5%8D%97/</id>
    <link href="https://wenxixixi.cc/2026/05/18/%E4%BA%94%E4%B8%80%E5%8E%BB%E4%BA%86%E4%B8%80%E8%B6%9F%E6%B2%B3%E5%8D%97/"/>
    <published>2026-05-18T01:22:01.000Z</published>
    <summary>
      <![CDATA[<p>平原是北方人的海</p>
<p>第一次见到一望无垠的平原，像回到了第一次见到海的那种感觉</p>
<p>对比老家的一眼望去即是山和水，反差极大</p>
<p><img src="/images/img_69ffd7202c91.jpg"]]>
    </summary>
    <title>五一去了一趟河南</title>
    <updated>2026-06-17T03:15:43.334Z</updated>
  </entry>
</feed>
