返回项目目录
前端框架精选项目

Nikola

使用 Python 构建、支持多种输入格式、增量任务和图片画廊的静态网站生成器。

主要语言Python
开源许可MIT
项目类型前端框架
维护状态活跃维护
OVERVIEW

项目概述

Nikola 可将 reStructuredText、Markdown、Jupyter Notebook 等内容生成静态网站,以 doit 驱动的增量构建、多语言、图库、Mako/Jinja 主题和 Python 插件见长。

Nikola 是采用 MIT 许可证、使用 Python 编写的静态网站与博客生成器。它把 Post、Page、Tag、Category、Archive、Gallery 和 Listing 等功能拆分为 doit Task,因此后续构建只执行受变更影响的任务。内容可以使用 reStructuredText、Markdown、Jupyter Notebook、HTML 或 Pandoc 支持的格式,主题可选 Mako 或 Jinja2,并内置多语言、Feed、代码展示、数学公式、图片缩略图和 GitHub Pages 部署等能力。

核心语言Python
任务系统doit
默认输出目录output
FEATURES

主要特点

Nikola 以任务级增量生成、多格式内容、图片工具和可扩展主题构成覆盖面很广的静态发布工具箱。

01

doit 增量构建

页面、索引、资源和图片被建模为带依赖关系的 Task,重复构建时只更新受到内容或配置变化影响的输出。

02

多种输入格式

内置 reStructuredText、Markdown、Jupyter Notebook、HTML 和 PHP,并可通过 Pandoc 或 Compiler Plugin 支持更多格式。

03

完整博客能力

Post、Page、Draft、Tag、Category、Author、Archive、分页、RSS/Atom 和评论集成覆盖日常出版需求。

04

多语言网站

同一内容可按文件名关联语言版本,导航、路径、日期和主题文本也能针对语言配置。

05

图片与图库

将图片放入 galleries 即可生成索引、缩略图和 Lightbox,并支持标题、排序、EXIF 与 ICC Profile 处理。

06

Mako 与 Jinja2 主题

主题可选择 Mako 或 Jinja2 模板,包含 Layout、资源与消息翻译,并支持继承现有主题创建子主题。

07

Shortcode 与数据上下文

内置及模板 Shortcode 可嵌入媒体、文章列表和缩略图,Global Context 和数据文件则向模板提供结构化数据。

08

Python 插件体系

Command、Task、Compiler、PageCompiler、PostScanner 和 LateTask 等插件类别可扩展命令、内容格式与构建过程。

USE CASES

适用场景

适合 Python 用户、技术写作者、研究人员和摄影作者,尤其是需要 reST、Notebook、多语言或大量图片内容的站点。

技术博客与开发日志

代码块、Feed、分类、标签、归档和增量构建适合长期维护的工程文章与发布记录。

研究与数据笔记

Jupyter Notebook、reStructuredText、数学公式和代码展示适合实验、课程与科研成果发布。

摄影与作品图库

自动缩略图、Gallery、Caption、EXIF 和 Lightbox 可组织摄影集、设计案例与媒体作品。

多语言个人网站

翻译文件关联、语言导航与本地化路径适合双语博客、作品集和社区网站。

项目文档与知识库

Page、Listing、reST/Markdown 和内部链接可维护指南、代码示例与结构化知识内容。

Python 定制出版管线

自定义 Task、Compiler、Filter 和部署命令适合处理专有数据格式及构建后优化。

EVALUATION

优点与注意事项

技术选型不仅要看能力,也要理解它带来的团队成本。

主要优点

Nikola 擅长的地方

  • doit 任务依赖实现细粒度增量构建,重复编辑反馈快
  • 输入格式覆盖 reST、Markdown、Notebook、HTML 与 Pandoc
  • 图片画廊、缩略图和代码 Listing 等能力内置完整
  • 多语言内容、路径、导航和主题文本拥有成熟配置
  • Mako/Jinja2 主题与 Python 插件提供较强可定制性
  • 输出标准静态文件,不需要生产数据库或 Python 进程

需要注意

采用前应考虑的问题

配置文件选项很多

conf.py 能控制大量路径、Taxonomy、语言和输出行为,团队应只保留实际使用的设置并为关键选择添加注释。

扩展依赖可能较重

Nikola[extras] 会安装多种可选依赖;对 CI 或安全敏感环境可从最小安装开始,再按功能显式添加包。

主题生态相对小

可选主题少于 Hugo、Hexo 等工具,采用前应检查模板引擎、Bootstrap 版本、响应式表现和维护状态。

插件是可执行 Python

社区插件能够执行任意代码,应审查来源、依赖与许可证,并固定版本后再放入自动构建环境。

缓存会增加排错维度

.doit.db 和 cache 提升速度,但插件或依赖规则不完整时可能留下旧输出;排错时需对比干净构建。

