<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on zhouyang — The 25th Frame</title><link>https://zhouyang.dev/posts/</link><description>Recent content in Posts on zhouyang — The 25th Frame</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 22 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://zhouyang.dev/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Hermes Agent 深度指南 06：实战——搭建你的第一个 AI 工作流</title><link>https://zhouyang.dev/posts/hermes-agent-workflow/</link><pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/hermes-agent-workflow/</guid><description>&lt;p&gt;这是 Hermes Agent 深度指南系列的第六篇，也是最后一篇。前五篇分别是&lt;a href="https://zhouyang.dev/posts/hermes-agent-guide/"&gt;入门指南&lt;/a&gt;、&lt;a href="https://zhouyang.dev/posts/hermes-agent-config/"&gt;配置详解&lt;/a&gt;、&lt;a href="https://zhouyang.dev/posts/hermes-agent-skills/"&gt;Skills 系统&lt;/a&gt;、&lt;a href="https://zhouyang.dev/posts/hermes-agent-cron/"&gt;Cron 定时任务&lt;/a&gt;和&lt;a href="https://zhouyang.dev/posts/hermes-agent-gateway/"&gt;多平台集成&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;前五篇把 Hermes 的每个组件都拆开讲透了。但这就像你学会了发动机、变速箱、悬挂系统各自怎么工作——你还是不知道&lt;strong&gt;怎么把车造出来&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这篇就是把零件拼成整车的过程。我们从头搭建一个完整可用的 AI 工作流：&lt;strong&gt;每日 AI 资讯摘要&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="为什么选这个场景"&gt;为什么选这个场景&lt;/h2&gt;
&lt;p&gt;不是随便挑的。这个场景恰好需要用到 Hermes 全部核心能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Skills&lt;/strong&gt;：定义摘要格式、信息源、筛选标准&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cron&lt;/strong&gt;：每天早上 8 点自动触发&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多模型切换&lt;/strong&gt;：搜索用便宜模型，摘要用强模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gateway&lt;/strong&gt;：结果推送到 Telegram 和飞书&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而且这个场景&lt;strong&gt;真的有用&lt;/strong&gt;。我跑了三周，每天早上一杯咖啡的时间就能看完 AI 圈 24 小时内最重要的事，不用自己刷 Twitter、HN、Reddit、ArXiv。省下来的时间比我写这套东西花的时间多得多。&lt;/p&gt;
&lt;h2 id="整体架构"&gt;整体架构&lt;/h2&gt;
&lt;p&gt;先看全貌，知道每个组件在什么位置：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://zhouyang.dev/images/hermes-workflow-architecture.png" alt="Hermes 工作流架构图"&gt;&lt;/p&gt;
&lt;p&gt;六个环节，环环相扣。下面逐个搭建。&lt;/p&gt;
&lt;h2 id="第一步创建-ai-digest-skill"&gt;第一步：创建 AI Digest Skill&lt;/h2&gt;
&lt;p&gt;Skill 是整个工作流的灵魂。它定义了 Hermes 要怎么搜、怎么筛、怎么写。&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;~/.hermes/skills/&lt;/code&gt; 下创建 &lt;code&gt;ai-daily-digest.md&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# AI Daily Digest
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;生成每日 AI 领域重要资讯摘要。按固定格式输出中文摘要，
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;每条包含标题、一句话要点、原文链接。
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## 信息源（按优先级）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;1.&lt;/span&gt; Hacker News (news.ycombinator.com) — AI/ML 相关热帖
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;2.&lt;/span&gt; Reddit r/MachineLearning — 当日热门讨论
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;3.&lt;/span&gt; GitHub Trending — AI 相关仓库
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;4.&lt;/span&gt; ArXiv — cs.AI / cs.CL 当天新论文（选 3 篇最有价值的）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## 筛选标准
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; 只收录 24 小时内的内容
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; 优先选择有实质讨论的（HN 评论 &amp;gt; 50，Reddit 点赞 &amp;gt; 100）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; 论文只选有代码开源或方法有突破性的
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; 略过纯营销文、币圈、NFT 相关内容
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## 输出格式
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;\`\`\`
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;📡 AI 每日速递 — 2026年X月X日
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;━━━━━━━━━━━━━━━━━━
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;🔥 头条
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;━━━━━━━━━━━━━━━━━━
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;1.&lt;/span&gt; 【标题】
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 要点：一句话总结
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 🔗 链接
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;━━━━━━━━━━━━━━━━━━
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;📋 必读
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;━━━━━━━━━━━━━━━━━━
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;（3-5 条精选，格式同上）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;━━━━━━━━━━━━━━━━━━
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;📄 论文速览
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;━━━━━━━━━━━━━━━━━━
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;（1-3 篇，包含论文标题 + 核心贡献一句话）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;━━━━━━━━━━━━━━━━━━
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;🛠 工具 &amp;amp; 开源
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;━━━━━━━━━━━━━━━━━━
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;（1-3 个值得关注的仓库）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;\`\`\`
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## 执行流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;1.&lt;/span&gt; 依次访问 4 个信息源，使用 web_search 工具搜索
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;2.&lt;/span&gt; 按筛选标准过滤，保留 8-15 条候选
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;3.&lt;/span&gt; 按重要程度排序，选出头条 1 条 + 必读 3-5 条
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;4.&lt;/span&gt; 搜索论文和工具仓库
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;5.&lt;/span&gt; 按输出格式生成完整摘要
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;6.&lt;/span&gt; 保存到 ~/digests/YYYY-MM-DD.md
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;7.&lt;/span&gt; 将摘要文本返回（Gateway 会负责推送到各平台）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## 质量要求
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; 每条要点必须是自己读过内容后总结的，禁止直接翻译标题
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; 中文流畅自然，避免机翻腔
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; 如果当天没有够格的内容，宁可少写不要凑数
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个 Skill 大约 300 行。因为 Hermes 采用渐进式加载，平时只占 ~100 token 的名字和简介，只有每天 8 点真正跑的时候才展开全部内容。&lt;/p&gt;</description></item><item><title>Hermes Agent 深度指南 05：多平台集成——飞书/Telegram/Discord</title><link>https://zhouyang.dev/posts/hermes-agent-gateway/</link><pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/hermes-agent-gateway/</guid><description>&lt;p&gt;这是 Hermes Agent 深度指南系列的第五篇。前四篇分别是&lt;a href="https://zhouyang.dev/posts/hermes-agent-guide/"&gt;入门指南&lt;/a&gt;、&lt;a href="https://zhouyang.dev/posts/hermes-agent-config/"&gt;配置详解&lt;/a&gt;、&lt;a href="https://zhouyang.dev/posts/hermes-agent-skills/"&gt;Skills 系统&lt;/a&gt;和 &lt;a href="https://zhouyang.dev/posts/hermes-agent-cron/"&gt;Cron 定时任务&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;上一篇文章讲了 Cron——Hermes 到点自动干活，但干完活的结果得让你收到。你不可能天天盯着终端看吧？你得在手机上、飞书上、Telegram 上收到消息。这就是今天要解决的问题：&lt;strong&gt;多平台集成&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="为什么需要多平台"&gt;为什么需要多平台&lt;/h2&gt;
&lt;p&gt;先说说真实场景。我自己是这样用的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;飞书&lt;/strong&gt;：工作相关。代码审查结果、服务器告警、每日 AI 资讯，这些跟团队有关的东西走飞书群聊。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Telegram&lt;/strong&gt;：个人助理。博客部署通知、RSS 摘要、临时让 AI 搜个东西，走 Telegram Bot——轻量、手机通知即时。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Discord&lt;/strong&gt;：社区互动。偶尔在 Discord 群里接一些朋友的问题，让 Hermes 帮忙回。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;三个平台，三种场景，一个 Hermes 实例。不是三个实例，不是一个平台配一次——&lt;strong&gt;一个实例接入所有平台，按规则智能分发&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="gateway-架构"&gt;Gateway 架构&lt;/h2&gt;
&lt;p&gt;先搞清楚 Hermes Gateway 是怎么工作的：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://zhouyang.dev/images/hermes-gateway-architecture.png" alt="Hermes Gateway 多平台架构图"&gt;&lt;/p&gt;
&lt;p&gt;Gateway 是一个独立的进程，它做的事很简单：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;接收消息&lt;/strong&gt;：监听各平台的 webhook 或长连接&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标准化&lt;/strong&gt;：把飞书的富文本、Telegram 的 Markdown、Discord 的 Embed 统一转成内部格式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路由判断&lt;/strong&gt;：看这条消息来自哪、内容是什么、发消息的人是谁，决定交给哪个 Agent 处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;返回结果&lt;/strong&gt;：把 Agent 的回复转回对应平台的格式，发回去&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;关键设计：&lt;strong&gt;Gateway 和 Agent 是解耦的&lt;/strong&gt;。Gateway 挂了不影响 Agent 推理，Agent 推理慢不影响 Gateway 收消息。两者通过内部 API 通信。&lt;/p&gt;
&lt;h2 id="接入飞书"&gt;接入飞书&lt;/h2&gt;
&lt;p&gt;飞书的接入相对复杂，因为涉及应用创建和权限审批。但好处是飞书的富文本能力最强，卡片消息、按钮交互都能搞。&lt;/p&gt;
&lt;h3 id="step-1创建飞书应用"&gt;Step 1：创建飞书应用&lt;/h3&gt;
&lt;p&gt;先去 &lt;a href="https://open.feishu.cn"&gt;飞书开放平台&lt;/a&gt; 创建一个企业自建应用：&lt;/p&gt;</description></item><item><title>Hermes Agent 深度指南 04：Cron 定时任务 — 让 AI 替你值班</title><link>https://zhouyang.dev/posts/hermes-agent-cron/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/hermes-agent-cron/</guid><description>&lt;p&gt;这是 Hermes Agent 深度指南系列的第四篇。前三篇分别是&lt;a href="https://zhouyang.dev/posts/hermes-agent-guide/"&gt;入门指南&lt;/a&gt;、&lt;a href="https://zhouyang.dev/posts/hermes-agent-config/"&gt;配置详解&lt;/a&gt;和 &lt;a href="https://zhouyang.dev/posts/hermes-agent-skills/"&gt;Skills 系统&lt;/a&gt;。如果你还没看过，建议先过一遍——本文会大量用到 Skills 和 toolsets 的概念。&lt;/p&gt;
&lt;p&gt;前几篇聊的都是「你跟 Hermes 对话时它能干什么」。但有个场景一直没展开：&lt;strong&gt;你不在电脑前的时候，Hermes 能不能自己干活？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;答案是能。而且不需要你写 cron 脚本、配 systemd timer、搭 CI pipeline。你只需要用自然语言告诉 Hermes「每天这个时候帮我做这件事」，它到点就自己跑。&lt;/p&gt;
&lt;h2 id="为什么不用传统-cron"&gt;为什么不用传统 cron&lt;/h2&gt;
&lt;p&gt;传统 cron 能干的事有限：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 传统 cron：能跑脚本、发 curl、写文件——但没法「思考」&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;8&lt;/span&gt; * * * /usr/bin/python3 /opt/scripts/daily_report.py
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt; * * * curl -X POST -d &lt;span style="color:#e6db74"&gt;&amp;#39;{}&amp;#39;&lt;/span&gt; https://api.example.com/daily
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;问题是：你写的脚本逻辑是固定的。数据源变了？格式换了？中间步骤出错了？脚本只会在那儿 crash，不会自己想办法绕过去。&lt;/p&gt;
&lt;p&gt;Hermes Cron 不一样。你给的不是一段固定脚本，而是一个&lt;strong&gt;任务描述&lt;/strong&gt;。Agent 在执行时会：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先理解任务意图&lt;/li&gt;
&lt;li&gt;根据当前情况决定用什么工具&lt;/li&gt;
&lt;li&gt;出错时自动调整策略&lt;/li&gt;
&lt;li&gt;完成后把结果推送到你指定的地方&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;换句话说：传统 cron 跑的是代码，Hermes Cron 跑的是&lt;strong&gt;判断力&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://zhouyang.dev/images/hermes-cron-workflow.png" alt="Hermes Cron 定时任务工作流：从定义到执行到通知的完整链路"&gt;&lt;/p&gt;
&lt;h2 id="创建第一个-cron-任务"&gt;创建第一个 cron 任务&lt;/h2&gt;
&lt;p&gt;Hermes 的 cron 管理有两种方式：CLI 命令和配置文件。&lt;/p&gt;</description></item><item><title>Hermes Agent 深度指南 02：配置详解 — 模型选择、providers 与 toolsets</title><link>https://zhouyang.dev/posts/hermes-agent-config/</link><pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/hermes-agent-config/</guid><description>&lt;p&gt;这是 Hermes Agent 深度指南系列的第二篇。如果你还没看过第一篇，先去&lt;a href="https://zhouyang.dev/posts/hermes-agent-guide/"&gt;入门指南&lt;/a&gt;把 Hermes 装上跑起来，本文默认你已经有了一个能用的 Hermes 实例。&lt;/p&gt;
&lt;p&gt;上一篇我们讲了安装和基础用法——一行 curl 装好，进交互模式聊两句就上手了。但这只是 Hermes 的「默认皮肤」。真正让它变成你得力助手的，是配置系统。&lt;/p&gt;
&lt;p&gt;Hermes 的核心优势之一是&lt;strong&gt;不绑定任何模型厂商&lt;/strong&gt;。OpenRouter、Anthropic、DeepSeek、OpenAI、Google Gemini……20+ 提供商随便换，而且可以混搭——干活用一个模型，复查用另一个模型，甚至一个任务里跑一半切模型。&lt;/p&gt;
&lt;p&gt;今天咱们把 providers、模型选择、toolsets 三个核心配置项拆开讲透。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://zhouyang.dev/images/hermes-architecture.png" alt="Hermes Agent 整体架构：用户层 → 消息路由 → 模型层"&gt;&lt;/p&gt;
&lt;h2 id="配置文件在哪"&gt;配置文件在哪&lt;/h2&gt;
&lt;p&gt;Hermes 的配置分布在两个文件：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;~/.hermes/config.yaml # 主配置：模型、工具集、人格、安全策略等
~/.hermes/.env # 密钥（API Key、Token），单独存放防止泄露
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;直接编辑也行，但 Hermes 提供了更安全的方式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 查看当前配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes config
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 用编辑器打开 config.yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes config edit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 逐项设置（推荐，不会搞乱缩进）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes config set model.default &lt;span style="color:#e6db74"&gt;&amp;#34;anthropic/claude-sonnet-4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes config set agent.max_turns &lt;span style="color:#ae81ff"&gt;90&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 管理密钥（更安全，会做本地加密）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes auth
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;先说最重要的 providers。&lt;/p&gt;
&lt;h2 id="providers20-模型提供商怎么选"&gt;Providers：20+ 模型提供商怎么选&lt;/h2&gt;
&lt;p&gt;Hermes 支持的 providers 可以分三类：&lt;/p&gt;</description></item><item><title>Hermes Agent 深度指南 03：Skills 系统 — 打造可复用能力</title><link>https://zhouyang.dev/posts/hermes-agent-skills/</link><pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/hermes-agent-skills/</guid><description>&lt;p&gt;这是 Hermes Agent 深度指南系列的第三篇。前两篇分别是&lt;a href="https://zhouyang.dev/posts/hermes-agent-guide/"&gt;入门指南&lt;/a&gt;和&lt;a href="https://zhouyang.dev/posts/hermes-agent-config/"&gt;配置详解&lt;/a&gt;——建议先看完那两篇再回来看这篇，因为本文默认你已经有跑起来的 Hermes 了。&lt;/p&gt;
&lt;p&gt;前两篇聊了安装和配置。但有一个问题我一直没回答：&lt;strong&gt;你教会 Hermes 的东西，下次还能用吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;大部分 AI 助手是金鱼——每次对话结束就清零了。你费劲调好的工作流，下次得从头教。但 Hermes 的设计思路不一样：它有一个 Skills 系统，让你把「怎么干活」写成标准化文档，下次自动加载。&lt;/p&gt;
&lt;p&gt;换句话说，Skills 就是 Hermes 的 SOP。&lt;/p&gt;
&lt;h2 id="skills-是什么"&gt;Skills 是什么&lt;/h2&gt;
&lt;p&gt;简单说：&lt;strong&gt;一个 Skill 就是一个 Markdown 文件&lt;/strong&gt;，放在 &lt;code&gt;~/.hermes/skills/&lt;/code&gt; 下面，里面写清楚「什么场景下用」「怎么一步步做」「常见的坑在哪」。Hermes 每次回答之前，会自动扫一遍 Skill 列表，遇到匹配的场景就把对应 Skill 的内容注入到上下文中。&lt;/p&gt;
&lt;p&gt;三个关键特性：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;渐进式加载&lt;/strong&gt;（progressive disclosure）。Hermes 不会一股脑把所有 Skill 全塞进 prompt。先只加载名字和简介（约 3K token），只有真正轮到用时才展开完整内容。这解决了「技能越多速度越慢」的问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent 可以自己创建 Skill&lt;/strong&gt;。做完一个复杂任务后，如果 Hermes 觉得「这个工作流值得保存」，它自己会产生一个 Skill。你有审批权。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skill Hub&lt;/strong&gt;。内置 + 社区共享，几十个现成 Skill 可以直接装。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="看一眼-skill-长什么样"&gt;看一眼 Skill 长什么样&lt;/h2&gt;
&lt;p&gt;随便看两个实际例子。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;系统级 Skill：《systematic-debugging》&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个 Skill 定义了四阶段调试法——根因分析→模式比对→假设验证→实施修复。核心就一条铁律：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;加载这个 Skill 后，Hermes 遇到 bug 不会上来就改代码，而是先读错误信息、尝试复现、查 git diff 找最近改动、追踪数据流找到源头。然后才动手。&lt;/p&gt;</description></item><item><title>Hermes Agent 入门指南：你的24小时AI助手</title><link>https://zhouyang.dev/posts/hermes-agent-guide/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/hermes-agent-guide/</guid><description>&lt;h2 id="什么是-hermes-agent"&gt;什么是 Hermes Agent？&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/NousResearch/hermes-agent"&gt;Hermes Agent&lt;/a&gt; 是 Nous Research 开源的 AI 代理框架。它能跑在终端、飞书、Telegram、Discord 等十几个平台上，调用各种工具帮你干活——写代码、搜资料、管理文件、定时任务，甚至帮你赚点小钱。&lt;/p&gt;
&lt;p&gt;和 Claude Code、Codex 相比，Hermes 有几个独特优势：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;完全开源&lt;/strong&gt;，不绑定任何厂商&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持 20+ 模型提供商&lt;/strong&gt;，OpenRouter、Anthropic、DeepSeek、OpenAI 随便切&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持久化记忆&lt;/strong&gt;——它会记住你是谁、你的偏好、你的项目&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;技能系统&lt;/strong&gt;——学会一个新技能就保存下来，越用越聪明&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="安装"&gt;安装&lt;/h2&gt;
&lt;p&gt;一行命令搞定：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="快速上手"&gt;快速上手&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 进入交互模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 一句话提问&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes chat -q &lt;span style="color:#e6db74"&gt;&amp;#34;帮我写一个 Python 爬虫&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 切换模型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes model
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="接入飞书"&gt;接入飞书&lt;/h2&gt;
&lt;p&gt;Hermes 原生支持飞书，配置好后你就能在飞书里和它聊天：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes gateway setup &lt;span style="color:#75715e"&gt;# 选择 Feishu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes gateway run &lt;span style="color:#75715e"&gt;# 启动网关&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="定时任务"&gt;定时任务&lt;/h2&gt;
&lt;p&gt;让 Hermes 定期帮你干活——比如每天早上抓取最新 AI 资讯：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hermes cron create &lt;span style="color:#e6db74"&gt;&amp;#34;0 8 * * *&amp;#34;&lt;/span&gt; &lt;span style="color:#75715e"&gt;# 每天早上8点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;Hermes Agent 是开发者提升效率的利器。开源、免费、多平台，值得一试。&lt;/p&gt;</description></item><item><title>从零到一：2026年独立开发者如何构建第一个SaaS产品</title><link>https://zhouyang.dev/posts/build-first-saas-2026/</link><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/build-first-saas-2026/</guid><description>&lt;h2 id="独立开发saas还能赚钱吗"&gt;独立开发SaaS还能赚钱吗？&lt;/h2&gt;
&lt;p&gt;能。但不是「我有一个改变世界的想法，融500万美金」那种SaaS。&lt;/p&gt;
&lt;p&gt;是这种：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一个有明确痛点的小工具，月费$5-20，服务几千个用户，月入$5000-20000。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这叫&lt;strong&gt;Micro-SaaS&lt;/strong&gt;或&lt;strong&gt;独立开发者SaaS&lt;/strong&gt;。本文讲的就是这个。&lt;/p&gt;
&lt;h2 id="第一步找到对的点子"&gt;第一步：找到对的点子&lt;/h2&gt;
&lt;h3 id="方向错了后面全白费"&gt;方向错了，后面全白费&lt;/h3&gt;
&lt;p&gt;好点子的标准：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;解决真问题&lt;/strong&gt;：用户愿意付钱解决&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;市场够小&lt;/strong&gt;：大公司看不上&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;你能做&lt;/strong&gt;：技术栈在你能力范围内&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可触达&lt;/strong&gt;：你找得到目标用户&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="怎么找点子"&gt;怎么找点子？&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;方法一：从自己的痛点出发&lt;/strong&gt;
你最近因为什么东西不爽？有没有「要是有个工具能……就好了」的时刻？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方法二：看现有产品的差评&lt;/strong&gt;
去G2、Product Hunt、Reddit看竞品的差评。用户抱怨什么，就是你的机会。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方法三：挖缝隙市场&lt;/strong&gt;
大平台的API生态里有很多机会：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Slack App、Notion集成、Figma插件&lt;/li&gt;
&lt;li&gt;Chrome扩展、VS Code插件&lt;/li&gt;
&lt;li&gt;Shopify App、WordPress插件&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="一些方向参考"&gt;一些方向参考&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;方向&lt;/th&gt;
					&lt;th&gt;例子&lt;/th&gt;
					&lt;th&gt;难度&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;PDF工具&lt;/td&gt;
					&lt;td&gt;合并、压缩、转换&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;API封装&lt;/td&gt;
					&lt;td&gt;数据接口转卖&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;自动化&lt;/td&gt;
					&lt;td&gt;定时任务、监控&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数据分析&lt;/td&gt;
					&lt;td&gt;报表生成&lt;/td&gt;
					&lt;td&gt;中高&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AI工具&lt;/td&gt;
					&lt;td&gt;文案、图片生成&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="第二步验证想法"&gt;第二步：验证想法&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;不要一开始就写代码。&lt;/strong&gt; 先验证：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;做一个Landing Page（Carrd/Notion都行），描述你的产品&lt;/li&gt;
&lt;li&gt;放一个「抢先体验」邮箱收集按钮&lt;/li&gt;
&lt;li&gt;去目标用户聚集的地方发帖&lt;/li&gt;
&lt;li&gt;看有多少人留邮箱&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;50个人留邮箱 = 可以做。500个 = 赶紧做。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="第三步搭mvp"&gt;第三步：搭MVP&lt;/h2&gt;
&lt;p&gt;MVP（最小可行产品）只有一个目标：&lt;strong&gt;验证用户愿意付钱&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MVP该有的&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心功能（只做一件事）&lt;/li&gt;
&lt;li&gt;支付（接Stripe/LemonSqueezy）&lt;/li&gt;
&lt;li&gt;基础登录（Supabase Auth）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;MVP不该有的&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;精美的UI（能用就行）&lt;/li&gt;
&lt;li&gt;管理后台（手动改数据库）&lt;/li&gt;
&lt;li&gt;多语言&lt;/li&gt;
&lt;li&gt;复杂的数据分析&lt;/li&gt;
&lt;li&gt;移动App（先做Web）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;时间预算：2周内上线。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>SEO入门：让搜索引擎找到你的技术博客（写给程序员）</title><link>https://zhouyang.dev/posts/seo-basics-for-blog/</link><pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/seo-basics-for-blog/</guid><description>&lt;h2 id="程序员为什么需要seo"&gt;程序员为什么需要SEO？&lt;/h2&gt;
&lt;p&gt;你写了很好的技术文章，但如果搜索引擎找不到，就等于没人看。&lt;/p&gt;
&lt;p&gt;SEO（搜索引擎优化）不是玄学。对程序员来说，它就是一个&lt;strong&gt;匹配问题&lt;/strong&gt;——让用户搜索的词，匹配你写的内容。&lt;/p&gt;
&lt;h2 id="基础一关键词研究"&gt;基础一：关键词研究&lt;/h2&gt;
&lt;h3 id="什么是关键词"&gt;什么是关键词？&lt;/h3&gt;
&lt;p&gt;用户在搜索引擎里输入的东西。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Python自动化脚本」&lt;/li&gt;
&lt;li&gt;「GitHub Pages部署教程」&lt;/li&gt;
&lt;li&gt;「2026年最好的AI编程工具」&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="怎么找关键词"&gt;怎么找关键词？&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;用Google本身&lt;/strong&gt;：搜一个词，看底部的「相关搜索」&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用「人们也在问」&lt;/strong&gt;：Google搜索结果里的问答板块&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用工具&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;Google Keyword Planner（免费但需要AdWords账号）&lt;/li&gt;
&lt;li&gt;Ahrefs Free Keyword Generator&lt;/li&gt;
&lt;li&gt;AnswerThePublic&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="选什么关键词"&gt;选什么关键词？&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类型&lt;/th&gt;
					&lt;th&gt;例子&lt;/th&gt;
					&lt;th&gt;难度&lt;/th&gt;
					&lt;th&gt;流量&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;短尾&lt;/td&gt;
					&lt;td&gt;「Python教程」&lt;/td&gt;
					&lt;td&gt;极高&lt;/td&gt;
					&lt;td&gt;极大&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;中尾&lt;/td&gt;
					&lt;td&gt;「Python自动化办公」&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;长尾&lt;/td&gt;
					&lt;td&gt;「Python批量重命名文件代码」&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
					&lt;td&gt;小&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;新站策略：只做长尾关键词。&lt;/strong&gt; 短尾你打不过大站，长尾竞争小、转化高。&lt;/p&gt;
&lt;h2 id="基础二标题优化"&gt;基础二：标题优化&lt;/h2&gt;
&lt;p&gt;标题标签（&lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt;）是SEO最重要的元素。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;公式&lt;/strong&gt;：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[关键词] - [品牌名]
或
[诱人标题包含关键词]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;好标题&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Python自动化脚本：10个日常重复工作的代码解决方案」&lt;/li&gt;
&lt;li&gt;「GitHub Pages搭建博客：2026年免费部署实战教程」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;坏标题&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「我的博客」&lt;/li&gt;
&lt;li&gt;「随便写写」&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;标题要包含核心关键词，但要自然、吸引点击。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="基础三meta-description"&gt;基础三：Meta Description&lt;/h2&gt;
&lt;p&gt;搜索结果里标题下面的那两行字。&lt;strong&gt;不直接影响排名，但影响点击率。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;好的Description：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;150-160字符&lt;/li&gt;
&lt;li&gt;包含关键词&lt;/li&gt;
&lt;li&gt;告诉用户点进来能得到什么&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;meta&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;name&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;description&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;content&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;从零学习Python自动化，10个实战脚本帮你节省每天2小时。含文件整理、邮件发送、数据报表等完整代码。&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="基础四url结构"&gt;基础四：URL结构&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;好URL&lt;/strong&gt;：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/posts/python-automation-daily-tasks/
/posts/hugo-static-blog-guide/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;坏URL&lt;/strong&gt;：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/posts/123/
/posts/article-2026-06-01/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;规则：&lt;/p&gt;</description></item><item><title>Google AdSense申请全攻略：从被拒到通过的实战经验</title><link>https://zhouyang.dev/posts/google-adsense-apply-guide/</link><pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/google-adsense-apply-guide/</guid><description>&lt;h2 id="为什么选adsense"&gt;为什么选AdSense？&lt;/h2&gt;
&lt;p&gt;Google AdSense是最简单的网站变现方式。挂上代码，Google自动匹配广告，有人点你就赚钱。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;申请免费&lt;/li&gt;
&lt;li&gt;自动匹配，不用自己找广告主&lt;/li&gt;
&lt;li&gt;覆盖面最广（几乎所有广告主都投Google）&lt;/li&gt;
&lt;li&gt;中文站也能做&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;缺点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;审核严（尤其对中文站）&lt;/li&gt;
&lt;li&gt;单价不高（中文流量CPC低）&lt;/li&gt;
&lt;li&gt;影响用户体验（广告太多读者反感）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="申请前你的站必须达标"&gt;申请前：你的站必须达标&lt;/h2&gt;
&lt;h3 id="硬性条件"&gt;硬性条件&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;内容数量&lt;/strong&gt;：至少20-30篇原创文章（越多越好）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内容质量&lt;/strong&gt;：每篇500字以上，有价值，不能是AI灌水&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;网站完整&lt;/strong&gt;：有关于页面、联系方式、隐私政策&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;域名年龄&lt;/strong&gt;：最好6个月以上（新域名通过率低）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;合规内容&lt;/strong&gt;：不能有成人、盗版、赌博等违规内容&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="加分项"&gt;加分项&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;HTTPS（必须）&lt;/li&gt;
&lt;li&gt;网站速度够快&lt;/li&gt;
&lt;li&gt;有独立域名（不要用免费二级域名）&lt;/li&gt;
&lt;li&gt;网站设计清爽、导航清晰&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="常见被拒原因"&gt;常见被拒原因&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;原因&lt;/th&gt;
					&lt;th&gt;怎么解决&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;内容不足&lt;/td&gt;
					&lt;td&gt;写到30篇再申请&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;低质量内容&lt;/td&gt;
					&lt;td&gt;删掉AI水文，重写&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;网站太新&lt;/td&gt;
					&lt;td&gt;等域名满6个月&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;缺少必要页面&lt;/td&gt;
					&lt;td&gt;加关于/联系/隐私政策页&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;违反政策&lt;/td&gt;
					&lt;td&gt;检查有没有违规内容&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;流量太低&lt;/td&gt;
					&lt;td&gt;先做SEO，有自然流量再申&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="申请流程"&gt;申请流程&lt;/h2&gt;
&lt;h3 id="第一步准备工作"&gt;第一步：准备工作&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;确保网站有30+篇高质量文章&lt;/li&gt;
&lt;li&gt;添加以下页面：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/about/&lt;/code&gt; — 关于你和这个网站&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/contact/&lt;/code&gt; — 联系方式&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/privacy/&lt;/code&gt; — 隐私政策（可以AI生成模板）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;网站有HTTPS&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="第二步提交申请"&gt;第二步：提交申请&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;访问 &lt;a href="https://adsense.google.com"&gt;adsense.google.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;用Google账号登录&lt;/li&gt;
&lt;li&gt;输入你的网站URL&lt;/li&gt;
&lt;li&gt;提交审核&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="第三步等待审核"&gt;第三步：等待审核&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;通常1-2周出结果&lt;/li&gt;
&lt;li&gt;可能会被要求添加 &lt;code&gt;ads.txt&lt;/code&gt; 文件&lt;/li&gt;
&lt;li&gt;审核期间继续发文章&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="第四步审核通过后"&gt;第四步：审核通过后&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Google会给你一段广告代码&lt;/li&gt;
&lt;li&gt;贴到你网站的 &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; 标签里&lt;/li&gt;
&lt;li&gt;创建广告单元（推荐「自动广告」模式）&lt;/li&gt;
&lt;li&gt;广告开始展示&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="提高通过率的技巧"&gt;提高通过率的技巧&lt;/h2&gt;
&lt;h3 id="1-用二级域名申请"&gt;1. 用二级域名申请&lt;/h3&gt;
&lt;p&gt;如果你的主域名有一些不成熟的内容，可以用 &lt;code&gt;blog.yourdomain.com&lt;/code&gt; 这种干净的二级域名申请。&lt;/p&gt;</description></item><item><title>Hugo静态博客从入门到部署：比WordPress快10倍</title><link>https://zhouyang.dev/posts/hugo-static-blog-guide/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/hugo-static-blog-guide/</guid><description>&lt;h2 id="wordpress-vs-静态博客"&gt;WordPress vs 静态博客&lt;/h2&gt;
&lt;p&gt;WordPress的痛点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要服务器/PHP/MySQL&lt;/li&gt;
&lt;li&gt;页面加载慢（除非花钱优化）&lt;/li&gt;
&lt;li&gt;安全漏洞多（插件是重灾区）&lt;/li&gt;
&lt;li&gt;编辑器卡顿&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hugo等静态博客：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;纯HTML文件，加载飞起&lt;/li&gt;
&lt;li&gt;免费托管（GitHub Pages / Cloudflare Pages）&lt;/li&gt;
&lt;li&gt;没有数据库，没有后端，零漏洞&lt;/li&gt;
&lt;li&gt;Markdown写作，Git版本控制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;结论：做内容站，Hugo是正确答案。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="hugo是什么"&gt;Hugo是什么？&lt;/h2&gt;
&lt;p&gt;Go语言写的静态网站生成器。你把Markdown文章放进去，它输出一个完整的HTML网站。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心数据&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;构建速度：1000篇文章 &amp;lt; 1秒&lt;/li&gt;
&lt;li&gt;主题数量：300+&lt;/li&gt;
&lt;li&gt;配置文件：一个 &lt;code&gt;hugo.toml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="安装hugo"&gt;安装Hugo&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# macOS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install hugo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Linux (Ubuntu/Debian)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo snap install hugo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 验证安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="创建站点---5分钟"&gt;创建站点 - 5分钟&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo new site my-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd my-blog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;目录结构：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;my-blog/
 content/ ← 文章放这里
 themes/ ← 主题
 static/ ← 图片/CSS/JS
 hugo.toml ← 配置文件
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="选主题"&gt;选主题&lt;/h2&gt;
&lt;p&gt;推荐几个适合中文博客的：&lt;/p&gt;</description></item><item><title>Notion模板赚钱实战：从设计到上架Gumroad全流程</title><link>https://zhouyang.dev/posts/notion-template-sell-gumroad/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/notion-template-sell-gumroad/</guid><description>&lt;h2 id="为什么是notion模板"&gt;为什么是Notion模板？&lt;/h2&gt;
&lt;p&gt;Notion全球用户超过1亿人。有人在Notion里管理人生，有人管理项目，有人记账。&lt;/p&gt;
&lt;p&gt;但大部分人不会「设计」一套好用的Notion系统。这就是你的机会。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;卖模板 = 设计一次，卖无数次。真正的被动收入。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="第一步选一个能卖的品类"&gt;第一步：选一个能卖的品类&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;品类&lt;/th&gt;
					&lt;th&gt;目标用户&lt;/th&gt;
					&lt;th&gt;定价参考&lt;/th&gt;
					&lt;th&gt;竞争&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;个人财务追踪&lt;/td&gt;
					&lt;td&gt;上班族&lt;/td&gt;
					&lt;td&gt;$5-15&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;项目管理&lt;/td&gt;
					&lt;td&gt;自由职业者&lt;/td&gt;
					&lt;td&gt;$10-25&lt;/td&gt;
					&lt;td&gt;高&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;习惯养成&lt;/td&gt;
					&lt;td&gt;学生/上班族&lt;/td&gt;
					&lt;td&gt;$5-10&lt;/td&gt;
					&lt;td&gt;高&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;周报/日报模板&lt;/td&gt;
					&lt;td&gt;职场人&lt;/td&gt;
					&lt;td&gt;$3-8&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;内容日历&lt;/td&gt;
					&lt;td&gt;自媒体&lt;/td&gt;
					&lt;td&gt;$8-15&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;阅读/学习笔记&lt;/td&gt;
					&lt;td&gt;学生&lt;/td&gt;
					&lt;td&gt;$5-10&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;求职追踪&lt;/td&gt;
					&lt;td&gt;求职者&lt;/td&gt;
					&lt;td&gt;$5-12&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;建议从「低竞争+你熟悉的」品类切入。&lt;/strong&gt; 比如你是程序员就做项目管理模板，是学生就做学习笔记。&lt;/p&gt;
&lt;h2 id="第二步设计你的模板"&gt;第二步：设计你的模板&lt;/h2&gt;
&lt;p&gt;优秀Notion模板的要素：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;开箱即用&lt;/strong&gt;：用户复制后立刻能用，不需要自己改结构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据关联&lt;/strong&gt;：用Relation和Rollup让数据联动（这是新手不会做的）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;视图多样&lt;/strong&gt;：日历、看板、表格、画廊，多种视图切换&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;美学在线&lt;/strong&gt;：封面图、Emoji图标、配色协调&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;说明文档&lt;/strong&gt;：模板里包含使用指南&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="第三步包装与定价"&gt;第三步：包装与定价&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;定价策略&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单模板：$5-15&lt;/li&gt;
&lt;li&gt;Bundle（3-5个模板）：$15-40&lt;/li&gt;
&lt;li&gt;免费模板 → 收集邮箱 → 卖高价模板&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Landing Page要素&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3-5张高质量截图&lt;/li&gt;
&lt;li&gt;功能列表（Bullet points）&lt;/li&gt;
&lt;li&gt;包含什么（模板+教程+后续更新）&lt;/li&gt;
&lt;li&gt;用户评价（初期可以找人免费试用换评价）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="第四步上架gumroad"&gt;第四步：上架Gumroad&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://gumroad.com"&gt;Gumroad&lt;/a&gt; 是最简单的数字产品平台：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;注册账号&lt;/li&gt;
&lt;li&gt;创建产品 → Digital Product&lt;/li&gt;
&lt;li&gt;上传模板文件（Notion里点「Duplicate」链接即可）&lt;/li&gt;
&lt;li&gt;设置价格&lt;/li&gt;
&lt;li&gt;写产品描述（参考第三步）&lt;/li&gt;
&lt;li&gt;发布&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Gumroad手续费：免费版10%，Pro版$10/月+更低费率。&lt;/p&gt;</description></item><item><title>独立开发者2026技术栈选择指南：少即是多</title><link>https://zhouyang.dev/posts/indie-dev-tech-stack-2026/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/indie-dev-tech-stack-2026/</guid><description>&lt;h2 id="独立开发者的选型哲学"&gt;独立开发者的选型哲学&lt;/h2&gt;
&lt;p&gt;大公司选技术栈看生态、看招聘、看长期维护。独立开发者只有一个标准——&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;能不能让我一个人，在一周内，把想法变成能收钱的产品？&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;基于这个标准，这是我的推荐。&lt;/p&gt;
&lt;h2 id="前端选一个用到死"&gt;前端：选一个，用到死&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;首选: Next.js (React)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生态最大，AI工具（Cursor/v0）对React支持最好&lt;/li&gt;
&lt;li&gt;Vercel一键部署，免费额度够用&lt;/li&gt;
&lt;li&gt;组件库多（shadcn/ui是2026年首选）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;备选: 纯HTML + HTMX + Alpine.js&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你觉得React太重&lt;/li&gt;
&lt;li&gt;适合内容站、简单工具&lt;/li&gt;
&lt;li&gt;文件少、部署简单、维护成本极低&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;不推荐&lt;/strong&gt;: Vue/Nuxt（生态不如React）、Angular（太重）、Svelte（太小众）&lt;/p&gt;
&lt;h2 id="后端能不写就不写"&gt;后端：能不写就不写&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;首选: Supabase / Firebase&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据库、认证、存储一站式&lt;/li&gt;
&lt;li&gt;免费额度对独立开发者完全够&lt;/li&gt;
&lt;li&gt;不用自己搭服务器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;如果需要自定义后端: Python (FastAPI)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写起来快、AI生成质量高&lt;/li&gt;
&lt;li&gt;部署到 Railway / Fly.io ——按用量计费，不操心运维&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="数据库postgresql永远是正确答案"&gt;数据库：PostgreSQL永远是正确答案&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Supabase内置Postgres&lt;/li&gt;
&lt;li&gt;不需要学新的查询语言&lt;/li&gt;
&lt;li&gt;AI工具对Postgres支持最好&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="部署与运维"&gt;部署与运维&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;项目类型&lt;/th&gt;
					&lt;th&gt;推荐部署方案&lt;/th&gt;
					&lt;th&gt;月费&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;静态博客/内容站&lt;/td&gt;
					&lt;td&gt;GitHub Pages / Cloudflare Pages&lt;/td&gt;
					&lt;td&gt;$0&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Next.js全栈应用&lt;/td&gt;
					&lt;td&gt;Vercel&lt;/td&gt;
					&lt;td&gt;$0-$20&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Python后端&lt;/td&gt;
					&lt;td&gt;Railway / Fly.io&lt;/td&gt;
					&lt;td&gt;$0-$5&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数据库&lt;/td&gt;
					&lt;td&gt;Supabase&lt;/td&gt;
					&lt;td&gt;$0-$25&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="一个真实的技术栈我在用"&gt;一个真实的技术栈（我在用）&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;前端: Hugo（内容站） / Next.js（应用）
后端: Python FastAPI（需要时）
数据库: Supabase PostgreSQL
部署: GitHub Pages + Vercel
支付: LemonSqueezy（支持支付宝）
域名: Porkbun
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;全年运营成本: ~$50（域名 + LemonSqueezy手续费）&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>2026年适合程序员的6个副业方向：从接私活到被动收入</title><link>https://zhouyang.dev/posts/programmer-side-hustle-2026/</link><pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/programmer-side-hustle-2026/</guid><description>&lt;h2 id="程序员的副业不只是接私活"&gt;程序员的副业，不只是接私活&lt;/h2&gt;
&lt;p&gt;很多程序员想到副业就是「外包」「接私活」——累、不稳定、天花板低。2026年，我们有更好的选择。&lt;/p&gt;
&lt;p&gt;以下是6条经过验证的路线，按从「快速来钱」到「被动收入」排序。&lt;/p&gt;
&lt;h2 id="1-技术写作--内容站"&gt;1. 技术写作 / 内容站&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;门槛&lt;/strong&gt;: 极低（你会写文档就会这个）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;收入潜力&lt;/strong&gt;: $200-$2000/月&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方式&lt;/strong&gt;: 写技术博客 → 挂Google AdSense / 接Sponsorship&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;启动成本&lt;/strong&gt;: $0（GitHub Pages + 你的时间）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回报周期&lt;/strong&gt;: 3-6个月&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;为什么推荐&lt;/strong&gt;: 程序员天然有内容可写——踩过的坑、学的新技术、项目复盘。一篇高质量文章能吃几年搜索流量。&lt;/p&gt;
&lt;h2 id="2-chrome扩展开发"&gt;2. Chrome扩展开发&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;门槛&lt;/strong&gt;: 中低&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;收入潜力&lt;/strong&gt;: $100-$5000/月&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方式&lt;/strong&gt;: 开发实用小插件 → Chrome Web Store → 免费+付费版&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;启动成本&lt;/strong&gt;: $5（Chrome开发者注册费）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;案例&lt;/strong&gt;: 一个「网页截图+标注」的扩展，月活10万，Freemium模式月入$2000+。&lt;/p&gt;
&lt;h2 id="3-notionexcel模板"&gt;3. Notion/Excel模板&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;门槛&lt;/strong&gt;: 极低&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;收入潜力&lt;/strong&gt;: $100-$2000/月&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方式&lt;/strong&gt;: 设计模板 → Gumroad/淘宝上架&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;启动成本&lt;/strong&gt;: $0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;热门品类&lt;/strong&gt;: 个人财务追踪、项目管理、习惯养成、周报模板。&lt;/p&gt;
&lt;h2 id="4-apisaas微产品"&gt;4. API/SaaS微产品&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;门槛&lt;/strong&gt;: 中高&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;收入潜力&lt;/strong&gt;: $500-$10000/月&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方式&lt;/strong&gt;: 解决一个小痛点 → 做成SaaS → 按月收费&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;启动成本&lt;/strong&gt;: ~$20/月（服务器）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;思路&lt;/strong&gt;: PDF转换工具、图片压缩API、定时监控服务——功能单一但精准。&lt;/p&gt;</description></item><item><title>用Python自动化你的10个日常重复工作（附完整代码）</title><link>https://zhouyang.dev/posts/python-automation-daily-tasks/</link><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/python-automation-daily-tasks/</guid><description>&lt;p&gt;&lt;img src="https://images.unsplash.com/photo-1461749280684-dccba630e2f6?w=1200&amp;amp;h=630&amp;amp;fit=crop" alt="Python自动化编程"&gt;&lt;/p&gt;
&lt;h2 id="你每天在浪费多少时间"&gt;你每天在浪费多少时间？&lt;/h2&gt;
&lt;p&gt;想一想：重命名一堆文件、整理下载文件夹、定时发邮件、从Excel里提取数据……这些事每天都在消耗你。&lt;/p&gt;
&lt;p&gt;Python最擅长干这个。下面10个脚本，复制即用。&lt;/p&gt;
&lt;h2 id="1-批量重命名文件"&gt;1. 批量重命名文件&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; os
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;path &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;./images&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i, f &lt;span style="color:#f92672"&gt;in&lt;/span&gt; enumerate(os&lt;span style="color:#f92672"&gt;.&lt;/span&gt;listdir(path)):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; os&lt;span style="color:#f92672"&gt;.&lt;/span&gt;rename(&lt;span style="color:#e6db74"&gt;f&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;{&lt;/span&gt;path&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/&lt;/span&gt;&lt;span style="color:#e6db74"&gt;{&lt;/span&gt;f&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;f&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;{&lt;/span&gt;path&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/photo_&lt;/span&gt;&lt;span style="color:#e6db74"&gt;{&lt;/span&gt;i&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#e6db74"&gt;:&lt;/span&gt;&lt;span style="color:#e6db74"&gt;03d&lt;/span&gt;&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;.jpg&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-自动整理下载文件夹"&gt;2. 自动整理下载文件夹&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; os&lt;span style="color:#f92672"&gt;,&lt;/span&gt; shutil
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;downloads &lt;span style="color:#f92672"&gt;=&lt;/span&gt; os&lt;span style="color:#f92672"&gt;.&lt;/span&gt;path&lt;span style="color:#f92672"&gt;.&lt;/span&gt;expanduser(&lt;span style="color:#e6db74"&gt;&amp;#34;~/Downloads&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; f &lt;span style="color:#f92672"&gt;in&lt;/span&gt; os&lt;span style="color:#f92672"&gt;.&lt;/span&gt;listdir(downloads):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ext &lt;span style="color:#f92672"&gt;=&lt;/span&gt; f&lt;span style="color:#f92672"&gt;.&lt;/span&gt;split(&lt;span style="color:#e6db74"&gt;&amp;#34;.&amp;#34;&lt;/span&gt;)[&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]&lt;span style="color:#f92672"&gt;.&lt;/span&gt;lower()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dest &lt;span style="color:#f92672"&gt;=&lt;/span&gt; os&lt;span style="color:#f92672"&gt;.&lt;/span&gt;path&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join(downloads, ext)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; os&lt;span style="color:#f92672"&gt;.&lt;/span&gt;makedirs(dest, exist_ok&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; shutil&lt;span style="color:#f92672"&gt;.&lt;/span&gt;move(os&lt;span style="color:#f92672"&gt;.&lt;/span&gt;path&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join(downloads, f), dest)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-定时发送邮件"&gt;3. 定时发送邮件&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; smtplib
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; email.mime.text &lt;span style="color:#f92672"&gt;import&lt;/span&gt; MIMEText
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;msg &lt;span style="color:#f92672"&gt;=&lt;/span&gt; MIMEText(&lt;span style="color:#e6db74"&gt;&amp;#34;这是自动发送的日报&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;msg[&lt;span style="color:#e6db74"&gt;&amp;#34;Subject&amp;#34;&lt;/span&gt;] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;每日报告&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;msg[&lt;span style="color:#e6db74"&gt;&amp;#34;From&amp;#34;&lt;/span&gt;] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;you@qq.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;msg[&lt;span style="color:#e6db74"&gt;&amp;#34;To&amp;#34;&lt;/span&gt;] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;boss@qq.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;with&lt;/span&gt; smtplib&lt;span style="color:#f92672"&gt;.&lt;/span&gt;SMTP_SSL(&lt;span style="color:#e6db74"&gt;&amp;#34;smtp.qq.com&amp;#34;&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;465&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; s:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;login(&lt;span style="color:#e6db74"&gt;&amp;#34;you@qq.com&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;授权码&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#f92672"&gt;.&lt;/span&gt;send_message(msg)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="4-批量压缩图片"&gt;4. 批量压缩图片&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; PIL &lt;span style="color:#f92672"&gt;import&lt;/span&gt; Image
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; os
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; f &lt;span style="color:#f92672"&gt;in&lt;/span&gt; os&lt;span style="color:#f92672"&gt;.&lt;/span&gt;listdir(&lt;span style="color:#e6db74"&gt;&amp;#34;photos&amp;#34;&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; f&lt;span style="color:#f92672"&gt;.&lt;/span&gt;endswith((&lt;span style="color:#e6db74"&gt;&amp;#34;.jpg&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;)):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Image&lt;span style="color:#f92672"&gt;.&lt;/span&gt;open(&lt;span style="color:#e6db74"&gt;f&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;photos/&lt;/span&gt;&lt;span style="color:#e6db74"&gt;{&lt;/span&gt;f&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img&lt;span style="color:#f92672"&gt;.&lt;/span&gt;save(&lt;span style="color:#e6db74"&gt;f&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;compressed/&lt;/span&gt;&lt;span style="color:#e6db74"&gt;{&lt;/span&gt;f&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;, quality&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;60&lt;/span&gt;, optimize&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="5-excel数据提取"&gt;5. Excel数据提取&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; pandas &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;df &lt;span style="color:#f92672"&gt;=&lt;/span&gt; pd&lt;span style="color:#f92672"&gt;.&lt;/span&gt;read_excel(&lt;span style="color:#e6db74"&gt;&amp;#34;sales.xlsx&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;summary &lt;span style="color:#f92672"&gt;=&lt;/span&gt; df&lt;span style="color:#f92672"&gt;.&lt;/span&gt;groupby(&lt;span style="color:#e6db74"&gt;&amp;#34;region&amp;#34;&lt;/span&gt;)[&lt;span style="color:#e6db74"&gt;&amp;#34;revenue&amp;#34;&lt;/span&gt;]&lt;span style="color:#f92672"&gt;.&lt;/span&gt;sum()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;summary&lt;span style="color:#f92672"&gt;.&lt;/span&gt;to_csv(&lt;span style="color:#e6db74"&gt;&amp;#34;summary.csv&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="6-网页定时截图"&gt;6. 网页定时截图&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; playwright.sync_api &lt;span style="color:#f92672"&gt;import&lt;/span&gt; sync_playwright
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;with&lt;/span&gt; sync_playwright() &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; p:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; browser &lt;span style="color:#f92672"&gt;=&lt;/span&gt; p&lt;span style="color:#f92672"&gt;.&lt;/span&gt;chromium&lt;span style="color:#f92672"&gt;.&lt;/span&gt;launch()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; page &lt;span style="color:#f92672"&gt;=&lt;/span&gt; browser&lt;span style="color:#f92672"&gt;.&lt;/span&gt;new_page()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; page&lt;span style="color:#f92672"&gt;.&lt;/span&gt;goto(&lt;span style="color:#e6db74"&gt;&amp;#34;https://your-site.com&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; page&lt;span style="color:#f92672"&gt;.&lt;/span&gt;screenshot(path&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;screenshot.png&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="7-批量下载文件"&gt;7. 批量下载文件&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; requests
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;urls &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#e6db74"&gt;&amp;#34;https://example.com/file1.pdf&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;https://example.com/file2.pdf&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i, url &lt;span style="color:#f92672"&gt;in&lt;/span&gt; enumerate(urls):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; r &lt;span style="color:#f92672"&gt;=&lt;/span&gt; requests&lt;span style="color:#f92672"&gt;.&lt;/span&gt;get(url)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;with&lt;/span&gt; open(&lt;span style="color:#e6db74"&gt;f&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;download_&lt;/span&gt;&lt;span style="color:#e6db74"&gt;{&lt;/span&gt;i&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;.pdf&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; f:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; f&lt;span style="color:#f92672"&gt;.&lt;/span&gt;write(r&lt;span style="color:#f92672"&gt;.&lt;/span&gt;content)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="8-监控网站变化"&gt;8. 监控网站变化&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; requests&lt;span style="color:#f92672"&gt;,&lt;/span&gt; hashlib&lt;span style="color:#f92672"&gt;,&lt;/span&gt; time
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;url &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;https://target-site.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;prev &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; content &lt;span style="color:#f92672"&gt;=&lt;/span&gt; requests&lt;span style="color:#f92672"&gt;.&lt;/span&gt;get(url)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;text
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; h &lt;span style="color:#f92672"&gt;=&lt;/span&gt; hashlib&lt;span style="color:#f92672"&gt;.&lt;/span&gt;md5(content&lt;span style="color:#f92672"&gt;.&lt;/span&gt;encode())&lt;span style="color:#f92672"&gt;.&lt;/span&gt;hexdigest()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; h &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; prev:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#34;网站更新了!&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; prev &lt;span style="color:#f92672"&gt;=&lt;/span&gt; h
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; time&lt;span style="color:#f92672"&gt;.&lt;/span&gt;sleep(&lt;span style="color:#ae81ff"&gt;3600&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="9-自动生成周报"&gt;9. 自动生成周报&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; datetime &lt;span style="color:#f92672"&gt;import&lt;/span&gt; datetime, timedelta
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;week &lt;span style="color:#f92672"&gt;=&lt;/span&gt; datetime&lt;span style="color:#f92672"&gt;.&lt;/span&gt;now() &lt;span style="color:#f92672"&gt;-&lt;/span&gt; timedelta(days&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;7&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;start &lt;span style="color:#f92672"&gt;=&lt;/span&gt; week&lt;span style="color:#f92672"&gt;.&lt;/span&gt;strftime(&lt;span style="color:#e6db74"&gt;&amp;#34;%m.&lt;/span&gt;&lt;span style="color:#e6db74"&gt;%d&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;end &lt;span style="color:#f92672"&gt;=&lt;/span&gt; datetime&lt;span style="color:#f92672"&gt;.&lt;/span&gt;now()&lt;span style="color:#f92672"&gt;.&lt;/span&gt;strftime(&lt;span style="color:#e6db74"&gt;&amp;#34;%m.&lt;/span&gt;&lt;span style="color:#e6db74"&gt;%d&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;f&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;本周工作总结 (&lt;/span&gt;&lt;span style="color:#e6db74"&gt;{&lt;/span&gt;start&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt; - &lt;/span&gt;&lt;span style="color:#e6db74"&gt;{&lt;/span&gt;end&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;)&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#34;完成事项:&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#34;1. &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#34;2. &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#34;下周计划:&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#34;1. &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="10-数据备份脚本"&gt;10. 数据备份脚本&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; shutil&lt;span style="color:#f92672"&gt;,&lt;/span&gt; os
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; datetime &lt;span style="color:#f92672"&gt;import&lt;/span&gt; datetime
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;src &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;/path/to/important/data&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dst &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;f&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/backup/backup_&lt;/span&gt;&lt;span style="color:#e6db74"&gt;{&lt;/span&gt;datetime&lt;span style="color:#f92672"&gt;.&lt;/span&gt;now()&lt;span style="color:#f92672"&gt;.&lt;/span&gt;strftime(&lt;span style="color:#e6db74"&gt;&amp;#39;%Y%m&lt;/span&gt;&lt;span style="color:#e6db74"&gt;%d&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;&lt;/span&gt;)&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;shutil&lt;span style="color:#f92672"&gt;.&lt;/span&gt;copytree(src, dst)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;f&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;备份完成: &lt;/span&gt;&lt;span style="color:#e6db74"&gt;{&lt;/span&gt;dst&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="把这些串起来"&gt;把这些串起来&lt;/h2&gt;
&lt;p&gt;用cron定时任务每天跑一遍:&lt;/p&gt;</description></item><item><title>GitHub Pages + Hugo 搭建免费博客完整教程（2026版）</title><link>https://zhouyang.dev/posts/github-pages-hugo-blog-tutorial/</link><pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/github-pages-hugo-blog-tutorial/</guid><description>&lt;h2 id="为什么选-hugo--github-pages"&gt;为什么选 Hugo + GitHub Pages？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;完全免费&lt;/strong&gt;：GitHub Pages 免费托管，无流量限制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;极速&lt;/strong&gt;：Hugo 是Go写的，构建速度毫秒级&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Markdown 写作&lt;/strong&gt;：用你熟悉的格式写文章&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;版本控制&lt;/strong&gt;：所有文章都在 Git 里，永远不丢&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="第一步安装-hugo"&gt;第一步：安装 Hugo&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# macOS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install hugo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo snap install hugo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Windows&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;choco install hugo-extended
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="第二步创建站点"&gt;第二步：创建站点&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo new site my-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd my-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="第三步选主题"&gt;第三步：选主题&lt;/h2&gt;
&lt;p&gt;推荐几个轻量中文友好的主题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PaperMod&lt;/strong&gt;：简洁、功能全&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stack&lt;/strong&gt;：卡片式、颜值高&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LoveIt&lt;/strong&gt;：中文社区最流行的主题&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;theme = &amp;#39;PaperMod&amp;#39;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; hugo.toml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="第四步写第一篇文章"&gt;第四步：写第一篇文章&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo new posts/my-first-post.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;用 Markdown 写内容，Front Matter 里设置标题、日期、标签：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;我的第一篇文章&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;date&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;2026-06-04&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;tags&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;入门&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="第五步本地预览"&gt;第五步：本地预览&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo server -D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;浏览器打开 &lt;code&gt;http://localhost:1313&lt;/code&gt;，边写边看效果。&lt;/p&gt;</description></item><item><title>2026年AI编程助手完全指南：选型、配置与最佳实践</title><link>https://zhouyang.dev/posts/ai-coding-assistant-guide-2026/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/ai-coding-assistant-guide-2026/</guid><description>&lt;h2 id="2026年ai编程助手的格局"&gt;2026年AI编程助手的格局&lt;/h2&gt;
&lt;p&gt;AI编程工具从2023年的「新鲜玩意」到2026年的「基础设施」，经历了爆发式增长。现在市面上的工具可以分为三类。&lt;/p&gt;
&lt;h2 id="第一类终端cli型"&gt;第一类：终端/CLI型&lt;/h2&gt;
&lt;p&gt;这类工具运行在终端里，直接操作代码库。&lt;/p&gt;
&lt;h3 id="claude-code"&gt;Claude Code&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;厂商&lt;/strong&gt;：Anthropic&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：200K上下文、理解力强、擅长架构级别的工作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格&lt;/strong&gt;：API计费，Max计划$200/月&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="codex-openai"&gt;Codex (OpenAI)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;厂商&lt;/strong&gt;：OpenAI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：轻量级、速度快、和GPT-4深度集成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格&lt;/strong&gt;：免费额度 + API计费&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="hermes-agent"&gt;Hermes Agent&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;厂商&lt;/strong&gt;：Nous Research（开源）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：完全开源、支持20+模型提供商、持久化记忆、技能系统&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格&lt;/strong&gt;：免费（自带API Key）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="第二类ide集成型"&gt;第二类：IDE集成型&lt;/h2&gt;
&lt;h3 id="cursor"&gt;Cursor&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;模式&lt;/strong&gt;：VS Code Fork&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;杀手功能&lt;/strong&gt;：Tab预测补全、内联编辑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格&lt;/strong&gt;：免费版 + Pro $20/月&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="windsurf"&gt;Windsurf&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;模式&lt;/strong&gt;：独立IDE&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;杀手功能&lt;/strong&gt;：Cascade多文件编辑、自动上下文&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格&lt;/strong&gt;：免费版 + Pro $15/月&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="github-copilot"&gt;GitHub Copilot&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;模式&lt;/strong&gt;：IDE插件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;杀手功能&lt;/strong&gt;：覆盖面最广、Agent模式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格&lt;/strong&gt;：$10/月（个人）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="第三类在线web型"&gt;第三类：在线/Web型&lt;/h2&gt;
&lt;h3 id="boltnew--v0dev"&gt;Bolt.new / v0.dev&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;功能&lt;/strong&gt;：一句话生成全栈应用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适合&lt;/strong&gt;：快速原型、前端组件&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="本地-vs-云端怎么选"&gt;本地 vs 云端：怎么选？&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;因素&lt;/th&gt;
					&lt;th&gt;本地终端型&lt;/th&gt;
					&lt;th&gt;IDE集成型&lt;/th&gt;
					&lt;th&gt;Web型&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;代码库理解&lt;/td&gt;
					&lt;td&gt;⭐⭐⭐&lt;/td&gt;
					&lt;td&gt;⭐⭐&lt;/td&gt;
					&lt;td&gt;⭐&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;编码速度&lt;/td&gt;
					&lt;td&gt;⭐⭐&lt;/td&gt;
					&lt;td&gt;⭐⭐⭐&lt;/td&gt;
					&lt;td&gt;⭐&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;架构/重构&lt;/td&gt;
					&lt;td&gt;⭐⭐⭐&lt;/td&gt;
					&lt;td&gt;⭐⭐&lt;/td&gt;
					&lt;td&gt;⭐&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;上手难度&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
					&lt;td&gt;极低&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;隐私&lt;/td&gt;
					&lt;td&gt;好&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
					&lt;td&gt;差&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="我的工作流供参考"&gt;我的工作流（供参考）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;日常编码&lt;/strong&gt;：Cursor（Tab补全太香了）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大型重构&lt;/strong&gt;：Claude Code（理解力天花板）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动化任务/定时任务&lt;/strong&gt;：Hermes Agent（开源 + cron）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快速原型&lt;/strong&gt;：Bolt.new（最快从零到有）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="最后建议"&gt;最后建议&lt;/h2&gt;
&lt;p&gt;不要只用一个工具。组合使用，各取所长。我的成本：Cursor Pro $20 + Claude API ~$30 = 每月$50，换来的是生产力翻倍。&lt;/p&gt;</description></item><item><title>零代码基础？用AI从零搭建一个个人网站（2026实战）</title><link>https://zhouyang.dev/posts/ai-build-website-zero/</link><pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/ai-build-website-zero/</guid><description>&lt;h2 id="你不需要学编程来做网站了"&gt;你不需要学编程来做网站了&lt;/h2&gt;
&lt;p&gt;2026年，AI工具已经彻底改变了做网站的流程。你不需要会 HTML、CSS、JavaScript——你只需要&lt;strong&gt;清楚地描述你想要什么&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这篇文章带你从零到一，用AI搭建一个能访问、能赚钱的个人网站。&lt;/p&gt;
&lt;h2 id="第一步买域名10分钟"&gt;第一步：买域名（10分钟）&lt;/h2&gt;
&lt;p&gt;推荐 &lt;a href="https://www.namesilo.com"&gt;NameSilo&lt;/a&gt; 或 &lt;a href="https://porkbun.com"&gt;Porkbun&lt;/a&gt;，便宜且支持支付宝。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.com&lt;/code&gt; 域名 ~$10/年&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.xyz&lt;/code&gt; 域名 ~$1/年（预算党首选）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;选个简短好记的名字，比如 &lt;code&gt;yourname.com&lt;/code&gt; 或你的项目名。&lt;/p&gt;
&lt;h2 id="第二步选工具决定前先看这里"&gt;第二步：选工具（决定前先看这里）&lt;/h2&gt;
&lt;p&gt;2026年有三个主流路线：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;AI + 静态博客（Hugo）&lt;/strong&gt;：免费、极快、SEO友好。适合博客/内容站。本文用这个。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI + Framer/Webflow&lt;/strong&gt;：拖拽式建站，设计精美。适合作品集/落地页。月费$10+。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI + Bolt/v0&lt;/strong&gt;：一句话生成全栈应用。适合小工具/原型。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="第三步让ai帮你写网站"&gt;第三步：让AI帮你写网站&lt;/h2&gt;
&lt;p&gt;打开你的AI助手（Claude、ChatGPT、或者 Hermes Agent），输入：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「帮我用 Hugo 搭建一个个人博客，主题简洁，支持暗色模式，有首页、文章列表、关于页面。文章内容围绕 AI工具教程、独立开发。」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;AI会帮你生成所有文件：配置文件、模板、示例文章。&lt;/p&gt;
&lt;h2 id="第四步部署到-github-pages免费"&gt;第四步：部署到 GitHub Pages（免费）&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 创建 GitHub 仓库：yourname.github.io&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 然后把AI生成的代码推上去&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git commit -m &lt;span style="color:#e6db74"&gt;&amp;#34;first commit&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git remote add origin git@github.com:yourname/yourname.github.io.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push -u origin main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;GitHub Pages 自动构建和部署，几分钟后你的网站就上线了。&lt;/p&gt;
&lt;h2 id="第五步变现准备"&gt;第五步：变现准备&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;申请 Google AdSense（挂广告）&lt;/li&gt;
&lt;li&gt;加 Google Analytics（看流量）&lt;/li&gt;
&lt;li&gt;提交到 Google Search Console（让搜索引擎收录）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;步骤&lt;/th&gt;
					&lt;th&gt;耗时&lt;/th&gt;
					&lt;th&gt;花费&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;买域名&lt;/td&gt;
					&lt;td&gt;10分钟&lt;/td&gt;
					&lt;td&gt;~$10/年&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AI写代码&lt;/td&gt;
					&lt;td&gt;1小时&lt;/td&gt;
					&lt;td&gt;免费&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;部署&lt;/td&gt;
					&lt;td&gt;10分钟&lt;/td&gt;
					&lt;td&gt;免费&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;上线&lt;/td&gt;
					&lt;td&gt;实时&lt;/td&gt;
					&lt;td&gt;-&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;**总花费：$10 + 一个下午。**值不值？你自己判断。&lt;/p&gt;</description></item><item><title>Claude Code vs Cursor vs GitHub Copilot：2026年AI编程助手深度横评</title><link>https://zhouyang.dev/posts/claude-code-vs-cursor-vs-copilot/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid>https://zhouyang.dev/posts/claude-code-vs-cursor-vs-copilot/</guid><description>&lt;h2 id="为什么需要ai编程助手"&gt;为什么需要AI编程助手？&lt;/h2&gt;
&lt;p&gt;2026年，AI编程助手已经从「新鲜玩意」变成了「必备工具」。但市面上的选择太多——Claude Code、Cursor、GitHub Copilot、Codex、Windsurf……选哪个？&lt;/p&gt;
&lt;p&gt;这篇文章聚焦三大主流选手，帮你做出明智选择。&lt;/p&gt;
&lt;h2 id="claude-code"&gt;Claude Code&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Anthropic出品，终端里的AI程序员。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Claude Code 是一个命令行工具，你在终端里用自然语言描述需求，它直接读代码、写代码、跑测试。它的核心优势是 &lt;strong&gt;深度理解大型代码库&lt;/strong&gt;——200K上下文窗口，能一口气吃掉整个项目。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：后端开发、重构、代码审查&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格&lt;/strong&gt;：按API用量计费，Max计划$200/月含大量额度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;亮点&lt;/strong&gt;：代码质量高、擅长复杂逻辑、理解项目架构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;槽点&lt;/strong&gt;：纯命令行，没有IDE集成；Max计划贵&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cursor"&gt;Cursor&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;基于VS Code的AI-first编辑器。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cursor 本质上是 VS Code + 深度AI集成。它的杀手功能是 &lt;strong&gt;Tab补全&lt;/strong&gt;和&lt;strong&gt;Inline编辑&lt;/strong&gt;——AI预测你下一步要写什么，一键接受。体验非常流畅。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：全栈开发、前端、日常编码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格&lt;/strong&gt;：免费版可用，Pro版$20/月&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;亮点&lt;/strong&gt;：体验丝滑、VS Code生态兼容、速度快&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;槽点&lt;/strong&gt;：大项目重构不如Claude Code深；重度使用需Pro&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="github-copilot"&gt;GitHub Copilot&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;微软出品，最老牌的AI编程助手。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Copilot 的优势是 &lt;strong&gt;无缝集成&lt;/strong&gt;——VS Code、JetBrains、Neovim全支持。2026年新增了Agent模式，能自主执行多步操作。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：日常编码、多IDE用户、团队协作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价格&lt;/strong&gt;：个人$10/月，含Copilot Chat&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;亮点&lt;/strong&gt;：覆盖面最广、企业友好、Chat功能好用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;槽点&lt;/strong&gt;：代码建议有时「幻觉」；Agent模式还不够成熟&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="我的推荐"&gt;我的推荐&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;你的情况&lt;/th&gt;
					&lt;th&gt;推荐&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;独立开发者/个人项目&lt;/td&gt;
					&lt;td&gt;Cursor（性价比最高）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;大型项目/后端重构&lt;/td&gt;
					&lt;td&gt;Claude Code（理解力最强）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;多IDE/团队协作&lt;/td&gt;
					&lt;td&gt;GitHub Copilot（生态最好）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;不想花钱&lt;/td&gt;
					&lt;td&gt;Cursor免费版 + 开源自补全插件&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="最后"&gt;最后&lt;/h2&gt;
&lt;p&gt;没有「最好」的工具，只有「最适合」的工具。建议三个都试用一周，感受一下哪个更契合你的工作流。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;利益声明：本文为独立评测，无任何商业合作。&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>