Hey! This is Cytoplasm, a simple static blogging-and-other-things generator. Cytoplasm takes some posts and templates and outputs a bunch of HTML files.
Here are some things I think are exciting about it:
Cytoplasm makes really portable websites. It just outputs a bunch of HTML files that you can put pretty much anywhere. The build script,
cytoplasm, will run anywhere you have Python installed. It's tested in 2.7.2.
It's really configurable. Almost everything Cytoplasm does is defined by your site's interpreters and controllers, which live in
_controllers, respectively. You can change anything there; interpreters are just functions with a certain decorator and controllers are just classes that inherit from
Cytoplasm sites work really well as Git repositories. New controllers can be installed as git submodules.
There's a testing server that automatically rebuilds your site whenever you make a change to it --
cytoplasm serve -r. This makes playing with templates and controllers really simple and painless.
Easy deployment to github pages with
cytoplasm git-deploy; never worry again about how clumsy using git for generated content is.
Cytoplasm is mostly beta right now. Things might change very frequently and then not at all for a few weeks. Most of the time, though, it works; if you have any questions or problems, ask!
You can install the version on PyPI, which might get a little out of date:
pip install cytoplasm
Or you can install directly from this Git repository:
pip install git+git://github.com/startling/cytoplasm.git
You can start a blank site in an empty directory by running
cytoplasm init bare (though note that you must have Git installed for this to work). Cytoplasm will start you with a minimal configuration file at
_config.py and the blog controller, though you won't have any posts yet.
Posts go in
_posts and start with a header that looks like this:
title: An Example Post date: 2011/12/17 tags: [category1, category2]
cytoplasm build will build your site and put the output in
The first thing you'll want to do after you have some posts is to copy the templates from the blog controller's example templates (
_controllers/blog/templates) to a new directory called
_templates. In order to tell your blog controller to use these new templates, change in
("blog", ["_posts", "_build/blog", "_controllers/blog/templates"]),
("blog", ["_posts", "_build/blog", "_templates"]),
Mess with your templates to your heart's content.
Cytoplasm comes with a built-in server for testing things locally. To use it,
cytoplasm serve. To get Cytoplasm to rebuild the site whenever you make a change,
cytoplasm serve -r.
For development, you should probably clone this repository and install it with
pip install -e .. You can test that you didn't break anything with
If you're messing with a controller and there's a Cytoplasm site in the current working directory, you can run all of the controllers' tests with
cytoplasm test -c.