动态功能依赖外部系统

评论、表单、认证、实时搜索和个性化仍需第三方服务、客户端代码或独立后端。

QUICK START

快速开始

在虚拟环境中安装 Nikola,初始化站点,选择 YAML 元数据与 Markdown,创建文章后自动预览并生成 output 目录。

1安装并初始化 Nikola
bash
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install "Nikola[extras]"

nikola init my-nikola-site
cd my-nikola-site
2配置站点和 Markdown
python
# conf.py
BLOG_TITLE = "开源项目志"
BLOG_DESCRIPTION = "记录值得关注的开源软件"
SITE_URL = "https://example.org/"
DEFAULT_LANG = "zh_cn"
TIMEZONE = "Asia/Shanghai"

METADATA_FORMAT = "YAML"
MARKDOWN_EXTENSIONS = [
    "fenced_code",
    "codehilite",
    "extra",
]

POSTS = (
    ("posts/*.md", "posts", "post.tmpl"),
)
PAGES = (
    ("pages/*.md", "pages", "page.tmpl"),
)
3创建 Markdown 文章
bash
nikola new_post -f markdown -t "Hello Nikola"

# 新文章将创建在 posts 目录中
4编写 YAML 元数据与内容
markdown
---
title: Hello Nikola
slug: hello-nikola
date: 2026-07-24 10:00:00 +08:00
tags: Nikola, Python, SSG
category: 开源工具
description: 使用 Nikola 发布第一篇静态文章
type: text
---

Nikola 支持 Markdown、reStructuredText 和 Jupyter Notebook,
并使用 doit 只重新构建发生变化的任务。

## 下一步

尝试在 `galleries` 目录中加入一组图片。
5启用双语内容
python
# conf.py
TRANSLATIONS = {
    "zh_cn": "简体中文",
    "en": "English",
}
DEFAULT_LANG = "zh_cn"

# posts/hello-nikola.md       默认语言
# posts/hello-nikola.en.md    英文翻译
6自动预览并生成网站
bash
# 监听文件、增量构建并打开浏览器
nikola auto --browser

# 单次生产构建
nikola build
nikola check

# 生成结果位于 output 目录

下一步:把 conf.py、requirements 和内容提交到 Git,但排除 cache、.doit.db 与 output;升级 Nikola、主题或插件后先运行 nikola check,并在清理孤立文件前使用 nikola orphans 查看影响范围。

ALTERNATIVES

类似项目

这些工具同样面向静态内容发布,但 Nikola 更突出多格式编译、图片画廊和基于 Task 的细粒度增量构建。

COMPARISON

Nikola vs Pelican

Nikola 与 Pelican 都是 Python 静态站点生成器,并支持 Markdown、reStructuredText、主题和插件;Nikola 更强调 doit 增量任务、多格式与图库,Pelican 则拥有更精简的 Article/Page/Jinja 出版模型。

比较维度NikolaPelican
构建模型doit Task 与文件依赖驱动的增量构建Generator、缓存与选择性输出写入
内容格式reST、Markdown、Notebook、HTML、Pandoc 等reST、Markdown、HTML,可通过 Reader 扩展
模板系统Mako 或 Jinja2 主题统一使用 Jinja 主题
内容模型Post、Page、Gallery、Listing、Tag 和 CategoryArticle、Page、Author、Category、Tag 和 Translation
媒体能力图库、缩略图、EXIF、ICC 和 Lightbox 内置静态资源为主,图片处理通常交给插件或外部工具
多语言内容、主题文本、导航与路径配置较完整核心关联内容翻译,语言子站通常使用插件
扩展方式Command、Task、Compiler 等 Python 插件Signal、Reader、Generator 和命名空间插件
更适合Notebook、图库、多语言和多格式内容站Jinja 出版、传统博客和精简 Python 管线
如何选择

如果站点包含 Jupyter Notebook、摄影图库、多语言页面或多种输入格式,并且重视重复构建速度,Nikola 的一体化能力更合适;如果团队希望保持简单的 Article/Page 模型、统一使用 Jinja,或已有 Pelican Signal 插件,Pelican 更直接。两者都应先用真实主题与内容量验证扩展维护状态和干净构建结果。

VERIFICATION

资料核验

版本、维护信息与本页采用的官方资料来源。

最后核验2026 年 7 月 26 日
核验版本官方当前稳定版与文档主线
内容维护Docs100 编辑整理
项目维护状态活跃维护

本次核验覆盖 Nikola 的核心定位、主要能力、官方入口与开源许可。项目版本持续更新,具体补丁版本、兼容性和迁移要求请在采用前继续核对官方发布记录。

维护状态核验2026 年 7 月 26 日 · 最近可见代码活动:2026 年 6 月 21 日

官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 6 月 21 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。

查看官方仓库