🐕
Qiitaの記事をzennに移行したときにしたこと
zennの虜になったので、Qiitaから移行することにしました
そのときにしたことをまとめています
基本的な流れ
- QiitaAPIを使って、自分の記事をすべて取得する
- 取得した内容からzennのフォーマットに合うように調整
- 2.の内容をコミット、プッシュする
事前準備
ローカルから移行したので、GitHubリポジトリでZennのコンテンツを管理する環境が必要になります
QiitaAPIを使って、自分の記事をすべて取得する
https://qiita.com/api/v2/users/:user_id/items
で、:user_id
の記事をすべて取得します
記事数が少ない方(私)はこれだけで十分ですが、多い方はパラメータで件数を増やすことができます
取得した内容からzennのフォーマットに合うように調整
あとは取得したjsonからzennのフォーマットに合うようにします
node.jsを実行しています
crypto-random-string
とrequest
を使っているので、インストールします
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