wp-post-cli
v1.1.6
Published
WordPress Markdown Post CLI - Convert and publish Markdown to WordPress
Downloads
21
Maintainers
Readme
WordPress Markdown Post Docker & CLI Tool
MarkdownファイルをWordPressに一括投稿するためのDockerコンテナとコマンドラインツールを提供します。GitHub Actionsと組み合わせた自動化、Dockerコンテナでの実行、またはCLIツールとしての直接実行が可能です。
機能
- Markdownファイルの一括投稿(posts/pages)
- フロントマターによるメタデータの設定
- 画像の自動アップロードとリサイズ
- カスタムコンテナのサポート
- コードブロックのシンタックスハイライト
- フィーチャー画像の自動設定
- 親子関係を持つページの階層構造サポート
- Dockerコンテナまたはコマンドラインツールとして実行可能
必要要件
Dockerを使用する場合
- Docker
- WordPressサイト(REST APIが有効)
CLIツールとして使用する場合
- Node.js 18以上
- pnpm(パッケージマネージャー)
- WordPressサイト(REST APIが有効)
環境変数
環境変数は以下の2つの方法で設定できます:
1. .envファイルを使用する場合(推奨)
プロジェクトのルートディレクトリに.envファイルを作成し、以下の環境変数を設定します:
WP_USERNAME=your-username
WP_PASSWORD=your-password
WP_API_URL=your-wp-json/wp/v2セキュリティのため、.envファイルは必ず.gitignoreに追加してバージョン管理から除外してください。
代わりに.env.exampleとして設定例を提供することをお勧めします。
2. 環境変数を直接設定する場合
以下の環境変数を直接設定することもできます:
WP_USERNAME: WordPressのユーザー名WP_PASSWORD: WordPressのパスワードWP_API_URL: WordPressのREST APIのベースURL(例:https://example.com/wp-json/wp/v2)
ディレクトリ構造
.
├── .github/
│ └── workflows/
│ └── wordpress-post.yml # GitHub Actionsワークフロー
├── content/
│ ├── posts/ # 投稿用Markdownファイル
│ └── pages/ # ページ用Markdownファイル
├── src/
│ ├── index.ts # エントリーポイント
│ ├── context.ts # 設定管理
│ ├── utils/
│ │ └── logger.ts # ログ出力ユーティリティ
│ └── post/
│ ├── index.ts # 投稿処理のメインクラス
│ ├── types.ts # 共通の型定義
│ ├── document.ts # ドキュメント処理
│ ├── markdown.ts # Markdown変換処理
│ ├── image.ts # 画像処理
│ └── wordpress.ts # WordPress API通信
├── Dockerfile # Dockerイメージ定義
├── package.json
└── tsconfig.jsonソースコードの構成
src/post/ディレクトリ
types.ts: 共通の型定義(Progress, Document, PostData, ImageSize, MediaItem)document.ts: Markdownドキュメントの解析とフロントマター処理markdown.ts: Markdownの変換とカスタムコンテナの処理image.ts: 画像のアップロードとサイズ処理wordpress.ts: WordPress REST APIとの通信処理index.ts: 投稿処理の統合と調整
src/utils/ディレクトリ
logger.ts: ログ出力の統一管理(DEBUG, INFO, WARN, ERROR)
各クラスは単一責任の原則に従い、以下の役割を担っています:
DocumentProcessor: フロントマターの解析とメタデータの処理MarkdownProcessor: Markdownの変換、シンタックスハイライト、カスタムコンテナの処理ImageProcessor: 画像のアップロードとサイズ最適化WordPressClient: WordPress APIを使用した投稿、カテゴリー、タグの管理PostProcessor: 上記の処理を統合し、投稿のワークフローを管理
Markdownファイルの書き方
フロントマター
投稿(posts)の場合
---
title: 投稿タイトル
slug: post-slug
status: draft # draft, publish, private
categories: [category1, category2]
tags: [tag1, tag2]
featured_media: ./featured-image.jpg # フィーチャー画像のパス
---ページ(pages)の場合
---
title: ページタイトル
slug: page-slug
status: draft # draft, publish, private
parent: parent-page-slug # 親ページのslug(階層構造を作る場合)
featured_media: ./featured-image.jpg # フィーチャー画像のパス
---カスタムコンテナ
:::note
これは注意書きです。
:::
:::caution
これは警告です。
:::
:::danger
これは危険の警告です。
:::画像
画像は自動的にWordPressにアップロードされ、必要に応じてリサイズされます。
実行方法
方法1: Dockerコンテナとして実行
:::step
- 環境変数の設定(以下のいずれかの方法を選択):
A) .envファイルを使用する場合(推奨):
# .envファイルを作成し、必要な環境変数を設定
cp .env.example .env
# .envファイルを編集して適切な値を設定B) 環境変数を直接設定する場合:
export WP_USERNAME=your-username
export WP_PASSWORD=your-password
export WP_API_URL=your-wp-api-url- Dockerイメージのビルドと実行:
docker compose up app:::
方法2: コマンドラインツールとして実行
:::step
- パッケージのインストール:
pnpm install- 環境変数の設定(以下のいずれかの方法を選択):
A) .envファイルを使用する場合(推奨):
# .envファイルを作成し、必要な環境変数を設定
cp .env.example .env
# .envファイルを編集して適切な値を設定B) 環境変数を直接設定する場合:
export WP_USERNAME=your-username
export WP_PASSWORD=your-password
export WP_API_URL=your-wp-api-url- CLIツールとして実行:
# TypeScriptから直接実行
pnpm run start
# またはビルドしてから実行
pnpm run build
node dist/index.js:::
方法3: グローバルCLIツールとしてインストール
:::step
- パッケージをグローバルにインストール:
# ローカルのソースから
pnpm install -g .
# またはnpmパッケージから(公開後)
npm install -g @imagepit/wp-post- 任意のディレクトリから実行:
# 環境変数を設定してから実行
wp-post
# または環境変数を指定して実行
WP_USERNAME=your-username WP_PASSWORD=your-password WP_API_URL=your-api-url wp-post:::
GitHub Actionsでの利用方法
GitHubリポジトリの"Settings" > "Secrets and variables" > "Actions"で以下のシークレットを設定:
WP_USERNAMEWP_PASSWORDWP_API_URL- ドメイン部分まで
https://kusanagi.dx-wp.net
- ドメイン部分まで
Markdownファイルを配置:
- 投稿:
content/posts/ディレクトリ - ページ:
content/pages/ディレクトリ
- 投稿:
変更をmainブランチにプッシュすると自動的に処理が実行されます
設定のカスタマイズ
context.tsの各メソッドをオーバーライドすることで、以下の設定をカスタマイズできます:
- 画像の最大サイズ(
getImageMaxSize) - 画像のリサイズ設定(
imageResize) - カスタムコンテナの定義(
getCustomContainer) - HTMLの整形(
getFormatHtml) - その他の投稿関連設定
注意事項
- WordPressのREST APIが有効になっていることを確認してください
- 投稿ユーザーに適切な権限が付与されていることを確認してください
- 大量のファイルを一度に処理する場合は、APIのレート制限に注意してください
- 画像ファイルは各コンテンツディレクトリ(
content/posts/またはcontent/pages/)からの相対パスで参照してください - ページの親子関係を設定する場合、親ページが先に処理されるよう自動的に並び替えられます
エラーハンドリング
- ファイルの処理中にエラーが発生した場合、そのファイルのログが出力され、プロセスは終了します
- 画像のアップロードに失敗した場合、エラーメッセージが表示されます
- WordPressへの接続に失敗した場合、詳細なエラー情報が出力されます
- 親ページが見つからない場合、子ページの処理はスキップされ、警告が表示されます
ライセンス
MIT License - 詳細はLICENSEファイルを参照してください。
