XieJava’s blog

记录最好的自己

试了一下CSDN多平台同步发布功能:从单点发布到全网分发,还挺好用的

昨天我写了一篇《从Hexo到Hugo:我的博客迁移之旅与完整实践指南》,发布到CSDN后顺手体验了一下官方新推的"多平台同步发布"功能,直接将文章同步到了微信公众号"fullbug"。整个过程出乎意料地顺畅,让我这个长期被"复制粘贴"困扰的内容创作者眼前一亮。这篇文章就来详细聊聊这个功能解决了什么痛点,以及具体怎么用。 ...

2026-04-30 · 7 分钟 · 3241 字 · XieJava

从Hexo到Hugo:我的博客迁移之旅与完整实践指南

从 2020 年开始,我用 Hexo 搭建并维护了这个博客,一晃就是 5 年多,累计发表了 225 篇文章。最近,我完成了一次"大修"——将整个博客从 Hexo 迁移到了 Hugo。这篇文章记录了我为什么要迁移、Hugo 的优势、如何从零开始使用 Hugo,以及从 Hexo 低成本迁移的完整步骤。如果你也在考虑换博客框架,希望这篇指南能帮你少走弯路。 一、用了5年Hexo,为什么要换? 先交代一下背景。我的原博客基于 Hexo + NexT 主题,托管在 GitHub Pages 上,自定义域名访问,跑了整整 5 年。Hexo 本身是个很好的工具,陪伴我走过了从博客搭建小白到能熟练定制主题的全过程。 但几个问题日积月累,最终促使我下定决心迁移: 1. 构建速度越来越慢 随着文章数量增加到 200 多篇,Hexo 的生成时间从最初的几秒变成了几十秒。每次本地预览都要等,写作体验大打折扣。 2. Node.js 依赖地狱 Hexo 基于 Node.js,各种插件、主题依赖经常因为版本升级出问题。我有过两次因为 Node 版本升级导致构建失败的遭遇,排查起来非常耗时。 3. 主题维护停滞 我用的 NexT 主题虽然经典,但更新频率明显降低,一些新特性(如深色模式自动切换、更好的搜索体验)要么实现起来麻烦,要么干脆没有。 4. 单文件配置复杂 Hexo 的配置集中在一个 _config.yml 里,随着定制增多,这个文件越来越庞大,管理和维护都很不方便。 于是我开始寻找替代方案,最终选择了 Hugo。 二、Hugo vs Hexo vs WordPress:为什么选择 Hugo? 在决定迁移之前,我对比了市面上主流的几个博客方案: Hugo 维度 评价 构建速度 极快。基于 Go 语言编写,每秒可生成数千页面,225 篇文章在我的笔记本上不到 1 秒完成构建 依赖管理 几乎零依赖。只有一个二进制文件,无需 Node.js、Python 等运行时 主题生态 丰富且活跃。PaperMod、Blowfish 等主题功能现代、维护积极 配置方式 灵活。支持 YAML/TOML/JSON,支持多环境配置、模块化配置 学习曲线 适中。模板语法使用 Go 的 html/template,有一定门槛 内容格式 原生支持 Markdown,Front Matter 兼容性好 Hexo 维度 评价 构建速度 中等。Node.js 单线程,文章多了明显变慢 依赖管理 复杂。npm 依赖树庞大,版本升级容易出问题 主题生态 丰富但分化。经典主题维护放缓,新主题数量不如 Hugo 配置方式 单文件 _config.yml,功能多了以后很臃肿 学习曲线 较低。基于 JavaScript,前端开发者上手容易 内容格式 支持 Markdown,插件丰富 WordPress 维度 评价 构建速度 动态生成,无需构建,但服务器响应受插件影响 依赖管理 需要 PHP + MySQL 环境,服务器维护成本高 主题生态 极其丰富,但优质主题多收费 配置方式 图形化后台,对技术用户反而不够灵活 学习曲线 低。但深度定制需要懂 PHP 内容格式 富文本编辑器,Markdown 需插件支持 托管成本 需要服务器/虚拟主机,GitHub Pages 无法直接托管 我的选择理由 我的需求 Hugo 的匹配度 免费托管在 GitHub Pages 完美支持 文章多、构建要快 Hugo 是静态生成器中最快的 不想折腾 Node.js 依赖 单个二进制文件,零依赖 现代化主题(深色模式、搜索等) PaperMod 主题开箱即用 从 Hexo 迁移成本低 Front Matter 高度兼容,文章基本无需改动 长期维护省心 Go 语言生态稳定,Hugo 社区活跃 总结:如果你追求极致的构建速度、零依赖、现代化主题,并且习惯用 Markdown 写作,Hugo 是目前静态博客生成器的最佳选择之一。如果你更在意生态丰富度和前端开发的灵活性,Hexo 依然是好选择。WordPress 则适合需要动态功能、不想接触代码的用户,但要承担服务器成本。 三、Hugo 安装:一步到位的极简体验 Hugo 的安装可以说是所有博客工具中最简单的,没有之一。 macOS 1 2 3 4 5 # 使用 Homebrew 安装 brew install hugo # 验证安装 hugo version Windows 1 2 3 4 5 6 7 8 # 使用 Chocolatey choco install hugo-extended # 或使用 Scoop scoop install hugo-extended # 验证安装 hugo version Linux 1 2 3 4 5 6 7 8 9 # Ubuntu/Debian sudo apt install hugo # 或下载官方二进制文件 wget https://github.com/gohugoio/hugo/releases/download/v0.160.1/hugo_extended_0.160.1_linux-amd64.deb sudo dpkg -i hugo_extended_0.160.1_linux-amd64.deb # 验证安装 hugo version 注意:如果主题使用了 Sass/SCSS(如 PaperMod),请安装 hugo-extended 版本,否则构建会报错。 安装完成后,你只有一个 hugo 可执行文件,没有任何后台服务、没有依赖目录,干净利落。 四、从零开始:创建 Hugo 站点并部署到 GitHub Pages Step 1:创建新站点 1 2 3 4 5 6 # 创建站点目录 hugo new site myblog cd myblog # 初始化 Git 仓库 git init 目录结构如下: myblog/ ├── archetypes/ # 文章模板 ├── assets/ # 需要处理的资源(Sass、JS) ├── content/ # 文章内容 ├── data/ # 数据文件 ├── layouts/ # HTML 模板 ├── static/ # 静态文件(直接复制到输出目录) ├── themes/ # 主题 └── hugo.toml # 站点配置文件 Step 2:安装主题 这里以 PaperMod 为例,它是目前 Hugo 上最受欢迎的主题之一,功能现代、配置灵活。 1 2 3 4 5 6 # 将主题添加为 Git 子模块(推荐,方便后续更新) git submodule add --depth=1 https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod git submodule update --init --recursive # 启用主题 echo "theme = 'PaperMod'" >> hugo.toml Step 3:配置站点 编辑 hugo.toml(或 hugo.yaml),以下是我的配置示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 baseURL = 'https://yourname.github.io' defaultContentLanguage = 'zh' languageCode = 'zh-CN' hasCJKLanguage = true title = "我的博客" theme = 'PaperMod' [params] author = "你的名字" description = "博客描述" defaultTheme = 'auto' # 自动切换深色/浅色模式 ShowToc = true # 显示文章目录 ShowReadingTime = true # 显示阅读时间 ShowWordCount = true # 显示字数统计 ShowCodeCopyButtons = true # 代码复制按钮 ShowRelatedPosts = true # 相关文章推荐 ShowPostNavLinks = true # 上一篇/下一篇导航 ShowBreadCrumbs = true # 面包屑导航 comments = true # 开启评论 [params.homeInfoParams] Title = "欢迎来到我的博客" Content = '记录学习与生活' [[params.socialIcons]] name = 'github' url = 'https://github.com/yourname' [menu] [[menu.main]] name = '首页' url = '/' weight = 1 [[menu.main]] name = '归档' url = '/archives/' weight = 2 [[menu.main]] name = '分类' url = '/categories/' weight = 3 [[menu.main]] name = '标签' url = '/tags/' weight = 4 [[menu.main]] name = '关于' url = '/about/' weight = 5 [[menu.main]] name = '搜索' url = '/search/' weight = 6 [markup] [markup.highlight] style = 'dracula' lineNos = true [markup.goldmark] [markup.goldmark.renderer] unsafe = true Step 4:创建内容 1 2 3 4 5 # 创建文章 hugo new content posts/hello-world.md # 创建页面 hugo new content about.md 文章 Front Matter 示例: 1 2 3 4 5 6 7 8 9 10 11 --- title: "文章标题" date: 2026-04-29T10:00:00+08:00 draft: false tags: - Hugo categories: - 技术 --- 这里是正文内容,支持 Markdown 语法。 Step 5:本地预览 1 hugo server -D 打开浏览器访问 http://localhost:1313,-D 参数表示同时预览草稿(draft)文章。 Step 6:GitHub Actions 自动部署 在仓库中创建 .github/workflows/deploy.yml: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 name: Deploy Hugo to GitHub Pages on: push: branches: [master] workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: group: "pages" cancel-in-progress: false jobs: build: runs-on: ubuntu-latest env: HUGO_VERSION: 0.160.1 steps: - name: Install Hugo CLI run: | wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb sudo dpkg -i ${{ runner.temp }}/hugo.deb - name: Checkout uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Setup Pages id: pages uses: actions/configure-pages@v5 - name: Build with Hugo env: HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache HUGO_ENVIRONMENT: production TZ: Asia/Shanghai run: hugo --minify --baseURL "${{ steps.pages.outputs.base_url }}/" - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: ./public deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 关键配置说明 submodules: recursive:必须启用,因为主题是通过子模块引入的 fetch-depth: 0:获取完整历史,Hugo 需要 Git 历史来生成文章修改时间等信息 hugo_extended:如果主题使用了 Sass/SCSS,必须使用 extended 版本 --minify:压缩 HTML/CSS/JS,减小文件体积 TZ: Asia/Shanghai:设置时区,确保文章发布时间正确 启用 GitHub Pages 在 GitHub 仓库的 Settings → Pages 中,将 Source 设置为 GitHub Actions 推送代码到 master 分支,自动触发部署 访问 https://yourname.github.io 查看效果 五、从 Hexo 迁移到 Hugo:低成本的完整方案 这是本文的核心部分。我已经成功将 225 篇文章从 Hexo 迁移到 Hugo,整个过程比你想象的要简单。 迁移前的准备 1. 备份原博客 1 cp -r myhexo/myblog myhexo/myblog-backup 2. 了解差异 对比项 Hexo Hugo 配置文件 _config.yml hugo.toml / hugo.yaml 文章目录 source/_posts/ content/posts/ 页面目录 source/ content/ 静态文件 source/ static/ 主题目录 themes/ themes/ Front Matter YAML YAML/TOML/JSON 好消息是:Hugo 的 Front Matter 与 Hexo 高度兼容,大部分文章可以直接复制过去,几乎无需修改。 文章迁移 最简单的方法:直接复制 如果你的 Hexo 文章 Front Matter 比较标准,可以直接复制: 1 2 3 4 5 6 # 创建 Hugo 站点并初始化 cd myhugo mkdir -p content/posts # 复制文章 cp /path/to/hexo/source/_posts/*.md content/posts/ 需要调整的地方 Hexo 写法 Hugo 写法 说明 categories: [技术, 开发] categories: ["技术", "开发"] 层级分类需要显式声明为嵌套数组 abbrlink: xxx abbrlink: xxx 相同,需要配合 shortcode <!-- more --> ` ...

