🐕

Qiitaの記事をzennに移行したときにしたこと

2020/09/23に公開

zennの虜になったので、Qiitaから移行することにしました
そのときにしたことをまとめています

基本的な流れ

  1. QiitaAPIを使って、自分の記事をすべて取得する
  2. 取得した内容からzennのフォーマットに合うように調整
  3. 2.の内容をコミット、プッシュする

事前準備

ローカルから移行したので、GitHubリポジトリでZennのコンテンツを管理する環境が必要になります

QiitaAPIを使って、自分の記事をすべて取得する

https://qiita.com/api/v2/users/:user_id/itemsで、:user_idの記事をすべて取得します
記事数が少ない方(私)はこれだけで十分ですが、多い方はパラメータで件数を増やすことができます

取得した内容からzennのフォーマットに合うように調整

あとは取得したjsonからzennのフォーマットに合うようにします
node.jsを実行しています
crypto-random-stringrequestを使っているので、インストールします

npm install crypto-random-string request

実行したソースコードは↓になります

const cryptoRandomString = require("crypto-random-string");
const fs = require('fs');

function generateSlug() {
  return cryptoRandomString({ length: 20, type: "hex"});
}

fs.readFile('data.json', 'utf-8', (err, data) => {
  jsonData = JSON.parse(data)
  jsonData.forEach(d => {
    var toppics = d.tags.map(tag => tag.name)
    var title = d.title
    var header = `---
title: "${title}"
emoji: "🔖"
type: "tech" # tech: 技術記事 / idea: アイデア
topics: ["${toppics.join('","')}"]
published: true
---
`
    var body = d.body
    var issue = `${header}${body}`
    var fileName = `${generateSlug()}.md`
    fs.writeFile(fileName, issue, (err) => {
      if (err) throw err
    })
  });
})

私は一度QiitaAPIから取得したデータをjsonファイルとして保存して実行していますが、QiitaAPIから取得した内容をそのまま使って実行するのもOKだと思います
このとき、引っ越したばかりでネット環境がない状態なので、一度保存してサクサク作れるようにしました
留意点としては↓になります

  • すべて「articleのフォーマット」「tech(技術記事)」「公開」「🔖」で生成されます
    • 内容によって自力で調整する必要があります
  • Qiitaのタグを、zennのトピックスにしています
  • ファイル名はzenn new:articleで生成されるときと同じソースコードにしています

2.の内容をコミット、プッシュする

ファイル生成が終わったら、それらのファイルをローカルリポジトリに移動してcommit、pushすればOKです

Discussion