Jekyll博客

jekyll-chirpy-cms-panel — Jekyll 博客模板

作者 dollarboysushil

面向 Jekyll Chirpy 主题博客的自托管 CMS 面板,部署在 Vercel 上,通过 GitHub API 直接管理文章与图片。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-04查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

富文本编辑器基于 Tiptap,支持标题、加粗、斜体、列表、代码块、引用、链接,并可切换 Markdown 源码视图

02

草稿每 5 秒自动保存到 Vercel Postgres,图片上传后自动转换为 WebP 并暂存于 Vercel Blob

03

发布时自动将内容转为 Markdown、生成 Jekyll frontmatter,并通过 GitHub API 提交到 _posts/ 目录

04

提供全部文章、草稿、已发布三种视图,以及带预览的分栏 Markdown 编辑界面

05

鉴权使用管理员密码与 JWT httpOnly cookie,并包含速率限制、输入校验与安全响应头

06

支持 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博客

适合你的项目吗?

适用场景

  • 在手机或平板等没有本地 Jekyll 环境的设备上撰写和发布 Chirpy 主题博客文章
  • 把草稿与图片暂存在云端,确认内容后再一次性提交到 GitHub 仓库
  • 为已有 Jekyll Chirpy 博客增加一个基于浏览器的写作后台,而不改动博客本身的构建流程
  • 需要自动完成图片 WebP 转换、Markdown 转换与 frontmatter 生成的写作流程

适合人群

  • 使用 Jekyll Chirpy 主题、博客托管在 GitHub Pages 上的博主
  • 愿意使用 Vercel 及其 Postgres、Blob 存储来托管 CMS 面板的用户
  • 能自行配置 GitHub Token 与环境变量、接受自行承担安全风险的技术用户

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    需要准备一个 Jekyll Chirpy 博客仓库、一个 Vercel 账号,并生成具有 repo 权限的 GitHub Personal Access Token

  2. 2

    在 Vercel 中启用 Postgres 与 Blob 存储,并配置 GITHUB_TOKEN、GITHUB_REPO_OWNER、GITHUB_REPO_NAME、ADMIN_PASSWORD、AUTH_SECRET 等环境变量

  3. 3

    部署后访问 /api/setup 初始化数据库表,再用管理员密码登录

  4. 4

    作者声明项目未经正式安全审计,并提示自行承担安全与数据风险,生产使用前需自行评估

  5. 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 原文

**Use at your own risk:** I am not responsible for any security-related problems, data leaks, or bugs that may occur.

README 原文
https://github.com/dollarboysushil/jekyll-chirpy-cms-panel/blob/main/LICENSEhttps://github.com/dollarboysushil/jekyll-chirpy-cms-panel/blob/main/README.md

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.

[![Deploy with Vercel](https://vercel.com/button)](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

![alt text](./images/image.png)
Dashboard to add, remove and manage all your posts.
![alt text](./images/image1.png)
Easy Markdown editor with preview, visual editor and option to paste image from clipboard
![alt text](./images/image-1.png)
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/)**

---
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。