2026-04-29 · 10 分钟 · 4589 字 · XieJava

写了一个WebDAV的Skill解决OpenClawAI助手跨平台协作难题

🤔 为什么需要 WebDAV 技能? 痛点 在使用 OpenClaw 构建 AI 团队的过程中,我遇到了一个棘手的问题:人机协同跨平台协作断裂,AI agent、本地文件、异地远程访问三者之间缺少桥梁,OpenClawAI 助手生成的东西在本地,我无法拿到,只能让它发邮件或让它放云盘或NAS ,但是AI 助手无法直接访问 NAS 存储。 具体场景包括: ...

2026-04-11 · 7 分钟 · 3386 字 · XieJava

OpenClaw:让安全工具真正「活」过来

前言 作为一个混迹安全圈多年的博主,我用过不少工具:Nmap 跑端口、Metasploit 打漏洞、Burp Suite 抓包… 但说真的,命令行敲久了真的会腻。 ...

2026-03-24 · 4 分钟 · 1734 字 · XieJava

OpenClaw小白安装部署完全指南

🦞 OpenClaw 小白安装部署完全指南 作者:小强(Xiejava的AI助手) 更新时间:2026-03-10 适用版本:OpenClaw 2026.2.x 难度等级:⭐⭐☆☆☆(适合新手) ...

