源码私有、站点公开:从零上线 VitePress 站
背景和需求
这个案例让 Grok Bot 从零搭一个教程站。需求是做一个中文的 Grok Bot 新手指南:手机上好看、好用,能自动部署。后来又加了一条硬要求:GitHub 上的源码仓库必须是私有的,否则内容和设计谁都能整个拿走。
怎么跟 Grok Bot 说
text
用 VitePress 给我做一个中文教程站,域名 wangxxxl.com:
- 分区:快速开始、基础用法、自动化进阶、按角色看、实战案例、模板库、日更、资源导航。
- 手机优先,深色风格,所有提到 X 的地方都能点到我的主页。
- 推到 GitHub,自动构建部署,每次提交自动上线。
- 源码仓库一定要私有,千万不能公开。它做了什么
- 建站:用 VitePress 搭骨架,全站导航、侧边栏、分区卡片都从同一份数据文件生成,加一个页面只需要改一个地方。图标用开源的 Fluent Emoji 和 Lucide,本地搜索、RSS 订阅都开箱即用。
- 自动部署:写了一个 GitHub Actions 工作流:每次推送到 main,就自动安装依赖、构建、发布。
- 源码转私有:GitHub Pages 在免费账号下不能直接从私有仓库发布网站。做法是拆成两个仓库:
- 源码仓库
grok-bot-guide:私有,所有内容和代码都在这里。 - 发布仓库
imsuper-vip-site:公开,只放构建好的静态文件,并写明「版权所有,不授权复制」。 - 工作流用 peaceiris/actions-gh-pages 加一把只对发布仓库有写权限的部署密钥,把构建结果推过去,同时写好自定义域名。
- 源码仓库
- 上线检查:每次部署完,绕开 DNS 缓存直接请求 GitHub Pages 的服务器,按手机宽度截图,逐页确认改动已生效。
yaml
- uses: peaceiris/actions-gh-pages@v4
with:
deploy_key: ${{ secrets.SITE_DEPLOY_KEY }} # 只对发布仓库有写权限
external_repository: 你的账号/你的发布仓库
publish_dir: docs/.vitepress/dist
cname: 你的域名
force_orphan: true # 发布仓库只保留最新一次构建踩坑与解决
- RSS 按钮打开一堆代码:日更页的「订阅 RSS」按钮直接链到 feed.xml,普通人点开只看到 XML 代码。改法是主按钮换成「关注 X 获取每日更新」,RSS 退到一个小链接,指向新做的订阅页,用大白话解释 RSS;feed.xml 本身也加了样式表,浏览器直接打开时显示成排好版的中文页面。
- 名字写法不统一:页面上显示名一度不统一,全部改成 WANGXXXL。
- 页面没有出口:订阅预览页一开始只有一个返回链接,补了和网站一样的顶部导航。
- 私有仓库发不了网站:用上面的双仓库方案解决,源码不公开,网站照常更新。
效果
- wangxxxl.com 已上线,每次推送约 1 分钟自动部署完成。
- 源码仓库是私有的,公开仓库里只有构建结果。
- 后续的每一次改版,包括这一页的案例,都是同样的流程:改源码,推送,自动上线,手机截图核对。
可以直接用的提示词
text
我的网站源码在私有仓库 (填写),GitHub Pages 发不了。帮我改成双仓库发布:
1. 新建一个公开仓库只放构建产物,README 写明版权所有。
2. 生成一对部署密钥:公钥加到公开仓库(可写),私钥存进私有仓库的 Secrets。
3. 改 GitHub Actions:构建后用 peaceiris/actions-gh-pages 推到公开仓库,带上自定义域名。
4. 把源码仓库改成私有之前,先跟我确认一次。
5. 部署完用手机宽度截图首页给我看。