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