GrideaからMizukiへの移行
841字程度約3分
2025-08-16
このガイドでは、既存のGrideaブログコンテンツをMizukiテーマに移行する方法を説明します。
Mizukiとは?
MizukiはAstroをベースに開発されたモダンなブログテーマで、以下の特徴があります。
- 高速な静的サイト生成
- モダンなデザインスタイル
- 優れたSEOサポート
- レスポンシブなレイアウト
- 多様なコンテンツ形式をサポート
GrideaとMizukiの記事形式の違い
Grideaは記事をMarkdown形式で保存し、Frontmatterを含んでいます。このため、GrideaからMizukiへの移行は、どちらもMarkdownとFrontmatterに基づいているため、比較的簡単です。
主な違いは、Frontmatterフィールドの名前付けと構造、および静的リソース(画像など)のパス処理にあります。
Gridea記事の例:
---
title: "私のGridea記事"
date: 2023-10-26 10:00:00
tags:
- エッセイ
categories:
- 日常
---
これはGrideaブログ投稿のコンテンツです。
## サブタイトル
さらにコンテンツ...
Mizuki形式の例:
---
title: Markdownチュートリアル
published: 2025-01-20
pinned: true
description: Markdownブログ投稿の簡単な例です。
tags: [Markdown, Blogging]
category: Examples
licenseName: "Unlicensed"
author: emn178
sourceLink: "https://github.com/emn178/markdown"
draft: false
---
私のGridea記事
これはGrideaブログ投稿のコンテンツです。
サブタイトル
さらにコンテンツ...
## 移行手順
### 1. 準備
1. Mizukiテーマがインストールされていることを確認してください。
2. 記事の保存ディレクトリ `src/content/posts/` を準備します。
3. Grideaブログのソースファイルを見つけます。通常、Grideaクライアントで設定された「ソースファイルディレクトリ」にあります。記事は通常 `[ソースファイルディレクトリ]/posts/` にあります。
### 2. 記事ファイルのコピー
Grideaブログのソースファイルディレクトリにある `posts` フォルダからすべてのMarkdownファイルをMizukiの記事ディレクトリ `src/content/posts/` にコピーします。
### 3. Frontmatterの調整
これは移行プロセスで最も重要なステップです。Gridea記事のFrontmatterをMizukiのFrontmatter仕様に合わせて調整する必要があります。
#### 一般的なフィールドマッピング:
- `title`: Grideaの `title` はMizukiの `title` に直接対応します。
- `date`: Grideaの `date` (例: `2023-10-26 10:00:00`) はMizukiの `pubDate` (例: `2023-10-26`) に変換する必要があります。Grideaに `updatedDate` がない場合は、`pubDate` の値を `updatedDate` として使用できます。
- `tags`: Grideaの `tags` リストはMizukiの `tags` リストに直接対応します。
- `categories`: Grideaの `categories` リストは通常1つの要素しかなく、Mizukiの `category` に対応します。
- `description`: Grideaには個別の `description` フィールドがない場合があります。手動で追加するか、記事コンテンツから抽出できます。
- `cover`: Grideaには個別の `cover` フィールドがない場合があります。手動で追加できます。
- `draft`: Grideaは通常、記事が公開されているかどうかでこれを判断します。Mizukiでは `draft: true` または `false` が必要です。
#### 一括変更の提案:
大量の記事がある場合は、スクリプト(例: Pythonスクリプト)を作成してFrontmatterの変換を自動化することをお勧めします。
**概念的なPythonスクリプトの例:**
```python
import os
import re
import yaml
def migrate_gridea_frontmatter(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# Frontmatterとコンテンツを抽出
match = re.match(r'^---\s*\n(.*?)\n---\s*\n(.*)$', content, re.DOTALL)
if not match:
print(f"Skipping {file_path}: 有効なFrontmatterが見つかりません。")
return
fm_str = match.group(1)
body = match.group(2)
try:
gridea_fm = yaml.safe_load(fm_str)
except yaml.YAMLError as e:
print(f"Error parsing YAML in {file_path}: {e}")
return
mizuki_fm = {}
mizuki_fm['title'] = gridea_fm.get('title', 'Untitled')
# 日付の処理
date_str = gridea_fm.get('date', '').split(' ')[0] # 日付部分のみを取得
mizuki_fm['pubDate'] = date_str if date_str else 'YYYY-MM-DD'
mizuki_fm['updatedDate'] = date_str if date_str else 'YYYY-MM-DD'
mizuki_fm['description'] = gridea_fm.get('description', '') # Grideaにはない場合があるため、手動で追加が必要
mizuki_fm['tags'] = gridea_fm.get('tags', [])
mizuki_fm['category'] = gridea_fm.get('categories', ['Uncategorized'])[0] if gridea_fm.get('categories') else 'Uncategorized'
mizuki_fm['cover'] = gridea_fm.get('cover', '') # Grideaにはない場合があるため、手動で追加が必要
mizuki_fm['draft'] = gridea_fm.get('draft', False) # Grideaにはない場合があるため、デフォルトはFalse
new_fm_str = yaml.dump(mizuki_fm, allow_unicode=True, sort_keys=False)
new_content = f"---\n{new_fm_str}---\n\n{body}"
with open(file_path, 'w', encoding='utf-8') as f:
f.write(new_content)
print(f"Frontmatterを移行しました: {file_path}")
# 使用例
# posts_dir = 'path/to/your/mizuki/src/content/posts'
# for filename in os.listdir(posts_dir):
# if filename.endswith('.md'):
# migrate_gridea_frontmatter(os.path.join(posts_dir, filename))
4. 静的リソースの処理
Grideaは通常、画像などの静的リソースを [ソースファイルディレクトリ]/media/
または記事と同じレベルの assets
フォルダに保存します。これらのリソースをMizukiの public/
ディレクトリにコピーし、記事内のパスを更新する必要があります。
リソースファイルのコピー: Grideaの
media
フォルダ(または画像を含むassets
フォルダ)からすべての画像、ビデオ、その他のメディアファイルをMizukiのpublic/images/
またはpublic/assets/
ディレクトリにコピーします。ファイルパスの更新: Markdownファイル内で、画像リンクを一括置換して、Mizukiプロジェクト内の正しいパスを指すようにします。
- 例:

を
に置換します。 - 画像が記事と同じレベルの
assets
フォルダにある場合(例:
)、Mizukiの相対パスまたは絶対パス(例:
または
)に調整する必要があります。
- 例:
5. 内部リンクの更新
Grideaの記事に他の記事やページへの内部リンクが含まれている場合、これらのリンクがMizukiで有効であることを確認してください。
- Mizukiの記事リンクは通常
/posts/your-post-slug/
です。 - これらの内部リンクを解析して更新するスクリプトを作成する必要がある場合があります。
6. インポート結果の検証
インポート後、以下の項目を確認してください。
よくある質問
Q: Grideaのテーマ設定を移行するにはどうすればよいですか?
A: Grideaのテーマ設定はMizukiのものとは異なり、直接移行することはできません。Mizukiのドキュメントに従ってテーマを再設定する必要があります。
Q: Grideaのコメントを処理するにはどうすればよいですか?
A: Mizukiには組み込みのコメントシステムがありません。Disqus、Gitalk、Walineなどのサードパーティのコメントシステムを統合し、Grideaのコメントデータをこれらのシステムにインポートすることを検討できます。
Q: Grideaのカスタムページを移行するにはどうすればよいですか?
A: Grideaのカスタムページは、Mizukiで独立したページとして移行できます。コンテンツをMarkdownに変換し、Mizukiの src/content/pages/
ディレクトリに対応する .md
ファイルを作成します。
まとめ
GrideaからMizukiへの移行は比較的簡単で、主な作業はFrontmatterフィールドのマッピングと静的リソースパスの調整に集中します。自動化スクリプトを作成することで、効率を大幅に向上させることができます。移行後には、すべてのコンテンツと機能が正常であることを徹底的に検証してください。