Jekyll: Blogeinträge importieren

Auf meinem Weg von Movabletype zu Jekyll möchte ich natürlich meine alten Blogeinträge “mitnehmen”. Jekyll bietet hierfür auch einen Importer an.

Eigentlich war ich ja geistig darauf vorbereitet hier noch umfangreiche “Massagen” an Konvertierungsergebnis vollziehen zu müssen aber von dem Ergebnis war ich dann doch sehr beeindruckt.

Ausgangspunkt war eine recht einfache Debian Testumgebung mit Apache/PHP/Mysql und dem hier beschriebenen Jekyll Basissetup. In Mysql gab es ein Backup meiner Movabletype Datenbank

Die “Dokumentation” für den Importer ist recht “schlank”. Zuerst soll er so installiert werden

sudo gem install jekyll-import

Was aber nicht so einfach klappte. Einige Fehler z.b. zlib is missing; necessary for building libxml2

bei der Installation konnte ich durch die Nachinstallation von Paketen

 apt-get install libghc-zlib-dev
 apt-get install libmysqlclient15-dev

fixen. Dann klappte es auch mit der Installation des Importers und einiger Voraussetzungen (die man nur im Quelltext genannt bekommt)

sudo gem install jekyll-import mysql sequel
Building native extensions.  This could take a while...
Fetching: jekyll-import-0.6.0.gem (100%)
Successfully installed nokogiri-1.6.6.2
Successfully installed jekyll-import-0.6.0
2 gems installed

Dann geht es allerdings sehr schnell:

ruby -rubygems -e 'require "jekyll-import";JekyllImport::Importers::MT.run({"dbname"   => "mt_migration","user"     => "root","password" => "geheim","host"     => "localhost","comments"     => false,"blog_id"=> 4})'

Den Parameter “Blog_id” musste ich noch hinzufügen da in meiner Movabletype Installation verschiedene Blogs laufen. Im Verzeichnis _posts findet man dann ein Markdown Dokument pro Blogeintrag und kann dann mit

 jekyll build --source /home/hbauer/blog --destination /var/www/shop

die Site generieren lassen. Vom Ergebnis bin ich extrem beeindruckt. Selbst alte Dokumente, die ich im Html Editor geschrieben haben, wurden einwandfrei importiert.

Damit die URL das gleiche Format wie in meiner alte

Was (noch) nicht geht:

Kleinere inhaltlich Nachbearbeitung sind notwendig:

  • einzelne Dokumente die selbst yaml header enthalten haben wurden nicht importiert (kann ich verstehen)
  • Pages werden als posts importiert (aber davon habe ich nur eine Handvoll)

Technische Anpassungen sind notwendig bei:

  • fehlenden Tags
  • manchen URLs die Kategorien enthalten und ein unterschiedlichem URL Format vorweisen
  • die alten Permalinks werden nicht übernommen

Die URL Formatierungen kann man einfach durch eine Anpassung in der Konfiguration lösen:

sublime _config.yml_
 permalink: /:year/:month/:title.html

Die Permalinks kann man fixen in dem man im Importer ein “encode” um den basename legt

 vi /var/lib/gems/1.9.1/gems/jekyll-import-0.6.0/lib/jekyll-import/importers/mt.rb
     'basename' => encode(post[:entry_basename],options)

Vielleicht bekomme ich es ja auch noch hin in den Importer eine Fußnote einzubauen die darauf hinweist das dies ein Importiertes Dokument ist und der eine oder andere Formatierungsfehler enthalten sein könnte.

Bis hier hin ist es einfach. Hoffentlich klappen die Anpassungen derTags auch so einfach