惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
LINUX DO - 热门话题
Blog — PlanetScale
Blog — PlanetScale
博客园 - Franky
J
Java Code Geeks
腾讯CDC
博客园 - 聂微东
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Last Week in AI
Last Week in AI
量子位
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
Google DeepMind News
Google DeepMind News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Schneier on Security
C
CERT Recently Published Vulnerability Notes
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Securelist
AWS News Blog
AWS News Blog
GbyAI
GbyAI
L
LINUX DO - 最新话题
大猫的无限游戏
大猫的无限游戏
Forbes - Security
Forbes - Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Attack and Defense Labs
Attack and Defense Labs
C
CXSECURITY Database RSS Feed - CXSecurity.com
Y
Y Combinator Blog
W
WeLiveSecurity
T
Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
P
Proofpoint News Feed
D
DataBreaches.Net
博客园 - 三生石上(FineUI控件)
V
V2EX
N
News and Events Feed by Topic
Google DeepMind News
Google DeepMind News
D
Docker
The Hacker News
The Hacker News
A
About on SuperTechFans
Security Latest
Security Latest
NISL@THU
NISL@THU
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
博客园_首页
H
Hacker News: Front Page

分享创造

分享 KCase 脑图测试用例生成平台(AI 辅助生成测试用例) 标签页囤积症自救:写了个插件 TabRack,主打快速检索、自动分类和 AI 摘要 [file-preview]一个比较全面的在线文件预览组件库-支持 react 和 vue 撸了 iOS 个[极简水印相机],直接免费 做了一个 V2EX Skill 写了个 iOS 打码 App「遮鸭 Maskduck」,纯离线免费 35 岁前端,裁员失业后,我花 1 个月做了个 AI 生图网站 亲身经历猫咪急症,我做了一款猫狗疼痛检测工具,希望能救你家毛孩一命 如何用 AI 做比较酷炫的落地页? 求真!最近 AI 生图的能力强到可怕 开源一个查看 k8s 的菜单栏工具-kubebar Packpour:我做了个专门给 App Store Connect 填多语言元数据的小工具 面对 140 年一遇的超级厄尔尼诺,我做了个全球监测小站 做了一个自动翻译的 Hacker News 客户端 做了一个 AI 头像生成器,可以免费生成 2 次 [送码 50 个] 自己手搓了个高颜值的倒数日 App——拾光机,求 V 友们指点 一个将苹果健康 APP 数据导出的工具,然后把你的数据喂给 AI 分析 我做了一个叫「订阅斩」的 iOS App,专门对付那些悄悄扣钱的订阅 做了个草率的日麻互动漫画,听听反馈 喜欢自己洗车的朋友们,我用 ai 做了一款洗车小程序 -- 洗车志 感谢 V2EX 上各位 NAS🍆 和 Datahoarder 玩家的关注和真实反馈!作为个人开发者,能得到这么多硬核玩家们的讨论,我非常荣幸。 用 AI 开发熊孩子自律的小程序 用 OpenClaw 搭建个人运动助手 今天摸鱼给 NanaAI 也接入了 GPT-Image-2 [Video Companion]一个 chrome 插件,解决大多对视频操作的需求~欢迎使用提 bug AI 时代,做产品简单了,把产品推广出去却变的更难了~ bestskills.dev - Skills 精选和评测站点 免 ROOT 强力卸载安卓广告软件 一个 All In One 的运维工具,支持 SSH、数据库、Redis 管理 [开源] Codeg V0.10:专注于代码生成的多智能体 IDE(cc、codex、gemini、opencode……),新版本重构了工作区,飞一般的体验,支持桌面端、服务器部署 老婆嫌鼻型不完美?我做个医美 AI,帮你一键分析变美效果! BrandMaker-3 分钟帮你搞定品牌资产设计 [开源·Actionow] 包含 Agent 辅助·团队协作·多租户·积分系统的 AI 影视创作 SaaS 平台 OCR 发票识别服务 编程小白用 Nextjs Saas 搭建的第一个 GPT Image 2 体验站 希声 (Still) :为 Audiobookshelf 打造的 iOS 原生客户端 Opus 真的牛炸了! 5 天和比 Mermaid 更专业的图表渲染引擎 最近在做一个 OPC 社区,欢迎大家注册。 做了一个内网/本机用的 todo 系统(rbtodo) 昨天上线一个推理密码的小游戏,大家有空玩玩。 用 golang 写了,一套面向个人音乐资产的本地优先音乐系统 自己做的 GPT Image 2 生图网站 可白嫖 Codex 设计的垃圾小游戏,玩完想吐 写了一个 NestJS 中文文档站 分享一个刚上线就挂的网站:蹭词需注意啊 深夜开源 OpenVibble,不需要开发板也可蓝牙连接 Claude Desktop 和 CC 监工了! Rust 写的 ML 驱动的本地漫画翻译器,一键汉化本子! 用 AI 帮助写简历和准备面试,给大家推荐这个我们开发的使用求职助手网站 给猫梳毛小游戏 Claude Code 小白免费从入门到精通,系列视频教程,第一期 一个把单词、句子、阅读、复习全打通的英语学习小程序 - “匠心英语学习助手” 年前说要把 macOS 的文件备份应用 savepoint 开源的,但是耽误了一阵子 做了个开源的 AI 代码安全智能体 mythos-agent,想在 V 站求轻拍 一个小项目:快速清理磁盘大文件的 Python 代码 我用 Agent 写了个 NFL(美国国家橄榄球联盟)随机生成器 & 抽签转盘 Basevolt: 我做了一个本地优先的数据库管理工具,一分钟生成管理后台 vibe 了一款记忆训练游戏 iOS 照片备份 App「🍉西瓜备份」上线,直接免费 我也来分享一个小游戏《勇闯霍尔木兹海峡》 solo 做了个 AI 图片转视频的工具站,来 V 站交个作业 大家好,我们的出海 GEO 平台 - Dageno AI,今天正式在 Product Hunt 上线了,诚邀大家来支持我们一票! 一个自动化工具,操作浏览器,常用功能支持 hub, LLM 友好 写了个双人爱之语测试网站,帮我和对象解决了多年的矛盾 开发了一个 patches 风格的数字矩形游戏,欢迎来挑战 BoringTun 不做 manager,那我用 Rust 做一个: WG-FRIEND PushGo,全新消息推送 App,开源免费,支持 iOS / watchOS / macOS / Android 做了一个 Typeless 平替,便宜 10 倍,用 Claude Code / Agent 时再也不用憋着慢慢打字了 一个 MacOS 右键新建文件的拓展应用,我知道本站大佬应该用不上😄 个人开发了 3 年的数据可视化工具发布桌面端了 产品派新版发布了,增加通知偏好邮件通知功能,修复发布产品网址的问题 我们把给不同产品单独写的 AI 客服,做成了一个通用产品 什么样的独立开发产品真的能赚到钱? GridMove for macOS:按窗口任意地方移动窗口,或者快速调整为自定义布局 写了个小工具,试图把 Everything 的体验带到 Mac 上 不只是 NAS:走出局域网, Nas Player Pro 依然能打 做了一个极简的分析澳门博彩游戏胜率和数学期望的网站,希望能对有这方面兴趣的兄弟们有点用 「开源」SONIC-LENS / MUSIC ARCHIVE / MAC + iPhone + iPad [开源] Vela — 一款本地优先、隐私安全的 AI 长文/小说创作 IDE gpt image 2 貌似全量上线了,捡漏了一个不错的域名,再试一次 分享几个效率小工具,在 Finder 中一键使用 claude code / codex-cli / opencode-cli / gemini-cli 打开项目 好消息,貌似我的开源项目被盗版,发布到了微软商店 # [拉票] 我用 TRAE SOLO 做了个 macOS App「到站请下车」(求支持) 越来越勤劳了,做了一个交易的小产品,即将上线…… 大功能更新再发一次:订小阅 - 小程序管理你的订阅 写了一个 skills,用于判断某些产品是否是智商税 打磨了一款远程 vibe 工具 给大家介绍一下我的第六个想法:免安装的 mac 磁盘空间清理利器 mac-space-cleanup skill 做了个剪贴板&截图增强工具 养小龙虾的朋友们快来测 agent 的 mbti🤖 任何一个 agent 都可以一键参与测试 如果你做过 segmentation,可能默认用了太久 argmax 跟风复刻了个 Web Harmonium,有点意思 分享下自己 vibecoding 的 android ssh 软件,基于 connectbot + frp 来实现 尝试用 claude code 做了一个完整的 saas 订阅站 PasteMemo v1.5.0:接力模式大重构,自动化接入 macOS 快捷指令 开源复刻 CodeX Computer Use 的「权限申请」交互,目前没看到比这个更细致的 做了个 Claude Code 多账号切换启动器,不用再反复 /login 了 code is cheap, show me your design ——分享一个我的 AI 时代的软件开发范式 折腾了个自托管 Docker Registry —— 一个镜像跑起来就是完整的(UI + 账户 + 权限) 用时一个月,开发了一款适合上班摸鱼的 web 端 Roguelike RPG 游戏 用 JS+HTML+CSS 做了一款网页版宝可梦游戏
Vibe Coding 了一个博客框架 - V2EX
yuanyuan11 · 2026-06-20 · via 分享创造

