一个优雅、快速、易于部署的书签(网址)收藏与分享平台,完全基于 Cloudflare 全家桶构建。
特性 • 版本亮点 • 快速部署 • 本地开发 • 变量说明 • 常见问题 • 技术栈 • 更新日志
🌐 在线体验: https://iori.hidns.vip
| 首页 | 后台管理 |
|---|---|
![]() |
![]() |
![]() |
![]() |
| 大卡片 | 小卡片 |
|---|---|
![]() |
![]() |
| 简洁风格 | 夜间模式 |
|---|---|
![]() |
![]() |
💡 卡片的毛玻璃效果和程度可以在后台设置里自定义。后台设置页面为 URL 后加
/admin
| 特性 | 说明 |
|---|---|
| 📱 响应式设计 | 完美适配桌面、平板和手机等各种设备 |
| 🎨 主题美观 | 界面简洁优雅,支持自定义主色调与夜间模式 |
| 🔍 快速搜索 | 内置站内模糊搜索,迅速定位所需网站 |
| 📂 分类清晰 | 通过多级分类组织书签,浏览直观高效 |
| 🔒 安全后台 | 基于 KV 的管理员认证,提供完整的书签增删改查后台 |
| 📝 用户提交 | 支持访客提交书签,经管理员审核后显示(可通过环境变量关闭) |
| ⚡ 性能卓越 | 利用 Cloudflare 边缘缓存,秒级加载,节省 D1 数据库读取成本 |
| 📤 数据管理 | 支持书签数据的导入与导出,兼容 Chrome 导出的 HTML 格式 |
- 🛡️ 后台会话安全升级:登录
/admin后将颁发 HttpOnly 会话 Cookie(默认 1 天,可选 1/7/30/60/90 天),凭据不再暴露在 URL 中,并新增一键退出登录。 - 🧹 输入与展示双重校验:新增 URL 规范化、HTML 转义与排序值归一化逻辑,前后台同时防止脏数据和潜在 XSS。
- 🔐 访客投稿可控:通过
ENABLE_PUBLIC_SUBMISSION环境变量即可关闭前台投稿入口,相关接口自动返回 403。 - 🤖 AI 一键自动生成描述:提供 Workers AI、Google Gemini 和 OpenAI 接口。
- 🖼️ Logo 自动生成:默认使用 faviconsnap.com 接口,可在环境变量中自定义。
- 📦 导入导出数据:提供书签数据的导入与导出,支持 Chrome 导出的 HTML 格式一键导入。
准备工作:你需要一个 Cloudflare 账号。
点击上方 "Fork on GitHub" 按钮,并点上 ⭐ Star!
点击上方按钮跳转到 Cloudflare,然后选择连接到 GitHub,授权后选择刚才 Fork 的项目。
点击 开始设置 后,需要填写构建输出目录为 public,其他保持默认即可。
- 在 Cloudflare 控制台,进入
存储和数据库→D1 SQL 数据库。 - 点击
创建数据库,数据库名称输入book,然后创建。
-
在 Cloudflare 控制台,进入
存储和数据库→Worker KV。 -
点击
创建命名空间,名称输入NAV_AUTH。
-
创建后,为此 KV 添加两个条目,用于设置后台登录的 用户名 和 密码:
admin_username:你的管理员用户名(例如admin)admin_password:你的管理员密码
- 进入你刚刚创建的 Pages 项目的
设置→绑定。 - 点击
添加绑定,选择D1 数据库:- 变量名称:
NAV_DB - D1 数据库:选择你创建的
book
- 变量名称:
- 点击
添加绑定,选择KV 命名空间:- 变量名称:
NAV_AUTH - KV 命名空间:选择你创建的
NAV_AUTH
- 变量名称:
点击项目的 部署 选项,在最后一次的部署后边选择 重新部署,等待部署完成,绑定自定义域名即可开始使用。
本地开发依赖
wrangler.toml(该文件已.gitignore),请先填入你自己的 D1/KV 资源 ID。
# 安装依赖(TailwindCSS / Husky)
npm install
# 构建 CSS(首次或修改 tailwind.css 后执行)
npm run build:css
# 启动本地开发服务器
npm run dev
# 本地执行数据库 schema(可选)
npx wrangler d1 execute book --local --file=schema.sql| 绑定名 | 类型 | 说明 |
|---|---|---|
NAV_DB |
D1 | 主数据库绑定(必需) |
NAV_AUTH |
KV | 会话、限流、缓存标记存储(必需) |
| 变量名 | 默认值 | 说明 |
|---|---|---|
ENABLE_PUBLIC_SUBMISSION |
false |
是否允许访客投稿 |
SITE_NAME |
灰色轨迹 |
首页站点名称(环境变量兜底) |
SITE_DESCRIPTION |
一个优雅、快速、易于部署的书签(网址)收藏与分享平台,完全基于 Cloudflare 全家桶构建 |
首页副标题(环境变量兜底) |
FOOTER_TEXT |
曾梦想仗剑走天涯 |
首页页脚文案 |
ICON_API |
https://faviconsnap.com/api/favicon?url= |
自动补全 logo 的接口前缀 |
AI_REQUEST_DELAY |
1500 |
AI 一键补全描述调用间隔(毫秒) |
DISPLAY_CATEGORY已废弃,当前版本不会读取该变量。
- 首页名称/副标题等支持后台设置项的字段,优先读取数据库
settings,环境变量作为兜底。 AI_REQUEST_DELAY在代码中的默认兜底为1500;本地wrangler.toml示例值为500,可按 API 限频自行调整。
💡 提示:如使用免费的 Gemini API Key(模型
gemini-2.5-flash-lite),频率限制为 15 次/分钟,请根据实际情况调整AI_REQUEST_DELAY。
后台管理页面地址为:
https://你的域名/admin
后台登录凭据存放在 NAV_AUTH KV 中的 admin_username 与 admin_password 两个键内。登录 /admin 时需要在页面表单中输入账号与密码,系统会返回一个 HttpOnly 会话 Cookie(默认 1 天,可选 1/7/30/60/90 天),无需也不再支持在 URL 查询参数中传递凭据。点击后台右上角的 "退出登录" 按钮即可立即销毁会话。
/admin无法登录或反复跳回登录页:确认已绑定NAV_AUTH,并在该 KV 中创建admin_username、admin_password。- 首页 500 或数据为空:确认
NAV_DB已正确绑定到book数据库,且已执行过schema.sql。 - 前台看不到投稿入口:确认
ENABLE_PUBLIC_SUBMISSION=true(字符串或布尔都可,代码会统一转换)。 - 修改了
public/css/tailwind.css但样式未生效:先执行npm run build:css再重新部署。
| 类别 | 技术 |
|---|---|
| 计算 | Cloudflare Workers |
| 数据库 | Cloudflare D1 |
| 存储 | Cloudflare KV |
| 前端框架 | TailwindCSS |
- ⚡ 2026-02-24:优化缓存策略并提升加载性能
- 🖼️ 2026-02-23:优化壁纸功能与加载体验,并补充文档说明
- 🐞 2026-01-24:修复若干问题并提升稳定性,并加强登录安全
- ⚡ 2026-01-20:优化缓存策略并提升加载性能
- ⚡ 2026-01-19:优化缓存策略并提升加载性能
- 🔧 2026-01-16:美化后台管理界面,隐藏待审核列表
- 🎨 2026-01-15:优化卡片样式与后台界面体验
- ⚡ 2026-01-10:优化缓存策略并提升加载性能
- 🧰 2025-12-30:更新文档与部署使用说明
- 🐞 2025-12-29:修复若干问题并提升稳定性
- 📦 2025-12-27:增强导入导出与批量管理能力
- 📂 2025-12-25:增强分类结构与私密数据支持
- 🖼️ 2025-12-24:优化壁纸功能与加载体验
- 📦 2025-12-23:增强导入导出与批量管理能力,并增强分类能力
- 🐞 2025-12-22:修复若干问题并提升稳定性
- 🎨 2025-12-20:优化卡片样式与后台界面体验,并修复多项问题
- 📂 2025-12-19:增强分类结构与私密数据支持,并修复多项问题
- 🎨 2025-12-18:优化卡片样式与后台界面体验,并增强分类能力
- 🧰 2025-12-14:更新文档与部署使用说明
欢迎通过 Issue 或 Pull Request 为本项目贡献代码、提出问题或建议!
- Fork 本仓库
- 创建你的功能分支:
git checkout -b feature/amazing-feature - 提交你的更改:
git commit -m 'Add some amazing feature' - 推送到你的分支:
git push origin feature/amazing-feature - 创建一个 Pull Request
本项目采用 MIT 许可证。
- 项目作者:@灰色轨迹
- 项目链接:https://github.com/jy02739244/iori-nav
如果你喜欢这个项目,请给它一个 ⭐️!







