Blended is an open-source, GPL 3.0-licensed static website generator written in Python that converts content in Markdown, HTML, Textile, reStructuredText, Jade, Docx, and plain text into a complete static site with an optional built-in FTP uploader.
What is Blended?
Blended is a static website generator written in Python and distributed under the GPL 3.0 open-source license. It takes source content written in formats such as HTML, Markdown, Textile, reStructuredText, Jade, Docx, and Plain Text, processes it through an HTML-based templating system, and outputs a deployable static website. The generator runs on any system with Python and pip installed, and it is available via PyPI and GitHub. Blended also includes a built-in FTP uploader for direct deployment.
Key Features
- Multi-format content support — Accepts content written in HTML, Markdown, Textile, reStructuredText, Jade, Docx, and Plain Text, so writers can use their preferred markup.
- CSS and JS preprocessing — Compiles SASS, Less, Stylus, and CoffeeScript into final web assets during the build process.
- Template system — Uses four template files: header.html (required), footer.html (required), home_page.html, and content_page.html, plus optional navigation templates (up to six) and a page_list_item.html template.
- Extensive variable system — Provides built-in placeholders such as
website_name, author_bio, page_date, relative_root, and build_time, which are replaced with config values during generation.
- Python plugin system — Supports installation of plugins from PyPI or GitHub, such as Disqus, Google Analytics, HTML Comment Box, and Twitter Cards, and allows multiple plugins to run together.
- Built-in FTP uploader — Deploys the generated site directly to a remote server via FTP without needing a separate upload tool.
- Importer tools — Includes commands to import posts from WordPress (via the Posts export) and Blogger (via the Backup Site export).
- Custom variables — Lets users define their own variables in config.py and reference them in templates.
Who is it for?
- Static site developers — Builders who want a lightweight Python alternative to heavier CMS platforms and want full control over HTML templates.
- Bloggers — Writers who want to publish posts written in Markdown or Textile and generate a clean, fast static blog without a database.
- Web designers — Designers who need to compile SASS, Less, Stylus, or CoffeeScript while producing static HTML for clients.
- Open-source project maintainers — Teams building project websites or redesigning existing sites (as seen with the Art of Illusion, DVDStyler, MakeHuman, and LilyPond redesigns) who can reuse Blended's template and plugin ecosystem.
What can you do with Blended?
- Import a WordPress or Blogger blog — Use the
import-wp command with a Posts export file, or the import-blogger command with a Backup Site export, to generate a new static site from existing content.
- Build an interactive development workflow — Use
blended interactive to rebuild the site automatically on every file change.
- Extend sites with plugins — Add comment boxes, analytics, social cards, Bootstrap imports, or Google Fonts by listing plugin names in config.py.
- Deploy via FTP — Publish the generated site directly to a hosting server using the built-in FTP uploader.
How does Blended work?
Install it with pip install blended, then run blended init to scaffold a new project. Content pages and templates live in the project directory; running blended build compiles everything into an output folder (customizable with the --outdir flag), and blended interactive triggers rebuilds on file changes. In config.py, you can enable CSS and JS minification, define custom variables, and list installed plugins.