title: date: 2026-04-24

从 2022 年自己搭建博客至今,中间折腾了不少东西,框架换来换去,记录在这里 博客再改版 但是没有一个让我自己最满意的。而为了写个博客去学习它的模板语法、配置方式,感觉很麻烦,一直都想自己写一个,直到最近才抽空用 copilot 写了一个基于 python 的框架,核心代码就几百行,不依赖任何外部库,自己控制所有逻辑,想咋样就咋样,出问题也知道去哪修。

这个博客框架有以下几个我比较喜欢的特性:

短链

_slug_hash 函数根据每个文章的文件夹名称,使用 CRC24 哈希并通过 base36 输出 5 位全小写短链,直接映射到主域名下面,比如 https://jiaoyuan.org/5xbok/,既干净又便于分享,也不会产生冲突。

BASE62 = "0123456789abcdefghijklmnopqrstuvwxyz"
RESERVED_SLUGS = frozenset({"assets", "logs", "readme", "page", "atom", "posts"})

def _crc24(data: bytes) -> int:
    crc = 0xB704CE
    for b in data:
        crc ^= b << 16
        for _ in range(8):
            crc <<= 1
            if crc & 0x1000000:
                crc ^= 0x1864CFB
    return crc & 0xFFFFFF

def _slug_hash(name: str) -> str:
    val = _crc24(name.encode())
    result = []
    while val > 0:
        result.append(BASE62[val % len(BASE62)])
        val //= len(BASE62)
    return "".join(reversed(result)).rjust(5, "0")

