カスタムコンポーネントを MDX に差し込む際は、AST を直接操作せず import + JSX で表現するとシンプルです。インラインの
<Marker> やブロック要素の <ReviewBlock> はテキストノードの置き換えだけで済むため、walk() など軽量なトラバーサでも十分に扱えます。外部リンクには
<Link> を使い、rel="noopener" とアイコン付与を自動化しておきましょう(例:
Astro Markdown Guide
)。
Marker の使用例
AST を直接編集するときはノードの value と children を必ず確認しましょう。
ReviewBlock の使用例
総評
評価: 4.5ネタバレを表示
ネタバレを含むレビューの場合は hasSpoiler=true を付与して details
で包むと、閲覧者が自分のタイミングで開けるようになります。
ConversationBlock の使用例
サポートとのやり取り
-
利用者
最近バッテリーの減りが早いのですが、対処方法はありますか?
-
サポート
まずは省電力モードをオンにし、改善しない場合はバッテリー診断ツールをご利用ください。
-
利用者
わかりました。ありがとうございます!
標準テキストと引用レイアウト
MDX の本文は .post-body クラスが当たるため、通常段落でも leading-7 と space-y-6 が効いて読みやすい間隔になります。インラインコード(例: pnpm validate)や強調を入れても、周辺要素とのバランスは自動で取られます。
長文の引用は
blockquoteタグを使うと余白・背景色・ボーダーが追加され、段落との視覚的な差別化が容易になります。テーマのライト / ダーク双方に対応済みです。
リストと番号付き手順
- 外部サービス連携の前に API キーを
.envに保存する <Link>コンポーネントで外部リンクを一括制御する- 記事テンプレートに共通の frontmatter を用意する
pnpm lintで静的解析pnpm validateで Frontmatter / スラッグを検証pnpm --filter sample-site buildで本番想定ビルドを確認
コードブロックとプリセット
# コマンド群は pre > code にラップされ、背景色と角丸が適用される
pnpm lint
pnpm validate
pnpm --filter sample-site build
export function buildSeoMeta(input: BuildSeoMetaInput) {
const defaultImage = new URL('/ogp.png', input.site.url).toString();
return {
title: input.seo?.title ?? input.site.name,
description: input.seo?.description ?? input.site.description,
image: input.seo?.image ?? defaultImage,
};
}
表形式の比較
| ツール | 目的 | 実行タイミング |
|---|---|---|
pnpm lint | ESLint での静的解析 | commit 前 / CI |
pnpm validate | Frontmatter / リンク検証 | draft 作成後 / CI |
pnpm --filter sample-site build | Astro ビルドとルーティング確認 | リリース前 / Nightly |
画像とキャプション
キャプションです。

16:9 のサムネイルも .post-body figure
のスタイルで余白とキャプションが整います。