Markdownの記事をEmDashへ入れる|このサイトの20記事を流し込んだ方法
このサイトの記事は、すべてMarkdownで書いてからEmDashへ入れています。Markdownを Portable Text に変えて seed.json へ流し込む小さなプログラムの中身と、20記事を入れたときの手順を紹介します。
このサイトの記事は、編集部が Markdown(`.md` ファイル)で書いてから EmDash へ入れています。管理画面で1本ずつ打ち込むのではなく、記事のファイルをまとめて流し込みました。その方法を紹介します。
なぜ Markdown で書くのか
EmDash の本文は、HTML ではなく Portable Text(文章を部品の並びとして持つ JSON)で保存されます(Portable Text の説明)。Portable Text を手で書くのは大変なので、書きやすい Markdown で書き、プログラムで変換することにしました。
Markdown のファイルは、ふつうのテキストとしてパソコンに残ります。履歴を取ったり、まとめて直したりもしやすくなります。
記事ファイルの形
1本の記事は、先頭に記事の情報、その下に本文を書きます。
---
slug: japanese-font
title: EmDashで日本語フォントを使う|Noto Sans JPへの切り替え
excerpt: 記事の要約(一覧や検索結果に出る文)
category: customize
tags: astro
---
本文をここから書く。
## 見出しcategory と tags には、seed.json に登録したカテゴリーとタグのスラッグを書きます。登録していないスラッグを書くと、変換のときにエラーで止まるようにしました。
変換のプログラムがすること
編集部の変換プログラム(Python で170行ほど)は、次のことをします。
content/posts/の.mdを全部読み、先頭の情報と本文に分ける- 本文を1行ずつ見て、Portable Text の部品に変える
- 雛形の
seed/seed.jsonの記事・固定ページ・サイト名・メニュー・カテゴリーを差し替える
本文の変換で扱う書き方は、次のものだけに絞りました。
##と###の見出し →h2・h3の部品- 空行で区切った段落 →
normalの部品 -の箇条書きと1.の番号付き →listItem付きの部品>の引用 →blockquoteの部品- 「``
」で囲んだコード →code` の部品(言語名も持たせる) - 文中の太字・
コード・リンク → 文字の飾り(marks)とリンクの情報(markDefs)
表は使っていません。スマートフォンで横にはみ出しやすいためです。
20記事を入れた手順
変換プログラムを動かすと、seed/seed.json が書き換わります。
py scripts/build_seed.py画面には posts=20 pages=2 のように件数と記事の一覧が出ます。--check を付けると、書き換えずに件数と一覧だけ確かめられます。
あとは、空のデータベースで初期設定をすると記事が入ります(初期設定の流れと守り方)。編集部は手元の wrangler dev で先に試し、記事一覧と各記事が表示されることを確かめました。
気をつけたこと
- seed は「空のデータベース」にしか入らない。一度初期設定を済ませたサイトへ記事を足すときは、seed ではなく EmDash の CLI や管理画面を使います
- 記事の中のリンクは
/posts/<スラッグ>で書きます。スラッグを後から変えると、リンクが切れます - 雛形の
seed.jsonは、書き換える前に別の場所へ写しを取りました