npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

wp-post-cli

v1.1.6

Published

WordPress Markdown Post CLI - Convert and publish Markdown to WordPress

Downloads

21

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
これは危険の警告です。
:::

画像

![代替テキスト](./images/image.jpg)

画像は自動的にWordPressにアップロードされ、必要に応じてリサイズされます。

実行方法

方法1: Dockerコンテナとして実行

:::step

  1. 環境変数の設定(以下のいずれかの方法を選択):

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
  1. Dockerイメージのビルドと実行:
docker compose up app

:::

方法2: コマンドラインツールとして実行

:::step

  1. パッケージのインストール:
pnpm install
  1. 環境変数の設定(以下のいずれかの方法を選択):

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
  1. CLIツールとして実行:
# TypeScriptから直接実行
pnpm run start

# またはビルドしてから実行
pnpm run build
node dist/index.js

:::

方法3: グローバルCLIツールとしてインストール

:::step

  1. パッケージをグローバルにインストール:
# ローカルのソースから
pnpm install -g .

# またはnpmパッケージから(公開後)
npm install -g @imagepit/wp-post
  1. 任意のディレクトリから実行:
# 環境変数を設定してから実行
wp-post

# または環境変数を指定して実行
WP_USERNAME=your-username WP_PASSWORD=your-password WP_API_URL=your-api-url wp-post

:::

GitHub Actionsでの利用方法

  1. GitHubリポジトリの"Settings" > "Secrets and variables" > "Actions"で以下のシークレットを設定:

    • WP_USERNAME
    • WP_PASSWORD
    • WP_API_URL
      • ドメイン部分までhttps://kusanagi.dx-wp.net
  2. Markdownファイルを配置:

    • 投稿: content/posts/ディレクトリ
    • ページ: content/pages/ディレクトリ
  3. 変更をmainブランチにプッシュすると自動的に処理が実行されます

設定のカスタマイズ

context.tsの各メソッドをオーバーライドすることで、以下の設定をカスタマイズできます:

  • 画像の最大サイズ(getImageMaxSize
  • 画像のリサイズ設定(imageResize
  • カスタムコンテナの定義(getCustomContainer
  • HTMLの整形(getFormatHtml
  • その他の投稿関連設定

注意事項

  1. WordPressのREST APIが有効になっていることを確認してください
  2. 投稿ユーザーに適切な権限が付与されていることを確認してください
  3. 大量のファイルを一度に処理する場合は、APIのレート制限に注意してください
  4. 画像ファイルは各コンテンツディレクトリ(content/posts/またはcontent/pages/)からの相対パスで参照してください
  5. ページの親子関係を設定する場合、親ページが先に処理されるよう自動的に並び替えられます

エラーハンドリング

  • ファイルの処理中にエラーが発生した場合、そのファイルのログが出力され、プロセスは終了します
  • 画像のアップロードに失敗した場合、エラーメッセージが表示されます
  • WordPressへの接続に失敗した場合、詳細なエラー情報が出力されます
  • 親ページが見つからない場合、子ページの処理はスキップされ、警告が表示されます

ライセンス

MIT License - 詳細はLICENSEファイルを参照してください。