Skip to content

leichaov/6892872

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

6892872

极简付费博客。Hugo 静态站 + Notion/FlowUs 数据源 + 边缘函数付费墙。客户端零 JavaScript,首屏就是浏览器默认样式下的 HTML,参考 1986 年的网页。

它解决什么

  • 个人作者要一个付费文章系统,不想给 Substack / 知识星球交分成
  • 国内访问要快(EdgeOne 境内节点 30-80ms TTFB)
  • 海外访问要能用(Cloudflare Pages 免费档)
  • 5 年不改代码:选型都是单二进制、单文件、无框架运行时

架构

 作者 → Notion 或 FlowUs 里写文章(打 paid / price / preview 字段)
   ↓
 GitHub Action 定时拉取
   ↓
 scripts/prebuild-*.mjs  → content/posts/*.md (带 <!--more--> 标记)
   ↓
 Hugo 构建 → public/  (纯 HTML,~1KB 首屏)
   ↓
 双端部署
   ├─ Cloudflare Pages (海外, 免费)
   └─ EdgeOne Pages (境内, ¥28/月, 需备案)

 读者访问付费文章
   ↓
 边缘函数 functions/_middleware.js
   ├─ 未登录 → 直接返回预览 + 付费墙 HTML
   ├─ 已登录 → 查边缘 KV 是否购买
   │   ├─ 已购 → splice 全文进 HTML
   │   └─ 未购 → 保留付费墙
   └─ 整个过程 0 回源,0 客户端 JS

目录结构

6892872/
  hugo.toml                      # 站点配置
  bin/hugo                       # Hugo 0.160.1 extended (本地开发用, git ignored)
  layouts/                       # 1986 风主题(这就是"主题",没有 themes/ 目录)
    _default/
      baseof.html                # 基础 HTML 骨架
      single.html                # 文章页
      list.html                  # 归档/标签列表
    index.html                   # 首页
    partials/
      paywall.html               # 付费墙 UI(form)
  content/
    posts/_index.md              # 归档页元数据
    posts/*.md                   # 文章(通常由 prebuilder 生成)
  scripts/
    package.json
    prebuild-notion.mjs          # Notion → Markdown 导出
    prebuild-flowus.mjs          # FlowUs → Markdown 导出(stub)
  functions/                     # CF Pages / EdgeOne Pages Functions
    _middleware.js               # 付费墙拦截与注入
    api/
      pay.js                     # POST 创建订单 → 支付重定向
      pay-callback.js            # 支付完成回调 → 写 KV + set cookie
      login.js                   # OAuth 登录入口(dmxapi SSO)
  .github/workflows/deploy.yml   # CI/CD:拉数据 → build → 双端发布

Frontmatter 字段

title: "..."               # 必填
slug: "..."                # 必填(若 prebuilder 生成则来自 Notion/FlowUs 的 Slug 字段)
date: 2026-04-20           # 必填
tags: [...]                # 可选
paid: true                 # 是否付费文章
price: 3                   # 单位元,paid=true 时必填
preview_paragraphs: 2      # 免费预览段数;prebuilder 据此插入 <!--more-->

本地跑

./bin/hugo server -D    # 开发服务器,带 draft
./bin/hugo              # 一次性构建到 public/

拉内容(运行 prebuilder)

cd scripts
npm install
NOTION_TOKEN=secret_xxx NOTION_DATABASE_ID=xxx npm run notion
#
FLOWUS_TOKEN=xxx FLOWUS_DATABASE_ID=xxx npm run flowus

注意:目前两个 prebuilder 的 fetchPages() 都是 stub,等 Notion/FlowUs 开放 API 文档确认后补实现。interface 已定稳,不会再动。

部署

Cloudflare Pages(海外 + 海外读者)

  1. 在 CF Pages 新建项目,连 GitHub 仓库
  2. 构建命令:cd scripts && npm ci && npm run notion && cd .. && hugo --minify
  3. 输出目录:public
  4. 环境变量 / Secrets:
    • NOTION_TOKEN, NOTION_DATABASE_ID
    • DMXAPI_BASE, DMXAPI_SERVICE_TOKEN, DMXAPI_CLIENT_ID
  5. KV 绑定:创建 PURCHASES namespace,绑定到 Pages
  6. 自定义域:6892872.xyz(不备案)

EdgeOne Pages(境内 + 备案域名)

  1. 注册 .com 域名 → 个人备案(3-4 周)
  2. EdgeOne 控制台新建 Pages 项目,连同一 GitHub 仓库
  3. 同样的构建命令 / 环境变量
  4. EdgeOne KV:创建 PURCHASES KV 空间
  5. 自定义域:6892872.com(备案完成后绑定)
  6. DNS 分流:用 DNSPod 智能解析,境内线路 CNAME → EdgeOne,海外线路 CNAME → CF

双部署 + 一套代码

通过 repository variable DATA_SOURCE 控制用哪个数据源(notionflowus)。海外实例设 notion,境内实例设 flowus,作者把两个数据库保持同步即可。

成本(100 万 PV/月预估)

月成本
EdgeOne Pages 基础版 ¥28
Cloudflare Pages ¥0
域名 .com ¥5
备案 ¥0
边缘 KV 含在套餐
Postgres ¥0(复用外部账户系统)
合计 ¥33/月

路线图

  • M0 骨架(Hugo + 1986 主题 + prebuilder 接口 + 边缘函数 stub)
  • M2.a 共享 block→Markdown 翻译器(Notion + FlowUs)
  • M2.b FlowUs HTTP 客户端 + fetchPages() 实装
  • M1 Notion fetchPages() 实装
  • M3 边缘函数接入 dmxapi 账户系统(支付 + SSO + 购买校验)
  • M4 双部署流水线实装(CF + EdgeOne)
  • M5 备案 + 境内上线

主题哲学

浏览器默认 Times 衬线字体,默认蓝色下划线链接,默认白底黑字,<hr> 做分隔。没有 CSS,没有 JS,没有字体加载,没有图片懒加载,没有 hydration。一篇文章的 HTML 大小 < 3KB。这是 1986 年网页的朴素美学,也是目前技术栈下能做到的最低加载延迟。

相关项目

License

源代码按 PolyForm Noncommercial 1.0.0 发布

免费可以做什么

  • 个人博客,自娱自乐、学习研究、非商业爱好
  • 学术/慈善/公共研究/政府机构使用
  • 在上述范围内随便 fork、改、再发布(保留版权声明即可)
  • 免费档单实例文章数建议 ≤ 100 篇(超过视为达到商业规模)

商业用途必须买 License

包括但不限于:

  • 运行带付费订阅/会员的商业博客
  • 把本项目打包成产品或 SaaS 销售/分发
  • 任何营利主体内部使用
  • 启用 functions/api/ 下的支付/SSO 集成模块
  • 单实例发表超过 100 篇文章(不论是否直接营利)

商业 License 联系:license@6892872.com(域名启用后生效)

商业档解锁:不限文章数 / 支付模块可用 / 去除底栏署名 / 优先响应。

相关项目说明

  • Hugo 按 Apache 2.0 使用,作为构建工具而非源码分发
  • 未引入 NotionNext 任何代码,仅在架构思路上致敬
  • FlowUs 文档以自己语言改写归档在 docs/,FlowUs 版权归 FlowUs 所有

About

极简付费博客 · Hugo · 0 客户端 JS · Notion/FlowUs 双数据源 · 边缘函数付费墙 · PolyForm Noncommercial

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors