# 不写周报 **Repository Path**: xiaolv12/NoWeekly ## Basic Information - **Project Name**: 不写周报 - **Description**: 个人运维手册与实践笔记:把日常部署里常用的命令、流程沉淀成可检索的静态文档站。 支持Git / Cursor / Trea / TreaWork / DeepSeek 一键自动采集。 内置两套周报模板与书写语气提示词,使用AI一键完成周报。 支持无服务器部署上线。 - **Primary Language**: NodeJS - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-23 - **Last Updated**: 2026-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NoWeekly 个人运维手册与实践笔记:把日常部署里常用的命令、流程沉淀成可检索的静态文档站。 | | | |---|---| | **在线站点** | https://noweekly.pages.dev/ | | **文档引擎** | [VitePress](https://vitepress.dev/) | | **托管** | [Cloudflare Pages](https://pages.cloudflare.com/) | | **许可证** | [Mulan PSL v2](./LICENSE) | --- ## 里面有什么 - **文档区**:`docs/` 下按文件夹自动进左侧栏;可全文搜索 - **加密文档**:Markdown frontmatter `login: true` 控制;未登录表现为标准 404 - **周报区**:普通目录 `docs/weekly/`(`/weekly/`),`login: true` 加密;登录入口默认 `/login/` - **周中采集**:可用脚本从本机 Git / Cursor / Trea / TreaWork / DeepSeek 记录写入 `docs/weekly/YYYY/MM/Wnn/` 公开顶栏只有「首页 / 运维手册」;登录后顶栏仅多「退出」。加密页登录后出现在侧栏**原位置**(灰色斜体),不单独开「加密文档」分组。 --- ## 快速开始 需要 Node.js 18+。 ```bash git clone https://gitee.com/xiaolv12/NoWeekly.git cd NoWeekly npm install cp .env.example .env # 按需填写 LOGIN_PASSWORD / LOGIN_SLUG / CF_PROJECT npm run docs:dev ``` 浏览器打开终端提示的本地地址即可预览。 | 命令 | 说明 | |------|------| | `npm run docs:dev` | bake 鉴权 → 周报索引 → 本地预览 | | `npm run docs:build` | 构建静态站到 `docs/.vitepress/dist` | | `npm run docs:preview` | 预览构建产物 | | `npm run weekly:log` | 采集 Git + Cursor 日记录,并补本周 `wnn.md` 空壳 | | `npm run git:daily` | 按仓库 / 分支统计每日 git 提交,写入 `git-daily/` | | `npm run deploy` | 采集周中 → 构建 → 同步 Secret → 发布 Cloudflare Pages | | `npm run deploy:cf` | 采集周中 → 构建 → `wrangler pages deploy`(不含 Secret 同步) | --- ## 文档怎么组织 侧栏由 `docs/` **自动扫描**(`.vitepress` 除外;`login` 目录名保留作登录入口 slug,勿放文档): | 规则 | 行为 | |------|------| | 顶层文件夹 + `index.md` | 生成与「运维手册」同级的**大标题**(标题 = `index.md` 的 H1) | | 文件夹内其它 `.md` | 作为该分组下的页面 | | 二级子目录 + `index.md` | 可折叠分组;`index.md` 只提供组名与 `order`,不作为正文 | | 点击文件夹名 | 打开该目录下 `order` **最小**的子页 | | `sidebar: false` | 该页不进侧栏 | | `order: N` | 数字越小越靠前 | 示例: ```text docs/ ├── index.md # 首页(概览) ├── ops/ │ ├── index.md # 大标题:运维手册 │ ├── git-command.md │ ├── k3s-update/ │ │ ├── index.md # 组名:K3s(可折叠) │ │ ├── commands.md │ │ └── guide.md │ └── test/ # login: true → 整夹加密 │ ├── index.md │ ├── intro.md │ └── sample.md └── weekly/ # login: true;公开侧栏隐藏,登录后可见 ├── index.md # 配置:login / H1「周报」 └── catalogue.md # 脚本生成的正式周报索引 ``` `docs/ops` 内可写真实 IP;预览/构建时自动显示为 `*.*.*.*`(回环地址保留)。直链 `*.md` 不会被当作页面源码放出。 --- ## 加密文档(`login: true`) 与周报共用 `LOGIN_PASSWORD`。 | frontmatter | 效果 | |-------------|------| | 文件夹 `index.md` 写 `login: true` | **整夹**受保护 | | 单个 `*.md` 写 `login: true` | **仅该页**受保护 | 未登录: - 访问受保护 URL → 标准 VitePress **404**(有顶栏,看不出是加密页) - 登录表单**只**出现在 `/{LOGIN_SLUG}/`(默认 `/login/`;由 middleware / PasswordGate 提供,无需 `docs/login` 页面) - 公开侧栏**不**列出加密项(含周报) 已登录: - 加密项插入侧栏原位,灰色斜体标记「隐藏」 - 加密文件夹默认收起,可折叠展开 - 顶栏可「退出」(清 cookie) 构建时 `npm run docs:auth` 会扫描全部 `login: true`,写入 bake 产物(已 gitignore)。 --- ## 部署到 Cloudflare Pages 1. 安装并登录 Wrangler: ```bash npx wrangler login ``` 2. 复制环境变量模板并填写: ```bash cp .env.example .env ``` | 变量 | 作用 | |------|------| | `LOGIN_PASSWORD` | 访问密码(同步为 Pages Secret;前端不烘焙哈希) | | `LOGIN_SLUG` | 登录入口路径,默认 `login` → `/login/`(与周报路径无关) | | `CF_PROJECT` | Pages 项目名 = `pages.dev` 前缀,默认 `noweekly` | | `SITE_ORIGIN` | 站点根 URL,用于生成完整登录链接;留空取 `https://{CF_PROJECT}.pages.dev` | | `REPO_URL` | 顶栏仓库图标链接,默认 Gitee 上的 `NoWeekly` | | `CLOUDFLARE_API_TOKEN` | 可选;已 `wrangler login` 时一般不需要 | 改名只需改 `CF_PROJECT`:站点地址、Secret 同步、`wrangler pages deploy` 的项目名与 命令变量池的 localStorage 命名空间都跟着走(`wrangler.toml` 里的 `name` 是兜底默认值)。 3. 一键发布(Windows): ```powershell npm run deploy ``` 脚本会:bake 路径与受保护路由 → 同步 Cloudflare Secret → `wrangler pages deploy`。 结束后打印登录 URL,并写入本机 `.weekly-url`(已 gitignore)。 > 改密码或改 `LOGIN_SLUG` 后重新 `npm run deploy`,并清掉浏览器该站的 cookie。 更细的说明见仓库根目录 [deploy.md](./deploy.md)。 --- ## 仓库结构 ```text NoWeekly/ ├── docs/ # VitePress 文档源 │ ├── ops/ # 运维手册 │ ├── personal-information/ # 其它顶层分区示例 │ ├── weekly/ # 周报与周中记录(隐藏路径) │ └── .vitepress/ # 主题、侧栏生成、鉴权门禁 ├── functions/ # Cloudflare Pages Functions(鉴权中间件) ├── scripts/ │ ├── lib/build-sidebar.mjs # 侧栏扫描 │ ├── lib/scan-login.mjs # login: true 扫描 │ ├── bake-weekly-auth.mjs # 烘焙受保护路由与 LOGIN_SLUG │ └── deploy.ps1 ├── deploy.md # 部署说明 ├── .env.example ├── wrangler.toml └── package.json ``` 以下为 **gitignore**(勿提交):`.env`、`.weekly-url`、`docs/.vitepress/theme/weeklyAuth.ts`、`weeklyRoute.ts`、`functions/weeklyPath.ts`、`functions/authBootstrap.ts`。 --- ## 周报(本机脚本) ```bash npm run weekly:log # 日记录 + 本周 wnn.md 空壳 + 索引 # Windows 也可双击 scripts/collect-weekly-logs.cmd ``` 侧栏:`2026年` / `7月` / `第N周`;点开周文件夹即打开同目录 `wnn.md`(H1「周报」)。 `docs/weekly/index.md` 仅配置(login / 分区名);正式周报表在 `docs/weekly/catalogue.md`(脚本刷新)。点击分区大标题落到 order 最小的子页。 --- ## 安全说明 - **不要**提交 `.env`、`.weekly-url`、bake 产物(含隐藏路径) - 明文密码只存在 Cloudflare Secret / 本机 `.env`;前端不烘焙密码哈希、slug 或受保护路径;登录后由 cookie 门控的 bootstrap / HTML 注入下发 - 加密页未登录一律按 404 处理;登录入口不要写进公开导航或文档外链 - 仓库若曾误提交密钥,请立刻在 Cloudflare / Git 托管平台轮换 --- ## License [木兰宽松许可证,第 2 版 (Mulan PSL v2)](./LICENSE)