Kobito.appのストレージはSQLiteなので、PDOを使うと読み込みができます。
下のPHPを実行したディレクトリに、YYYYMMDD_記事名.md というファイル名でエクスポートされます。
KobitoExport.php
<?php
$dbPath = $_ENV['HOME'].'/Library/Kobito/Kobito.db';
$pdo = new PDO('sqlite:'.$dbPath);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$rows = $pdo->query("SELECT * FROM ZITEM");
foreach ( $rows as $row )
{
$created = new DateTime('now', new DateTimeZone('GMT'));
$created->setTimestamp($row['ZCREATED_AT']);
$created->add(new DateInterval('P31Y')); // Objective-Cのタイムスタンプは2001-01-01 GMT始まり
$created->setTimezone(new DateTimeZone('Asia/Tokyo'));
$prefix = $created->format('Ymd').'_';
$filename = $prefix.$row['ZTITLE'].'.md';
$filename = convertFileName($filename);
if ( file_exists($filename) === true )
{
throw new RuntimeException(sprintf('File already exists: %s', $filename));
}
file_put_contents($filename, $row['ZRAW_BODY']);
echo $filename, PHP_EOL;
}
function convertFileName($value)
{
$value = str_replace(" ", "_", $value);
$value = str_replace("\\", "¥", $value);
$value = str_replace("/", "/", $value);
$value = str_replace(":", ":", $value);
$value = str_replace("*", "*", $value);
$value = str_replace("?", "?", $value);
$value = str_replace("\"", "”", $value);
$value = str_replace("<", "<", $value);
$value = str_replace(">", ">", $value);
$value = str_replace("|", "|", $value);
return $value;
}