naver-blog-converter は何をしますか?
🛠️ MarkdownファイルをNaverブログ互換のHTMLに変換し、Mermaid図のレンダリングとGoogle Cloudへのアップロードを自動化して、シームレスなコンテンツ共有を実現します。
機能
- Markdown → HTML変換: MarkdownファイルをNaverブログで利用可能なHTMLに変換します。
- Mermaid図のレンダリング: Mermaid記法の図を自動的に画像に変換して埋め込みます。
- Google Cloud Storageへのアップロード: 画像やその他のアセットをGCSにアップロードし、公開URLを生成します。
前提条件
- Node.js (v16以上)
- Google Cloudアカウントとプロジェクト
- GCSバケット(公開アクセス可能)
インストール
npm install -g @breyneraguilar/naver-blog-converter
または、プロジェクト内でローカルにインストール:
npm install @breyneraguilar/naver-blog-converter
設定
- Google Cloudのサービスアカウントキー(JSON)を取得し、安全な場所に保存します。
- 環境変数を設定します:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"
export GCS_BUCKET_NAME="your-bucket-name"
- 設定ファイル
naver-blog-config.jsonをプロジェクトのルートに作成します:
{
"gcsBucket": "your-bucket-name",
"gcsPathPrefix": "blog-images",
"mermaidTheme": "default",
"mermaidOutputFormat": "png"
}
使用方法
基本コマンド
npx naver-blog-convert input.md output.html
オプション
| オプション | 説明 | デフォルト値 |
|---|---|---|
--config | 設定ファイルのパス | ./naver-blog-config.json |
--upload | GCSに画像をアップロード | true |
--no-upload | アップロードをスキップ | - |
--mermaid | Mermaid図のレンダリングを有効化 | true |
--no-mermaid | Mermaid図のレンダリングを無効化 | - |
例
# 基本的な変換とアップロード
npx naver-blog-convert post.md post.html
# アップロードせずに変換のみ
npx naver-blog-convert post.md post.html --no-upload
# カスタム設定ファイルを使用
npx naver-blog-convert post.md post.html --config ./custom-config.json
Mermaid図のサポート
Markdown内のMermaidコードブロックは、自動的にレンダリングされ画像として埋め込まれます。
```mermaid
graph TD
A[開始] --> B[処理]
B --> C[終了]
```
レンダリング後、上記のコードブロックは以下のようなHTMLに置き換えられます:
<img src="https://storage.googleapis.com/your-bucket/blog-images/mermaid-abc123.png" alt="Mermaid図" />
Google Cloud Storageへのアップロード
変換されたHTML内の画像は自動的にGCSにアップロードされ、絶対URLに置き換えられます。これにより、Naverブログで画像が正しく表示されるようになります。
注意事項
- GCSバケットは公開読み取りアクセスが許可されている必要があります。
- レンダリングされたMermaid画像は、ローカルの一時ディレクトリ(
/tmpまたはos.tmpdir())に保存された後、GCSにアップロードされて削除されます。 - NaverブログのHTML制限(特定のタグや属性の制限)に準拠するため、出力HTMLは簡素化されています。
トラブルシューティング
Mermaid図がレンダリングされない
- Puppeteer/Chromeがインストールされていることを確認してください(
npx puppeteer browsers install chrome)。 - インターネット接続を確認してください(Mermaidレンダリングに必要)。
GCSアップロードに失敗する
GOOGLE_APPLICATION_CREDENTIALS環境変数が正しく設定されているか確認してください。- サービスアカウントにGCSバケットへの
storage.objects.create権限があることを確認してください。
ライセンス
MIT
