Visitors are also reading...
← PreviousNext →

Move your blog from blogger to metalsmith today

14 Jul 2016


Over the years I have maintained a technical blog on blogger.
However, blogger's interface is not so friendly for technical writing.

After a lot of thought, I decided to use metalsmith with markdowns, github, s3 and travis-ci to maintain my blog.
Some of the benefits I got from it are:

Step 1 - Export your blogger blog in JSON format

Simply use wget

Step 2 - decide on folder structure and convert JSON to markdowns

I decided on

  --- layouts
  --- partials
  --- posts
         ----- YEAR in 4 digits
                 ---- MONTH in 2 digits
                          ------------------- post title as slug
  --- scripts 
  --- styles (scss)
  --- (main file)

and then I used a simple script that converts the JSON data to this folder structure. You can check out my script on my mograblog github project.

Step 3 - Write your metalsmith file

Metalsmith is so intuitive and powerful it's insane!

You basic metalsmith script looks like

var Metalsmith = require('metalsmith');

var app = new Metalsmith(__dirname)
            .use(function(){ ..  do something .. })
            .use(function(){ ..  do something .. })
            .use(function(){ ..  do something .. })

            .build(function(err){ console.log(err); })

so basically you compose a list of plugins to manipulate your files.

You can check my metalsmith file at my mograblog github project.

Some obvious plugins that you will need are:

I am also using

Step 4 - Upload with bucketful

Bucketful is a nifty library in nodejs that deploys static files to s3.

Step 5 - Define your build

Simply setup your package.json file like so

"scripts": {
    "start": "metalsmith-start",
    "build": "node metalsmith.js",
    "upload": "npm run build && echo 'starting upload' && bucketful --source build --bucket --key $S3_KEY --secret $S3_SECRET_KEY"

So now, all you have to do is run npm run upload to upload your blog.
Note that environment variables must be defined

Step 6 - Define your travis.yml

language: node_js
script: npm run upload
  - master
  secure: __some_long_string__

To get your secret S3 credentials you need to install travis command line and run the command

travis S3_SECRET_KEY="$S3_SECRET_KEY" S3_KEY="$S3_KEY" --add env

And that's it - now if you enable the repository in travis, it will upload the website.

← PreviousNext →