The ultimate desktop editor for Hexo blogs — simple, efficient, and ready to use!
Now also available as a self-hosted web app!
An open-source blogging software that offers a user-friendly article editing interface and content management system for Hexo-based blogs. Available as both a desktop app (Electron) and a self-hosted web app.
English | 简体中文
⭐️ If you like HexoPress, please star us and help more people discover it!
- HexoPress
- Download the version for your OS
- Unzip and run HexoPress
- Select your Hexo blog directory and start writing!
HexoPress makes Hexo blogging as easy as WordPress! No more manual Front Matter editing — what you see is what you get, with multi-platform support and a desktop-level experience.
- Pain Point: Hexo's native content management is scattered and complex, with metadata requiring manual editing.
- Solution: HexoPress reads Hexo's cache in real time, displays categories/tags in a tree, and lets you set metadata with a click. Front Matter is auto-organized.
- Core Value: Minimal operation, WYSIWYG, Vim mode support, and a true desktop experience.
- Vue 3, Element Plus, Vite 5, Electron, Fastify
- Supports Hexo 7.0.0 and above (uses Hexo 8.0.0 API internally)
- Please back up your blog directory before use (git integration recommended)
HexoPress can also run as a standalone web application on your server, providing a browser-based management interface for your Hexo blog — no Electron required.
Step 1: Clone and install
git clone https://github.com/charlestang/HexoPress.git
cd HexoPress
npm installStep 2: Create a config file
cp web/hexopress.config.example.json hexopress.config.jsonEdit hexopress.config.json:
{
"hexoDir": "/path/to/your/hexo/blog",
"port": 4000,
"username": "admin",
"password": "your-secure-password",
"secret": ""
}| Field | Description |
|---|---|
hexoDir |
Absolute path to your Hexo blog root directory |
port |
Port the web server listens on |
username |
Login username |
password |
Login password |
secret |
Cookie signing secret (auto-generated if left empty) |
Step 3: Build and run
npm run web:build # Build the SPA and server bundle
node dist/server.cjs # Start the production serverThen open http://your-server-ip:4000 in your browser and log in.
Development mode:
npm run web:dev # Starts Vite dev server + API server with hot reload- 📝 Article list with "Published"/"Draft" filter
- 📅 Filter by month
- 🗂️ Filter by category
- 🔍 Keyword search
- 🌳 Tree view for categories with article count
- 🏷️ Tag list with article count, tag posts dialog, and tag filter
- 🖼️ Media resource management with detail view
- 🗑️ Delete unused media assets (png/jpg/jpeg) with confirmation
- ✍️ Markdown editor with preview
- 📋 Outline panel
- 🖼️ Media panel in editor for quick asset insertion
- ⌨️ Vim key bindings
- 📊 Dropdown for categories/tags
- 🔖 Batch edit categories
- ⚙️ Quick FrontMatter editing
- 💾 Configurable auto-save
- 🤖 AI-assisted writing panel with chat interface and presets
- 📊 Dashboard with profile card, contribution heatmap, and recent posts
- 🌐 Web mode: self-hosted browser-based management with login authentication
- 🌍 Multi-language support (English / Simplified Chinese)
Each screenshot is briefly explained below
Quickly filter and manage all posts
Tree structure for intuitive category management
Clear tag overview and statistics
View all posts under a category, with bulk reassign and bulk remove operations
Browse posts under a tag in-app, with inline tag removal
Image assets grouped by name variants, with card preview
Full metadata, all size variants, reference lookup, and per-variant delete
Get familiar with the project using the docs in docs/: Architecture & Data Flow, window.site / IPC API Reference, and Developer Onboarding Guide.
git clone https://github.com/charlestang/HexoPress.git- Node.js >= v20.8.1
- npm >= v10.5.5
- Ports: 5173 (frontend), 2357 (local image service)
npm installnpm run dev # Start Electron dev environment
npm run web:dev # Start Web mode dev environment
npm run lint # Lint code
npm run format # Format code
npm run test # Run testsnpm run package # Package Electron app
npm run make # Build distributable installer
npm run web:build # Build web mode for production- Fork this repository
- Create your feature branch:
git checkout -b <feature-name> - Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin <feature-name> - Submit a pull request
- WeChat/QQ/Telegram (add if available)
⭐️ If you like HexoPress, please star us and help more people discover it!

