富文本编辑器基于 Tiptap,支持标题、加粗、斜体、列表、代码块、引用、链接,并可切换 Markdown 源码视图
jekyll-chirpy-cms-panel — Jekyll 博客模板
作者 dollarboysushil
面向 Jekyll Chirpy 主题博客的自托管 CMS 面板,部署在 Vercel 上,通过 GitHub API 直接管理文章与图片。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
草稿每 5 秒自动保存到 Vercel Postgres,图片上传后自动转换为 WebP 并暂存于 Vercel Blob
发布时自动将内容转为 Markdown、生成 Jekyll frontmatter,并通过 GitHub API 提交到 _posts/ 目录
提供全部文章、草稿、已发布三种视图,以及带预览的分栏 Markdown 编辑界面
鉴权使用管理员密码与 JWT httpOnly cookie,并包含速率限制、输入校验与安全响应头
支持 Vercel 一键部署,无需在本地安装 Jekyll 即可编辑博客内容
模板详细介绍
这是一个为 Jekyll(Chirpy 主题)博客设计的自托管内容管理面板。它不替代 Jekyll 本身,而是作为写作与发布的前端:你在浏览器里用富文本编辑器撰写草稿,草稿自动保存到 Vercel Postgres,图片上传后经 Sharp 转换为 WebP 并暂存于 Vercel Blob;点击发布时,内容被转换为 Markdown、生成 Jekyll frontmatter,并通过 GitHub API 提交到博客仓库的 _posts/ 目录,图片则上传到 assets/img/ 下,随后触发 GitHub Pages 重新构建。面板提供全部文章、草稿、已发布三种视图,登录使用管理员密码与 JWT(httpOnly cookie)鉴权。
使用前需要自行准备 GitHub 仓库、Vercel 账号,并配置 GitHub Token、仓库所有者与名称、管理员密码、AUTH_SECRET 等环境变量,同时启用 Vercel Postgres 与 Blob 存储,部署后访问 /api/setup 初始化数据表。
需要注意:作者在 README 中明确说明项目以“vibe coding”方式构建,未经过正式安全审计,并提示自行承担安全与数据风险,不建议未经评估直接用于生产环境。代码采用 MIT 许可,但演示图片、字体、图标等第三方素材需单独核对授权。
适合你的项目吗?
适用场景
- 在手机或平板等没有本地 Jekyll 环境的设备上撰写和发布 Chirpy 主题博客文章
- 把草稿与图片暂存在云端,确认内容后再一次性提交到 GitHub 仓库
- 为已有 Jekyll Chirpy 博客增加一个基于浏览器的写作后台,而不改动博客本身的构建流程
- 需要自动完成图片 WebP 转换、Markdown 转换与 frontmatter 生成的写作流程
适合人群
- 使用 Jekyll Chirpy 主题、博客托管在 GitHub Pages 上的博主
- 愿意使用 Vercel 及其 Postgres、Blob 存储来托管 CMS 面板的用户
- 能自行配置 GitHub Token 与环境变量、接受自行承担安全风险的技术用户
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
需要准备一个 Jekyll Chirpy 博客仓库、一个 Vercel 账号,并生成具有 repo 权限的 GitHub Personal Access Token
- 2
在 Vercel 中启用 Postgres 与 Blob 存储,并配置 GITHUB_TOKEN、GITHUB_REPO_OWNER、GITHUB_REPO_NAME、ADMIN_PASSWORD、AUTH_SECRET 等环境变量
- 3
部署后访问 /api/setup 初始化数据库表,再用管理员密码登录
- 4
作者声明项目未经正式安全审计,并提示自行承担安全与数据风险,生产使用前需自行评估
- 5
代码为 MIT 许可,但演示图片、字体、图标等第三方素材需按各自许可单独核对
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 使用前必须拥有 GitHub 账号,并已存在一个 Jekyll Chirpy 博客仓库,否则无法作为 CMS 使用。
- 必须注册 Vercel 账号(可用免费套餐)来托管该 CMS 面板。
- 需在 Vercel 中创建并连接 Postgres 数据库,用于存储草稿数据。
- 需在 Vercel 中创建 Blob 存储,用于暂存上传的图片。
- 必须自行创建 GitHub Personal Access Token 才能让面板读写博客仓库。
- GitHub Token 需授予 repo 完整仓库控制权限,权限范围较大。
- 必须配置 GITHUB_TOKEN 环境变量,否则无法与 GitHub 交互。
- 必须自行设置管理员密码环境变量用于登录。
- 必须自行生成并配置 AUTH_SECRET 环境变量用于 JWT 鉴权。
- 部署后必须访问 /api/setup 初始化数据库表,否则系统无法正常使用。
- 作者声明该软件未经过正式安全审计,提示在生产环境部署前需谨慎评估。
- 作者声明使用风险自负,不对安全问题、数据泄露或缺陷负责。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
A GitHub account with a Jekyll Chirpy blog repository
README 原文
A Vercel account (free tier)
README 原文
Click **Create Database** → **Postgres**
README 原文
Click **Create** → **Blob**
README 原文
Create GitHub Personal Access Token
README 原文
Select scope: ✅ **repo** (Full control of repositories)
README 原文
GITHUB_TOKEN=ghp_your_token_here
README 原文
ADMIN_PASSWORD=your_secure_password
README 原文
AUTH_SECRET=generate_with_openssl_rand_base64_32
README 原文
https://your-app.vercel.app/api/setup
README 原文
This software has not undergone a formal security review. Please exercise caution before deploying it in a production environment.
README 原文
https://github.com/dollarboysushil/jekyll-chirpy-cms-panel/blob/main/LICENSEhttps://github.com/dollarboysushil/jekyll-chirpy-cms-panel/blob/main/README.md**Use at your own risk:** I am not responsible for any security-related problems, data leaks, or bugs that may occur.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-04。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 80 / 100
- 技术栈
- Jekyll
- 网站类型
- 博客
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-10-04
- 截图检查日期
- 2026-10-04
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Jekyll。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-04
查看当时使用的来源资料
SHA-256: d79f7c8d3eeab4759245be6b9cda597def5014c51100da7bebd6fc4ebe84b948
2026-10-04T13:58:54.662Z
来源文件 / 仓库# Jekyll Chirpy CMS Panel 🚀
A modern, cloud-based CMS panel for managing [Jekyll Chirpy](https://github.com/cotes2020/jekyll-theme-chirpy) blog posts. Edit, manage, and publish your blog posts from anywhere without the need for local Jekyll installation. Hosted entirely on Vercel's free tier with seamless GitHub integration.
[](https://vercel.com/new/clone?repository-url=https://github.com/dollarboysushil/Jekyll-chirpy-cms-panel)
## ✨ Why This CMS?
**No more local editing!** This CMSsolves the pain of editing Jekyll blogs locally by providing:
- ☁️ **100% Cloud-Based** - Edit from anywhere, any device
- 🆓 **Completely Free** - Hosted on Vercel's generous free tier
- 📝 **Rich Text Editor** - Medium-style WYSIWYG editing with Tiptap
- 🖼️ **Smart Image Management** - Automatic WebP conversion & GitHub upload
- 💾 **Auto-Save** - Never lose your work (saves every 5 seconds)
- 🚀 **One-Click Publishing** - Direct publish to GitHub Pages
- 🔒 **Secure** - Token-based authentication with comprehensive security features
- 🎨 **Clean UI** - Modern, responsive design with Tailwind CSS
## 🎬 Demo

Dashboard to add, remove and manage all your posts.

Easy Markdown editor with preview, visual editor and option to paste image from clipboard

Splitview markdown editor
## 🏗️ Architecture
```
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Browser │─────▶│ Vercel │─────▶│ GitHub │
│ (Editor) │ │ (Next.js) │ │ (Blog) │
└─────────────┘ └──────────────┘ └─────────────┘
│
├─▶ Postgres (Drafts)
└─▶ Blob Storage (Temp Images)
```
## 🚀 Quick Start
### Prerequisites
1. A GitHub account with a Jekyll Chirpy blog repository
2. A Vercel account (free tier)
3. That's it! No local dependencies needed.
### One-Click Deploy
1. Click the "Deploy with Vercel" button above
2. Connect your GitHub account
3. Follow the setup wizard below
### Manual Setup
#### 1. Clone & Deploy
```bash
git clone https://github.com/dollarboysushil/CMS.git
cd CMS
```
Deploy to Vercel:
```bash
npm i -g vercel
vercel
```
#### 2. Enable Vercel Postgres
1. Go to your project in [Vercel Dashboard](https://vercel.com/dashboard)
2. Navigate to **Storage** tab
3. Click **Create Database** → **Postgres**
4. Click **Connect** - This auto-injects all database environment variables
#### 3. Enable Vercel Blob Storage
1. In the same **Storage** tab
2. Click **Create** → **Blob**
3. This auto-injects `BLOB_READ_WRITE_TOKEN`
#### 4. Create GitHub Personal Access Token
1. Go to [GitHub Settings → Tokens](https://github.com/settings/tokens)
2. Click **Generate new token (classic)**
3. Name it: `Jekyll CMS Panel`
4. Select scope: ✅ **repo** (Full control of repositories)
5. Click **Generate token** and copy it
#### 5. Configure Environment Variables
Go to **Settings** → **Environment Variables** in Vercel and add:
```env
# GitHub Integration (Required)
GITHUB_TOKEN=ghp_your_token_here
GITHUB_REPO_OWNER=your-github-username
GITHUB_REPO_NAME=your-blog-repo-name
# Authentication (Required)
ADMIN_PASSWORD=your_secure_password
AUTH_SECRET=generate_with_openssl_rand_base64_32
```
**Generate AUTH_SECRET:**
```bash
openssl rand -base64 32
```
#### 6. Initialize Database
After deployment, visit:
```
https://your-app.vercel.app/api/setup
```
This creates the necessary database tables.
#### 7. Login & Start Writing!
Visit your app URL and login with your `ADMIN_PASSWORD`.
## 📖 Features in Detail
### Rich Text Editor
- **Tiptap-powered** WYSIWYG editor
- Headings, bold, italic, lists, code blocks, blockquotes
- Link insertion and editing
- Image upload via drag-and-drop or paste
- Markdown source view for power users
### Image Management
- **Automatic optimization**: WebP conversion at 85% quality
- **Smart resizing**: Max width 1200px for web performance
- **Organized structure**: Images stored in `assets/img/post_media/`
- **Temporary storage**: Uses Vercel Blob until published
- **Auto-cleanup**: Removes temp files after publishing
### Publishing Workflow
1. **Write** - Create drafts with rich text editor
2. **Preview** - See how it looks before publishing
3. **Publish** - One-click publish to GitHub
- Converts HTML to Markdown
- Uploads images to GitHub
- Generates Jekyll frontmatter
- Creates post file in `_posts/`
- Triggers GitHub Pages rebuild
### Three Views for Every Post
- **All Posts** - See everything at a glance
- **Drafts** - Work-in-progress posts
- **Published** - Live posts on your blog
### Security Features
- JWT authentication with httpOnly cookies
- Rate limiting on all endpoints
- Input validation and sanitization
- Security headers (CSP, HSTS, etc.)
- Middleware route protection
This CMS implements multiple security layers:
- **Authentication**: JWT tokens with httpOnly cookies
- **Rate Limiting**: Prevents brute force and abuse
- **Input Validation**: Sanitizes all user inputs
- **Security Headers**: CSP, HSTS, X-Frame-Options, etc.
- **Environment Variables**: Secrets never exposed to client
- **Middleware Protection**: All routes require authentication
See [SECURITY.md](SECURITY.md) for detailed security information.
## 🔧 Tech Stack
| Category | Technology |
| ------------- | ------------------------- |
| **Framework** | Next.js 14 (App Router) |
| **Language** | TypeScript |
| **Database** | Vercel Postgres (Neon) |
| **Storage** | Vercel Blob |
| **Editor** | Tiptap (ProseMirror) |
| **Styling** | Tailwind CSS |
| **GitHub** | Octokit REST API |
| **Images** | Sharp (WebP conversion) |
| **Markdown** | Turndown, Unified, Remark |
| **Auth** | JWT (Jose) |
| **Hosting** | Vercel (Free Tier) |
## 📝 Development
### Local Development
```bash
# Clone repository
git clone https://github.com/dollarboysushil/CMS.git
cd CMS
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env
# Edit .env with your values
# Run development server
npm run dev
```
Visit [http://localhost:3000](http://localhost:3000)
### Build for Production
```bash
npm run build
npm start
```
## 📄 License
MIT License - see [LICENSE](LICENSE) file for details
## 📧 Support
- **Issues**: [GitHub Issues](https://github.com/dollarboysushil/jekyll-chirpy-cms-panel/issues)
- **Discussions**: [GitHub Discussions](https://github.com/dollarboysushil/jekyll-chirpy-cms-panel/discussions)
---
### Creating a Post
1. Login with your admin password
2. Click "New Draft"
3. Start writing in the editor
4. Add title, slug, category, and tags
5. Upload images by dragging/dropping or clicking the image icon
6. Content auto-saves every 5 seconds
7. Click "Publish" when ready
### Publishing Flow
When you publish a post:
1. Drafts are converted from Tiptap JSON to Markdown
2. Images are uploaded to GitHub (`assets/img/posts/`)
3. Jekyll frontmatter is generated automatically
4. Post file is created in `_posts/` directory
5. Temporary images are deleted from Vercel Blob
6. Vercel auto-rebuilds your Jekyll blog
### Jekyll Frontmatter Format
```yaml
---
title: "Post Title"
date: 2025-02-15 14:30:00 +0545
categories: [Category]
tags: [tag1, tag2, tag3]
image:
path: /assets/img/posts/slug/cover.webp
alt: "Alt text"
---
```
**Built with ❤️ for the Jekyll Chirpy community**
**No more local editing. Write from anywhere. Deploy instantly.**
---
# ⚠️ Disclaimer & Notice
This project is heavily built with **vibe coding**. While the development process was fueled by pure intuition and high energy, the codebase may reflect that experimental nature.
### 🛡️ Security & Liability
- **Use at your own risk:** I am not responsible for any security-related problems, data leaks, or bugs that may occur.
- **No Audits:** This software has not undergone a formal security review. Please exercise caution before deploying it in a production environment.
### 🛠️ Issues & Feedback
If you find any problems security related or otherwise please let me know so I can attempt to fix the vibes:
- **GitHub:** Create a new Issue
- **Contact:** Reach out to me directly **[@dollarboysushil on X(twitter)](https://x.com/dollarboysushil/)**
---
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

al-folio
al-folio 是一个面向学者与研究人员的 Jekyll 作品集主题,设计简洁、响应式,适合搭建个人学术主页。
Jekyll · 作品集

minimal-mistakes
:triangular_ruler: Jekyll theme for building a personal site, blog, project documentation, or portfolio.
Jekyll · 作品集

Beautiful Jekyll
Beautiful Jekyll 是一个在 Jekyll 生态中经过长期打磨的博客主题,由 Dean Attali 维护,自 2015 年起积累了超过 5 万用户。
Jekyll · 博客

jekyll-TeXt-theme
💎 🐳 A super customizable Jekyll theme for personal site, team site, blog, project, documentation, etc.
Jekyll · 博客

startbootstrap-clean-blog-jekyll
A Jekyll version of the Clean Blog theme by Start Bootstrap
Jekyll · 博客

So Simple
So Simple 是 Michael Rose 开发的 Jekyll 主题,定位清晰:为文字和图片提供一个干净、可读性强的展示框架。
Jekyll · 博客