load_posts 读取文章时自动计算短链,并且通过 used 集合做唯一性检查,撞了自动加后缀:

def load_posts(cfg, engine):
    used = set()
    for folder in sorted(posts_dir.iterdir()):
        slug = _slug_hash(folder.name)
        if slug in used or slug in RESERVED_SLUGS:
            i = 1
            while f"{slug}-{i}" in used:
                i += 1
            slug = f"{slug}-{i}"
        used.add(slug)

渲染优化

现在很多博客框架我觉得都太复杂,为了适应大多数人的要求,加入了很多冗余的功能,我这里想办法减少了前端渲染和 js 的加载。Markdown 的渲染是自己写的,没有用任何现有的解析器。支持的语法包括标题、段落、列表、引用、表格、代码块、行内样式这些常用功能,日常写文章完全够用。

代码块这里支持 bash 、python 、c 、r 、html 、css 、c# 这些语言的语法高亮,由 _highlight_source 方法在构建时即直接渲染为带 token 类名的 HTML 标签,不加载任何 JS ,速度快了很多,并且适配暗色和亮色模式。

def _highlight_source(self, code: str, lang: str) -> str:
    kw = {"python": {"def", "class", "if", "else", "for", ...}, ...}
    token_re = re.compile(
        r"(?P<comment>#..."
        r")|(?P<string>\"...\")"
        r"|(?P<keyword>\b...\b)"
        r"|(?P<number>\b\d+\.?\d+\b)"
    )
    for m in token_re.finditer(code):
        if m.lastgroup == "keyword":
            out.append(f'<span class="tok-k">{text}</span>')
        elif m.lastgroup == "string":
            out.append(f'<span class="tok-s">{text}</span>')

CSS 变量根据主题切换,无需额外 JS 处理高亮颜色:

:root {
  --tok-k: #0550ae; /* keyword */
  --tok-s: #0a3069; /* string */
  --tok-c: #6e7781; /* comment */
}
[data-theme="dark"] {
  --tok-k: #79c0ff;
  --tok-s: #a5d6ff;
  --tok-c: #8b949e;
}

页面生成后直接写静态 HTML 文件,Nginx 直出,不需要任何后端处理或数据库查询:

def _write(public_dir: Path, rel_out_dir: str, html_text: str) -> None:
    out = public_dir / rel_out_dir
    out.mkdir(parents=True, exist_ok=True)
    (out / "index.html").write_text(html_text, encoding="utf-8")

数学公式渲染用的 KaTeX ,通过正则检测文中是否包含 $...$$$...$$ 或者 front matter 是否声明 math: true,只有在需要的时候才加载 KaTeX 的 CSS 和 JS:

MATH_RE = re.compile(r"\$\$.*?\$\$|\$[^$\n]+\$", re.DOTALL)

def _load_markdown_file(path, rel_url, out_dir, is_log, engine):
    body = ...
    has_math = bool(MATH_RE.search(body)) or bool(meta.get("math"))
    return ContentItem(has_math=has_math, ...)

评论系统

评论基于 GitHub Issues 。每篇文章底部有一个按钮,默认链接到新建 issue 页面,标题已经预填好。同时页面加载后会通过 GitHub API 搜索匹配该标题的现有 issue ,如果找到就直接把按钮链接跳转过去,不需要建一堆重复的讨论。

# config 里配置评论仓库
cf = {"comment_repo": "imjiaoyuan/imjiaoyuan.github.io"}

# 渲染评论区域
btn = f'<a href="https://github.com/{repo}/issues/new?title={title}">...</a>'

# 加载后自动匹配已有 issue
fetch("https://api.github.com/search/issues?q=" + q)
  .then(r => r.json())
  .then(data => {
    if (data.total_count > 0) btn.href = data.items[0].html_url
  })

不用额外注册任何第三方评论服务,仓库的 Issues 就是数据库。


整个博客就一个 GitHub 仓库,内容、源码、生成的静态文件都在里面。提交后 GitHub Actions 会自动执行构建,生成 HTML 然后部署到 Pages 。整个过程全自动,不用手动敲命令,也不用登录什么后台。本地构建的时候可以使用 run.py,其包含三个命令:

python run.py -d            # 构建静态站点到 public/
python run.py -s            # 构建并启动开发服务器(热重载)
python run.py -n post-name  # 创建新文章

写博客对我来说就是一种记录,把脑子里的东西倒出来整理一下。很多东西不记下来很快就忘了,写下来还能回头看看当时的自己是怎么想的,也挺有意思。