2026-03-10 · 7 分钟 · 3043 字 · XieJava

ClaudeCode安装教程(小白版)

什么是 Claude Code? Claude Code 是一个智能编码助手,它可以在你的命令行终端中运行。你可以像和真人聊天一样,用自然语言告诉它你想做什么(比如"帮我写一个函数"、“修复这个bug”),它会自动帮你完成代码编写、调试、重构等任务。 ...

2026-02-27 · 5 分钟 · 2377 字 · XieJava

网络安全资产画像实战

资产是安全防守的基石。如果你不知道自己有什么,就不可能保护好它们。在网络安全攻防实战中,企业对自己资产的了解程度往往远低于攻击者。攻击者只需要找到一个入口点,而防守者需要保护所有可能的入口,资产画像就是解决这个问题的核心方法论。 ...

2026-02-20 · 4 分钟 · 1526 字 · XieJava

让Claude Code写了个运维健康检查的Skill还挺好用的

摘要 手头上有几台服务器,经常要对服务器进行健康检查、安全检查等。这几天让ClaudeCode自己写了个Skill这样就一句话活就让AI给干了。本文详细介绍了如何使用Claude Code AI辅助开发工具,从零开始构建一个生产级运维健康检查的Skill。重点阐述了整体架构设计、核心功能实现细节以及实际应用效果。该系统采用模块化设计,提供三大检查模块(基础健康检查、深度安全审计、Docker容器监控),支持双格式输出(Markdown人工可读 + JSON机器可处理),具有良好的可扩展性和兼容性。 ...

2026-01-20 · 22 分钟 · 10574 字 · XieJava

为了管好IP我上了一套开源的IP管理系统phpIPAM

通常,网络或系统管理员会使用一个电子表格来记录IP地址的分配信息,然而,随着网络中的设备越来越多依赖于电子表格并不方便,十分容易出错,想管理好这些加入网络中的设备,就得有个更方便的工具。就我家里的网络而言,接入的设备就已经接近40个了,亟需找这么一个工具来记录和管理这些IP,目前找到的比较好用又轻量化的IP管理工具就是phpIPAM。 ...

2025-12-19 · 3 分钟 · 1413 字 · XieJava

5分钟,我搭了一套AI知识库

一直以来都想把我的文档都集中起来建一套知识库,方便统一的搜索查询和调用。我用过很多的文档编写管理工具有在线的、离线的,包括有有道云笔记、语雀、飞书、Notion、Obsidian等。这些工具编写管理文档还可以但是要做为一个知识库还远远不够。我认为知识库不但要解决“知识存哪里” 的问题,更要解决 “知识怎么用” 的痛点,能够将多源的知识内容进行聚合,方便检索查询和使用。 ...

2025-12-09 · 6 分钟 · 2712 字 · XieJava