基于Hugo与Git构建个人知识库:纯文本、版本控制与静态站点实践

news2026/5/4 16:32:41
1. 项目概述与核心价值最近在整理个人知识库和项目文档时我又一次被一个老问题困扰如何高效地管理那些散落在各处、格式不一的笔记、代码片段和临时想法市面上的笔记软件要么太重要么太封闭要么就是功能太单一。直到我重新审视并深度使用了Hengo这个项目才感觉找到了一个相当优雅的解决方案。Hengo 不是一个新概念它本质上是一个基于 Git 的、纯文本的、高度可定制化的知识管理系统。但它的魅力在于它将“简单”和“强大”这两个看似矛盾的特质结合得非常好特别适合开发者、技术写作者以及任何希望完全掌控自己数字知识资产的人。简单来说Hengo 提供了一个框架和一套工具让你能用最熟悉的纯文本比如 Markdown来写一切然后用 Git 进行版本管理再通过静态站点生成器通常是 Hugo发布成一个可搜索、可浏览的静态网站。你的所有知识最终都变成了一堆.md文件和一个 Git 仓库彻底摆脱了平台绑定的风险。听起来是不是有点像很多技术博客的做法没错但 Hengo 将其理念扩展到了整个知识工作流从 fleeting notes闪念笔记到 literature notes文献笔记再到 permanent notes永久笔记都能在这个体系内流畅运转。接下来我就结合自己搭建和使用的经验带你彻底拆解 Hengo看看它如何从零开始构建一个属于你自己的、永不丢失的“第二大脑”。2. 核心架构与设计哲学拆解2.1 为什么是“纯文本 Git 静态站点”这个技术栈选择是 Hengo 的灵魂也是其长期价值的保障。我们来逐一拆解背后的考量纯文本Markdown这是可读性、可移植性和长寿性的基石。.md文件在任何操作系统上都能用最简单的文本编辑器打开五十年后依然可以。它不依赖任何专有软件或数据库。对于知识记录来说格式足够丰富标题、列表、代码块、链接、图片又不会过于花哨而干扰内容本身。更重要的是纯文本是“可编程”的你可以用grep,sed,awk等命令行工具批量处理也可以用任何编程语言进行解析和转换这为自动化提供了无限可能。GitGit 不仅是版本控制工具更是时光机和协作平台。每一次修改都有迹可循你可以大胆地删改而不用担心丢失历史。通过分支你可以尝试不同的笔记组织方式比如尝试 Zettelkasten 卡片盒法成熟后再合并。Git 的分布式特性意味着你的知识库可以轻松地在你的笔记本电脑、家里的 NAS、公司的电脑以及 GitHub/GitLab 等远程仓库之间同步实现真正的多端备份和访问。静态站点生成器Hugo这是将私有知识库“发布”为可浏览、可搜索的网站的关键。Hugo 速度快、主题丰富能将你的 Markdown 笔记快速转换成 HTML。这样一来你不仅可以在本地用编辑器查看还可以在浏览器里以更友好的方式浏览利用站内搜索功能快速定位内容。生成的静态网站可以部署在几乎任何地方Netlify, Vercel, GitHub Pages甚至你自己的服务器成本极低甚至免费。这个架构的巧妙之处在于每一层都依赖成熟、开源、长期维护的基础设施最大程度地避免了“轮子”和单点故障。你的数据Markdown文件和配置Hugo主题、模板完全分离并且都掌握在自己手中。2.2 Hengo 的工作流从输入到输出Hengo 倡导的是一种渐进式总结和知识连接的工作流深受 Zettelkasten卡片盒笔记法和 PARA项目-领域-资源-归档方法的影响。其核心流程可以概括为四个阶段捕获Capture随时随地记录想法。这可以通过一个简单的命令行脚本、一个手机端的 Markdown 编辑器同步到指定文件夹或是 Obsidian、Logseq 等本地优先的笔记软件来完成。关键是将所有输入都汇集到一个统一的“收件箱”Inbox目录下。处理与组织Process Organize定期比如每天或每周处理收件箱。为每一条笔记添加合适的元数据如标签、分类、创建日期根据内容将其移动到对应的分类文件夹如projects/,areas/,resources/并最重要的是思考这条笔记与已有笔记之间的关联通过双向链接[[笔记标题]]将它们连接起来。创作与输出Create Output当知识网络积累到一定程度特定的主题会自然浮现。此时你可以基于相关的笔记群轻松地组合、提炼创作出博客文章、技术文档、项目方案甚至是一本书。Hugo 会负责将你的笔记和它们之间的链接关系渲染成可导航的网站。回顾与迭代Review Refine通过定期浏览生成的静态网站或者使用笔记软件的关系图谱功能你可以发现自己知识网络中的薄弱环节或新的连接点从而驱动进一步的学习和记录形成正向循环。这个工作流不是僵化的Hengo 提供的更像是一个工具箱和最佳实践指南你可以根据自己的习惯进行裁剪。比如你可以完全在命令行下用 Vim 和 Git 完成所有操作也可以搭配图形化的 Obsidian 来获得更直观的链接图谱体验。3. 环境准备与核心工具链配置3.1 基础环境搭建要运行 Hengo你需要准备以下几样东西它们都是跨平台的Git版本控制核心。确保已安装并能正常使用git命令。Hugo (Extended 版本)静态站点生成器。Hengo 通常推荐使用 Hugo并且为了支持一些高级主题特性如 SCSS建议安装 Extended 版本。文本编辑器或专业笔记软件你可以选择极简的 VS Code、Sublime Text也可以选择对 Markdown 和双向链接支持更好的 Obsidian、Logseq。我个人的组合是日常快速记录用 Obsidian因为它能实时渲染链接和图谱批量处理和 Git 操作则在命令行完成。安装 Hugo Extended 版本是第一个小坑。以 macOS 为例使用 Homebrew 安装最方便brew install hugo安装后用hugo version确认是否包含“extended”字样。对于 Windows 用户可以从 GitHub Releases 页面直接下载解压并将可执行文件路径加入系统环境变量。3.2 初始化你的 Hengo 知识库Hengo 本身不是一个需要“安装”的软件它是一个项目模板和一套约定。最快捷的开始方式是克隆其官方示例仓库# 克隆示例仓库到本地并命名为 my-knowledge-base你可以改成任何名字 git clone https://github.com/Henrique-Henrique/hengo.git my-knowledge-base cd my-knowledge-base这个仓库已经预置了 Hugo 站点结构、一个适合知识管理的主题通常是类似hugo-theme-stack或自定义的简洁主题以及一些示例笔记和目录结构。接下来你需要将其初始化为你自己的 Git 仓库# 删除原有的 Git 历史从头开始 rm -rf .git git init git add . git commit -m Initial commit: My Hengo knowledge base现在你就拥有了一个完全属于你自己的知识库骨架。目录结构大致如下my-knowledge-base/ ├── archetypes/ # Hugo的内容模板 ├── content/ # **核心所有笔记都在这里** │ ├── inbox/ # 收件箱存放未处理的笔记 │ ├── notes/ # 永久笔记 │ ├── posts/ # 博客文章可选 │ └── _index.md # 主页内容 ├── data/ # 站点数据文件 ├── layouts/ # 布局模板可覆盖主题默认布局 ├── static/ # 静态资源图片、附件 ├── themes/ # Hugo主题 ├── config.toml # **核心站点配置文件** └── .gitignore # Git忽略文件content/目录是你的主战场config.toml则控制着整个站点的行为和外观。3.3 关键配置详解config.tomlHugo 的配置文件是定制的核心。打开config.toml你需要关注以下几个关键部分基础站点信息baseURL https://your-username.github.io/ # 如果你打算部署到GitHub Pages languageCode zh-cn title 我的知识库 theme hugo-theme-stack # 这里替换为你实际使用的主题名baseURL非常重要它会影响所有生成的绝对链接。在本地开发时可以暂时留空或设为“/”。内容管理配置[params] # 启用页面最后修改时间显示这对笔记很重要 showLastMod true # 启用阅读时间估算 showReadingTime true # 设置笔记的默认内容类型 defaultContentType notes # 对于笔记我们可以配置特定的输出格式 [outputs] home [HTML, RSS] section [HTML, RSS] # 为 notes 这个内容类型也输出HTML页面 notes [HTML]前端主题配置 这部分取决于你使用的主题。以常见的知识管理主题为例你可能需要配置导航栏、侧边栏、搜索功能等。通常主题的文档或示例config.toml中会有详细说明。一个重要的配置是启用站内搜索这通常需要主题支持并集成 Lunr.js 或 Fuse.js 等客户端搜索库。注意在修改主题配置前最好先将主题文件夹复制到layouts/或assets/目录中进行覆盖式定制而不是直接修改themes/下的文件。这样在主题升级时你的定制不会被覆盖。具体方法是在项目根目录创建同名的目录结构Hugo 会优先使用项目根目录下的文件。4. 核心工作流实操从一条笔记到知识网络4.1 创建与编辑笔记元数据与双向链接在 Hengo 体系下一篇笔记不仅仅是一个 Markdown 文件。为了让它能被 Hugo 正确解析和归类我们需要在文件头部添加Front Matter前言这是一种 YAML、TOML 或 JSON 格式的元数据块。创建一个新笔记例如content/notes/my-first-note.md--- title: 理解Hengo的核心架构 date: 2023-10-27T10:00:0008:00 lastmod: 2023-10-27T15:30:0008:00 draft: false tags: [hugo, git, knowledge-management] categories: [技术] summary: 本文拆解了Hengo所采用的‘纯文本Git静态站点’技术栈的深层原因与优势。 --- # 理解Hengo的核心架构 Hengo 不是一个软件而是一套**方法论和工具链**... 它的三大支柱是 1. **纯文本 (Markdown)**: 保障了数据的可移植性与长寿性... 2. **Git**: 提供了强大的版本控制、历史追溯与多端同步能力... 3. **静态站点生成器 (Hugo)**: 将私有笔记转化为可公开浏览、可搜索的网站... ## 为什么这个组合如此强大 这个组合巧妙地规避了... [[笔记锁定的风险]]。同时它鼓励... [[渐进式总结]] 的工作方式。 --- ## 相关链接 - 上一级: [[技术索引]] - 相关概念: [[Zettelkasten]], [[数字花园]]Front Matter 字段解析title,date: 必备用于排序和显示。lastmod: 非常重要对于笔记内容会不断更新这个时间戳能帮助你和读者识别最新版本。draft: false: 发布笔记时必须设为false否则 Hugo 不会生成该页面。tags和categories: 分类和标签是组织内容的重要维度。建议标签保持扁平化、具体化类别可以有一定层级。summary: 摘要会显示在文章列表里有助于快速浏览。双向链接的魔法 注意笔记正文中[[笔记锁定的风险]]这样的语法。这是 Markdown 的扩展语法大部分 Hugo 主题和 Obsidian 都支持它创建了一个内部链接。当 Hugo 生成网站时它会将这些[[ ]]转换为指向对应笔记页面的超链接。如果目标笔记不存在它可能显示为待创建状态取决于主题。这是构建知识网络的核心操作。4.2 组织与分类文件夹结构策略如何组织content/下的文件夹见仁见智。Hengo 示例提供了一种参考但你可以建立自己的体系。我结合 PARA 方法形成了这样的结构content/ ├── inbox/ # 收集箱所有临时想法、摘录先丢这里 ├── notes/ # 永久笔记库 │ ├── areas/ # 领域知识持续关注的领域如“机器学习”、“产品设计” │ ├── projects/ # 项目相关笔记有明确起止时间 │ ├── resources/ # 资源索引书籍、文章、工具等 │ └── meta/ # 元笔记关于如何记笔记的笔记 ├── posts/ # 正式的博客文章由笔记提炼而成 └── pages/ # 静态页面如关于我、站点地图关键原则是文件夹结构用于粗粒度分类标签用于细粒度、跨维度的关联。不要创建过深的文件夹嵌套建议不超过3级否则会加大文件定位的难度。利用好tags和双向链接让信息自己“生长”出结构。4.3 本地开发与实时预览Hugo 提供了一个极佳的本地开发服务器可以实时预览你对笔记和站点的修改# 在项目根目录执行 hugo server -D-D参数表示同时构建草稿draft: true内容方便预览未完成的笔记。执行后打开浏览器访问http://localhost:1313你就能看到你的知识库网站了。修改任何 Markdown 文件保存后浏览器页面会自动热重载几乎无延迟体验非常流畅。这个本地服务器是你日常整理和查看笔记的主要窗口。你可以在这里检查链接是否正常、排版是否满意。4.4 生成静态网站当一批笔记整理完毕准备“发布”时运行生成命令# 生成最终静态网站到 public/ 目录 hugo如果只想生成非草稿内容直接运行hugo即可。这个过程非常快Hugo 会将所有content/下的 Markdown 文件、主题模板、静态资源等编译成纯粹的 HTML、CSS、JS 文件输出到public/文件夹。这个文件夹里的内容就是可以部署到任何 Web 服务器的最终产品。5. 部署与自动化发布流程5.1 部署到 GitHub Pages免费方案GitHub Pages 是个人知识库最方便、最经济的托管选择。操作步骤如下在 GitHub 上创建新仓库仓库名格式为你的用户名.github.io例如henrique-henrique.github.io。这是使用 GitHub Pages 个人站点的特殊命名约定访问地址就是https://你的用户名.github.io。将本地仓库与远程关联git remote add origin https://github.com/你的用户名/你的用户名.github.io.git创建部署脚本在项目根目录创建一个deploy.sh脚本Windows 用户可创建deploy.bat自动化构建和推送流程。#!/bin/bash echo -e \033[0;32mDeploying updates to GitHub...\033[0m # 生成静态网站 hugo # 进入 public 文件夹 cd public # 初始化 Git如果第一次并添加更改 git add . # 提交更改 msgrebuilding site $(date) if [ -n $* ]; then msg$* fi git commit -m $msg # 推送到远程仓库的 main 分支 git push origin main # 回到项目根目录 cd ..给脚本执行权限chmod x deploy.sh。分离源文件与生成文件推荐一个更清晰的做法是使用两个 Git 分支。main分支存放public/文件夹的内容即生成的网站。GitHub Pages 会自动从这个分支提供服务。source分支存放整个 Hugo 项目的源文件包括content/,themes/,config.toml等。 这样你的写作历史源文件和发布历史生成文件互不干扰。你可以配置 GitHub Actions 自动化这个过程每当向source分支推送更新时自动运行hugo构建网站并将结果提交到main分支。5.2 使用 GitHub Actions 实现自动化对于上述的双分支策略GitHub Actions 是完美的自动化工具。在项目根目录创建.github/workflows/gh-pages.yml文件name: Deploy Hugo site to Pages on: push: branches: [ source ] # 当 source 分支有推送时触发 workflow_dispatch: # 允许手动触发 permissions: contents: write # 授予写入内容的权限 jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkoutv4 with: submodules: recursive # 如果主题是子模块需要这个 fetch-depth: 0 - name: Setup Hugo uses: peaceiris/actions-hugov2 with: hugo-version: latest extended: true # 使用 Extended 版本 - name: Build run: hugo --minify # 构建并压缩输出 - name: Deploy uses: peaceiris/actions-gh-pagesv3 with: personal_token: ${{ secrets.PERSONAL_TOKEN }} # 需要在仓库设置中配置的 Secret publish_dir: ./public publish_branch: main # 部署到 main 分支 force_orphan: true # 保持 main 分支纯净只包含最新构建配置好后你只需要向source分支推送笔记更新几分钟后你的线上知识库就会自动更新。完全实现了“写笔记 - Git提交 - 自动发布”的无缝流程。实操心得在config.toml中baseURL需要根据你的最终访问地址正确设置。对于用户名.github.io仓库通常是“https://用户名.github.io/”。如果部署在子路径下如https://用户名.github.io/my-blog/则需设置为“/my-blog/”否则 CSS 和 JS 资源会加载失败。6. 高级技巧与个性化定制6.1 优化搜索体验静态站点的搜索是一个挑战。常见的解决方案有客户端搜索 (Lunr.js / Fuse.js)Hugo 在构建时生成一个包含所有文章标题、内容和链接的 JSON 索引文件。用户在浏览器中搜索时JavaScript 库会加载这个 JSON 文件并在本地进行匹配。优点是无需服务器端支持完全静态缺点是当笔记数量巨大超过1000篇时索引文件体积会变大影响初次加载速度。大部分 Hugo 知识管理主题都内置了此功能。第三方搜索服务 (Algolia)提供强大、快速的云端搜索服务有免费额度。需要将站点内容通过 API 提交到 Algolia 创建索引并在网站中集成其搜索框组件。适合对搜索速度和相关性排序要求高的场景。对于个人知识库客户端搜索通常足够。确保你的主题启用了该功能并在config.toml中配置索引包含的字段如标题、内容、摘要。6.2 管理图片与附件对于图片最佳实践是将其放在static/目录下例如static/images/2023/10/。在 Markdown 中引用时使用相对站点的根路径![架构图](/images/2023/10/hengo-arch.png)这样 Hugo 在构建时会原样复制到public/对应位置。对于大量图片可以考虑使用图床如 Imgur, SM.MS或对象存储如 AWS S3, 腾讯云 COS然后在笔记中引用绝对 URL以减轻 Git 仓库的负担和加速页面加载。6.3 自定义主题与布局Hugo 的主题系统非常灵活。你可以从修改config.toml中的主题参数开始比如颜色、字体、布局开关。更深度的定制需要覆盖主题模板。例如你想修改笔记的单页模板可以在项目根目录创建layouts/_default/single.html文件。Hugo 会优先使用你这个文件而不是主题中的同名文件。你可以从主题的对应文件复制过来再进行修改。常用的定制点包括在文章末尾自动显示“相关文章”基于标签匹配。修改导航栏增加一个“随机一篇”的链接。添加自定义的 Shortcodes短代码用于实现特殊的内容块如警告框、折叠面板等。6.4 备份与同步策略虽然 Git 本身就是一个备份工具但为了万无一失建议实施多级备份本地 Git 仓库你的工作副本。远程 Git 仓库 (GitHub/GitLab)主要的远程备份和协作中心。定期本地磁盘备份使用 Time Machine (macOS)、rsync 等工具将整个项目文件夹备份到外部硬盘或 NAS。云存储同步可以使用 Dropbox、iCloud Drive 或 OneDrive 同步content/目录注意避开public/和resources/_gen等生成目录作为另一层实时备份。一个简单的 rsync 备份脚本示例#!/bin/bash BACKUP_DIR/Volumes/BackupDisk/MyKnowledgeBase SOURCE_DIR$HOME/Documents/my-knowledge-base rsync -avz --delete $SOURCE_DIR/ $BACKUP_DIR/ --excludepublic/ --exclude.git/ echo Backup completed at $(date)7. 常见问题与故障排除实录在实际使用 Hengo 的过程中你可能会遇到以下典型问题。这里记录了我的排查经验和解决方案。7.1 Hugo 构建或服务器启动失败问题现象执行hugo server或hugo时报错并终止。排查步骤检查 Hugo 版本hugo version确认是 Extended 版本。某些主题依赖 Extended 版的 SCSS 处理功能。检查配置文件语法config.toml或config.yaml中可能存在语法错误如括号不匹配、缩进错误YAML格式对缩进敏感。可以使用在线 TOML/YAML 校验工具检查。检查主题依赖如果你使用了 Git Submodule 方式安装主题确保子模块已正确初始化并更新git submodule init git submodule update查看详细错误信息Hugo 的错误信息通常比较清晰。关注最后几行它会指出出错的文件和大致位置。常见错误包括Front Matter 格式错误、模板文件中使用了未定义的变量等。7.2 网站样式丢失或布局错乱问题现象本地预览或部署后网站没有样式变成纯文本。可能原因与解决baseURL配置错误这是最常见的原因。baseURL是站点根路径。如果部署在域名根目录应为“https://yourdomain.com/”如果部署在子路径如“https://yourdomain.com/blog/”则必须设置为“/blog/”注意开头结尾的斜杠。主题中 CSS/JS 的引用路径都基于这个值。主题资源未正确加载检查浏览器开发者工具F12的“网络”选项卡查看 CSS/JS 文件是否返回 404 错误。确认themes/目录下主题文件夹存在且完整。缓存问题尝试使用hugo server --disableFastRender启动并强制刷新浏览器缓存CtrlShiftR。7.3 双向链接不生效或显示为纯文本问题现象笔记中的[[链接]]没有被渲染成可点击的超链接。排查步骤确认主题支持并非所有 Hugo 主题都支持[[ ]]维基式链接。你需要使用专门为笔记优化的主题如Hugo Theme Stack,Hugo PaperMod,Blowfish等或者主题明确声明支持 “Wiki Links” 或 “Internal Links”。检查主题配置在config.toml中查看主题的配置部分是否有启用内部链接的选项。例如对于某些主题可能需要设置[markup] [markup.goldmark] [markup.goldmark.extensions] wikilinks true # 启用维基链接链接格式确保链接格式正确为双中括号[[目标笔记标题]]。如果目标笔记位于子目录可能需要包含路径如[[subdir/target-note]]。具体语法需参考你所使用主题的文档。7.4 搜索功能无法使用问题现象网站上的搜索框点击无反应或提示“索引文件未找到”。解决思路生成搜索索引客户端搜索需要 Hugo 在构建时生成索引 JSON 文件通常是index.json。确保你的config.toml中配置了正确的输出格式。例如[outputs] home [HTML, RSS, JSON] # 必须包含 JSON运行hugo后检查public/目录下是否有index.json文件。检查搜索脚本路径查看主题中搜索功能的 JavaScript 代码确认它尝试加载的 JSON 文件路径是否正确应与baseURL配置匹配。浏览器控制台报错打开浏览器开发者工具的控制台Console查看是否有 JavaScript 错误。常见错误是跨域问题如果本地用file://协议打开或 JSON 文件解析错误。7.5 Git 提交历史过于杂乱问题现象每次写作都会产生大量细碎的提交记录如“修正错别字”、“更新某一段落”使得历史记录难以阅读。优化策略使用--amend修正提交如果上次提交后只是做了小修改可以使用git commit --amend将修改追加到上一次提交中而不是创建新提交。交互式变基 (Interactive Rebase)定期比如每周对本地尚未推送的提交进行整理。git log --oneline # 查看最近提交 git rebase -i HEAD~5 # 整理最近5次提交在打开的编辑器中你可以将多个pick改为squash或fixup将它们合并成一个提交并重新编辑提交信息。为发布创建清晰的提交养成习惯将日常的“写作提交”和最终的“发布提交”分开。在运行deploy.sh脚本发布网站前可以先在source分支上做一个总结性的提交如“整理并发布10月份机器学习笔记合集”然后再推送和部署。7.6 网站访问速度慢问题现象部署后的网站特别是首页或笔记列表页加载缓慢。性能优化建议图片优化这是最大的性能杀手。确保所有图片都经过压缩。可以使用 Hugo 的图片处理功能需 Extended 版或构建管道工具如 Gulp, Webpack自动压缩。也可以使用srcset属性提供响应式图片。减少第三方资源评估主题中引入的第三方字体、分析脚本等。如果非必要可以考虑移除或自托管。启用 Hugo 压缩输出在hugo命令后加上--minify参数可以压缩 HTML、CSS、JS 文件。使用 CDN如果部署在 GitHub Pages它本身就有一定的 CDN 缓存。对于自定义域名可以考虑使用 Cloudflare 等 CDN 服务缓存静态资源。检查生成文件大小检查public/index.json搜索索引文件是否过大。如果笔记内容极多可以考虑按标签或分类分割索引或者切换到服务端搜索方案。8. 我的使用心得与进阶建议经过一年多的深度使用Hengo 这套体系彻底改变了我管理知识的方式。它带来的最大好处是“心安”——我知道我的所有笔记都是纯文本放在 Git 里没有任何平台可以将其锁定或关闭。几个关键的体会关于工具选择不要纠结于“最完美”的工具链。核心是Markdown Git。你可以用 Obsidian 编辑用 VS Code 编辑甚至用手机上的 iA Writer 编辑。只要最终文件能同步到那个 Git 仓库里Hugo 就能把它变成网站。找到让你写作最流畅的那个编辑器然后围绕它构建自动化流程。关于笔记结构前期不要过度设计分类。就从最简单的inbox/和notes/开始。强迫自己每天或每周清空一次inbox/。在移动文件到notes/时花几分钟添加几个相关的标签和[[ ]]链接。结构会在你写了 50、100 篇笔记后自然浮现那时再根据高频出现的标签或主题来创建文件夹也不迟。关于坚持知识库的威力来自于积累而积累最大的敌人是启动成本。Hengo 的本地服务器 (hugo server) 启动极快让你在 10 秒内就能进入写作和浏览状态。把这个浏览器标签页常开把它当成你的个人维基首页随时点开记录或查阅让记录成为一种无压力的习惯。一个进阶技巧自动化摘要生成。我写了一个简单的 Python 脚本在 Git 的pre-commit钩子中运行。它会扫描新增或修改的.md文件如果 Front Matter 里没有summary字段它会自动提取文章前 200 个字符去除 Markdown 标记作为摘要填充进去。虽然不完美但大大减少了手动写摘要的负担。自动化是让这套系统持续运转的关键从小处着手不断优化你的工作流。最后Hengo 不是终点而是一个坚固的起点。当你熟悉了这套玩法你可以尝试集成更多的工具用pandoc将笔记导出为 PDF 或 Word用make或just管理复杂的构建任务甚至自己写插件扩展 Hugo 的功能。最重要的是你创造和连接知识的过程被一套开放、可控、持久的技术栈所承载这本身就是数字时代的一种自由。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2578426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…