pendpost について
pendpostは、開発者や代理店、技術系の個人事業者向けのローカル優先型ソーシャルメディアプランナーです。エージェントが投稿を作成・検査・予約し、人が承認するまで公開されません。
主な機能
- 01複数SNS向けの作成と予約
- 02公開前の人による承認
- 03ブランドルールと文面の検査
- 04公開サーキットブレーカーと停止
- 05ローカル実行とウェブダッシュボード
活用シーン
- 01複数SNSにまたがるキャンペーンの計画
- 02エージェントの投稿案を人が確認
- 03ブランドルールに沿った文面の確認
MCP 対応
pendpostはstdioとstreamable HTTPでMCPサーバーを提供し、対応クライアントから利用できます。計画、検査、承認、予約、公開のツールがあり、書き込み操作には人の承認が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
pendpost
エージェントが操作するソーシャルメディアと、人間による承認ゲート。
pendpost は、無料でオープンソース(MIT)のローカルファーストなソーシャルメディアプランナーです。AI エージェントが、Instagram、Facebook、LinkedIn、YouTube、X、Telegram、Discord、Mastodon、Nostr に投稿を作成して予約できるほか、WordPress や Ghost に長文ブログを投稿できます。Reddit、Pinterest、TikTok、Google Business Profile はベータ版です。すべての投稿は、ユーザーが管理する人間による承認ゲートを通ります。MCP ネイティブで、AI エージェントは投稿の作成、チェック、予約、キューへの登録を行えますが、人間が承認するまで公開されることはありません。アカウントの認証情報をエージェントに渡さず、アカウントにフラグが立てられることもなく、エージェントに作業を任せたい開発者、代理店、技術系の個人事業主向けに構築されています。
pendpost が他のスケジューラーと異なる点
多くの「AI ソーシャル」ツールは、エージェントを後付けしたスケジューラーです。pendpost はその逆です。エージェントと人間が連携するワークフローを中心に設計された運用レイヤーであり、スケジューラーにはない機能を備えています。
- 人間による承認ゲート。 すべての投稿に承認状態(
draft、approved、rejected)があり、フェイルクローズ方式です。承認されていない投稿は公開されません。plan_create_postは必ず下書きを作成し、状態を変更できるのはapprove_postまたはreject_postだけです。承認されるまで何も公開されません。デフォルトではユーザーが承認し、自動承認を設定できるのはオーナーだけで、いつでも取り消せます。 - アカウント停止を防ぐサーキットブレーカー。 Meta のエラー 368(アクションブロック)が発生すると、ブレーカーが作動して Meta のレーンを停止し、自動では再開しません。エラー 368 には機械判読可能な解除時刻が含まれないためです。ブロック中のヘルスプローブは、Graph へのトラフィックを一切送信しません。投稿頻度の上限に達した場合は、連続投稿を破棄せず延期します。また、レーンを停止するキルスイッチも常に利用できます。
- ヒューマナイザーによるブランドチェック。 公開前に、編集可能な
rules.jsonのルールに基づいてキャプションをチェックします。ヒューマナイザー層は、英語のAI生成文にありがちな特徴を検出します。エラーがある場合は公開をブロックし、警告は参考情報として表示します。 - プラットフォーム標準の予約投稿を忠実に活用。 プラットフォームが対応している場合(YouTube の
publishAt、Mastodon、WordPress、Ghost)、pendpost は投稿をプラットフォーム自身のスケジューラーに渡すため、パソコンの電源がオフでも公開されます。Instagram、Facebook、LinkedIn、X への投稿は、pendpost 自体から予約時刻に公開されます。オプションの 24 時間稼働クラウドサービスを有効にした場合はそのサービスから、有効にしない場合は pendpost の実行中にパソコンから、または常時稼働ホストから公開されます。また、カバー画像やサムネイルの仕組みがプラットフォームごとに実際にどう適用されるかを、正確に示します。 - 2 つのインターフェース。 ウェブダッシュボードと任意の MCP クライアントが、同じ仕様を利用します。パリティテストにより、すべての機能が両方のインターフェースで提供されることを保証します。
- ドイツ語とスイス向けローカライズ。 ダッシュボード、ダイジェスト、通知は、英語または正式なスイスドイツ語(
de-CH。ウムラウトとスイス式の 24 時間表記に対応)で利用できます。言語は Settings で設定できます。詳しくはローカライズのドキュメントをご覧ください。
クイックスタート
セットアップ不要のワンライナーです。
npx pendpost
# then open http://127.0.0.1:8090
アカウント登録は不要です。pendpost はローカルで動作し、すぐに起動します。すぐにキャンペーン全体の下書き作成、承認、スケジュール設定ができます。初回起動時には、data/plans にサンプルの「Acme Launch」キャンペーンが作成されるため、すぐに実際のコンテンツを確認できます。公開の準備ができたら、Setup でプラットフォームに接続してください。それまでは、レーンは稼働中ですが未認証の状態です。公開は接続を偽装するのではなく、接続されるまで待機します。
git または docker を使いますか?
# git
git clone https://github.com/pendpost/pendpost pendpost
cd pendpost
npm start # or: node bin/pendpost.mjs (builds the dashboard on first run)
# then open http://127.0.0.1:8090
# docker
docker compose up
# then open http://127.0.0.1:8090
ダッシュボード
プランナーと承認キューが、主に使用する2つの画面です。左側で下書き作成とスケジュール設定を行い、右側で承認または却下します。右側で自動的に承認されることはありません。
| プランナー | 承認キュー |
|---|---|
![]() | ![]() |
MCP クライアント
最も簡単な方法では、自動的に起動します。pendpost はネイティブの stdio 経由で MCP を使用するため、クライアントがサーバーを起動します。事前に起動しておく必要はありません。
Claude Desktop(ワンクリック):各 GitHub リリースに添付されている pendpost の .mcpb バンドルをインストールします。自動的に npx -y pendpost --stdio を起動し、同じプロセス内で承認ダッシュボードを開きます。
任意の stdio MCP クライアント:
{
"mcpServers": {
"pendpost": { "command": "npx", "args": ["-y", "pendpost", "--stdio"] }
}
}
上級者向け/開発用(HTTP トランスポート):pendpost は /mcp でストリーミング可能な HTTP 経由でも MCP を提供します。この場合、npx pendpost でサーバーを事前に起動しておく必要があります。
claude mcp add --transport http pendpost http://127.0.0.1:8090/mcp
AI を活用したセットアップ(Claude for Chrome)
実際のプラットフォームで公開するには、各ベンダーのポータルで開発者アプリを作成し、OAuth の認証フローを1回実行する必要があります。pendpost では、エージェントがこの手順を進められます。ダッシュボードの Setup ページにある未完了のカードにはそれぞれ Copy AI prompt ボタンがあり、対象プラットフォームのポータルを操作する、すぐに貼り付けて使える安全なプロンプトを Claude for Chrome 用にコピーします。ログインや同意が必要な画面では、ご自身で認証してください。認証情報は CLI によってローカルで生成され、エージェントやチャットを経由することはありません。同じセットアップ手順は、AGENTS.md で任意のエージェント向けに説明されています。
MCP ツールの機能
すべての機能は MCP ツールとして提供され、ダッシュボードにも反映されます。読み取り専用ツールから公開されることはありません。書き込みツールは下書きを作成し、上記の承認ルールが適用されます。機能別の一覧は次のとおりです。
- 読み取りと確認:
plan_list、plan_get、account_status、assets_list、activity_log、validate_media、platform_validate、pendpost_health、publish_preview、brand_lint、generate_digest、config_get、clients_overview。 - 作成:
plan_create_post、plan_update_post、plan_delete_post、campaign_create、campaign_set_active。 - 承認(人による確認):
approve_post、reject_post。承認されるまで公開されません。デフォルトでは、ご自身が承認者です。 - スケジュール設定と公開:
scheduler_set、publish_due_run、reschedule、unschedule、mark_posted、verify_post。 - カバー画像とアセット:
set_cover、clear_cover、asset_upload、rename_asset、delete_asset。 - インサイトと安全性:
fetch_insights、token_refresh、pendpost_record_block、health_recheck、meta_lane_set。 - 設定とクライアント:
config_set、client_create、client_update、client_archive、client_list、client_set_active。
ツールの正式な数と読み取り/書き込みの分類は lib/mcp.mjs から取得され、test/parity-check.mjs で検証されています(MCP ドキュメントを参照)。また、各ツールには tools/list 内に readOnlyHint/destructiveHint/title のアノテーションが付いています。
公開を開始する
公開の準備ができたら、Setup で各プラットフォームに接続します(または .env.example を .env にコピーし、使用するプラットフォームの項目だけを入力します)。認証情報が設定されると、そのプラットフォームで公開が開始されます。それまでは稼働中ですが未認証の状態となり、接続が完了するまで公開は待機します。(PENDPOST_MODE=mock はテスト/デモ用のフィクスチャであり、すべてのレーンを認証情報不要のモックドライバー経由で処理します。)
各プラットフォームには、.env に設定を書き込む対話型のセットアップ手順があります。
# Meta (Facebook + Instagram). A System User token is preferred for automation.
node scripts/meta-social.mjs setup-system-user \
--system-user-token <T> --page-id <ID> --app-id <ID> --app-secret <S>
# (or `node scripts/meta-social.mjs setup` for a long-lived Page token)
# LinkedIn (after creating an OAuth app)
node scripts/linkedin-social.mjs auth
# YouTube (after creating an OAuth client)
node scripts/yt-social.mjs auth
# X (Twitter), OAuth 2.0 PKCE (browser). OAuth 1.0a needs no command - see below.
node scripts/x-social.mjs auth
# Static-credential lanes (no browser): paste the credential into .env (or use
# the dashboard Setup form), then validate with the engine's auth command.
node scripts/telegram-social.mjs auth # TELEGRAM_BOT_TOKEN + TELEGRAM_CHANNEL_ID
node scripts/discord-social.mjs auth # DISCORD_WEBHOOK_URL
node scripts/mastodon-social.mjs auth # MASTODON_INSTANCE_URL + MASTODON_ACCESS_TOKEN
node scripts/wordpress-social.mjs auth # WORDPRESS_SITE_URL + _USERNAME + _APP_PASSWORD
node scripts/ghost-social.mjs auth # GHOST_SITE_URL + GHOST_ADMIN_API_KEY
node scripts/nostr-social.mjs keygen --save && node scripts/nostr-social.mjs auth # + NOSTR_RELAYS
複数のクライアントを実行していますか?上記のコマンドに --client <client-id> を追加すると、認証情報がそのクライアントの .env に保存されます(シングルクライアント構成では不要です。また、pendpost_health の connectAction ではこのフラグが自動的に追加されます)。
X(Twitter) は2つの認証方法に対応しています。ブラウザーが不要で、一部のアプリが X の OAuth 2.0 同意画面で遭遇する ERR_TOO_MANY_REDIRECTS を回避できるため、OAuth 1.0a を推奨します。
- OAuth 1.0a(推奨、ブラウザー不要)。 X の開発者ポータルで、(1)アプリの User authentication settings を最初に Read and Write に設定します。(2)次に Keys and tokens で、API Key/Secret と Access Token/Secret の両方を生成または再生成します。(3)4つすべてを
.envにX_API_KEY、X_API_SECRET、X_ACCESS_TOKEN、X_ACCESS_TOKEN_SECRETとして貼り付けます。X_ACCESS_TOKEN_SECRETが設定された時点でレーンが稼働し、authコマンドは不要です。node scripts/x-social.mjs probeを実行して確認します(connected as @handleと表示されます)。注意点は次のとおりです。- 4つすべての値を同じアプリから、同じ生成時に取得する必要があります。
- API Key/Secret を再生成すると、Access Token/Secret は無効になります。そのため、Access Token/Secret は必ず API Key/Secret の後に再生成してください。先に再生成してはいけません。
- 文字が1つでも間違っていると、
401 "Could not authenticate you"(コード 32)が返されます。これはアクセストークンの問題のように見えることがあります。ポータルから値をコピーしてください。手入力はしないでください。
- OAuth 2.0 PKCE(ブラウザーを使用)。 コールバック
http://localhost:8087/callbackとスコープtweet.read tweet.write users.read media.write offline.accessを指定した OAuth 2.0 confidential client を作成し、node scripts/x-social.mjs authを実行します。アクセストークンの有効期間は約2時間で、リフレッシュトークンはローテーションされます。pendpost は各実行の前に両方を自動的に更新します。
プラットフォームごとの環境変数の全一覧は .env.example を参照してください。
ブランドチェック+ヒューマナイザー
キャプションは公開前にブランドチェックを受けます。ルールセットは rules.json にあり、直接編集できます。各ルールは、id、severity(error は公開をブロックし、warn は注意を促します)、matcher(正規表現、または captionLength、hashtagCount、allCaps、brokenLink などのプラットフォーム対応ビルトイン)、および hint を持つオブジェクトです。標準設定には、英語の AI 文章によく見られる特徴(AI 特有の語彙、エムダッシュ、否定的な並列構文、反射的な三項列挙による水増し、つなぎ言葉や曖昧な表現、過剰な宣伝文句)を検出するヒューマナイザーのルールも含まれています。ルールを無効にするにはそのオブジェクトを削除し、追加するにはオブジェクトを追記します。ワークスペースのルートにある rules.json は、同梱の標準設定を上書きします。brand_lint は MCP ツールであり、ダッシュボードのコンポーザーにあるリンターパネルでもあります。
アーキテクチャ
pendpost は、依存関係のない単一の Node プロセス(server.mjs)で、4つのインターフェイスを提供します。/api の REST API、/mcp の MCP サーバー(streamable-HTTP、JSON-RPC 2.0、134個のツール)、data/ 内のローカルファイルを範囲指定でストリーミングする /media、そして app/dist からビルド済み React ダッシュボードを配信する / です。バックエンドのロジックは lib/*.mjs にあります。scripts/ には14個の公開エンジンがあり、プラットフォームごとに1つずつ用意されています(meta-social.mjs は Facebook と Instagram を処理します)。各エンジンはスケジューラーのティック時または要求に応じてサブプロセスとして起動され、JSON エンベロープを出力します。計画と状態はローカルの JSON に保存されます。.env、config.json、state.json、data/ を格納するワークスペースのルートは、PENDPOST_ROOT で変更できます(デフォルト:インストールディレクトリ)。
プラットフォーム
Instagram、Facebook、LinkedIn、YouTube、X、Telegram、Discord、Mastodon、Nostr、WordPress、Ghost は利用可能です。Reddit、Pinterest、TikTok、Google Business Profile はベータ版です。各エンジンが認証、投稿、ネイティブの予約投稿、カバー画像やサムネイルの処理、読み取り専用のインサイトをそれぞれ担当します。YouTube、Mastodon、WordPress、Ghost はネイティブで予約投稿するため、pendpost がオフでも投稿が公開されます。Instagram、Facebook、LinkedIn、X、Telegram、Discord、Nostr には、予約時刻に pendpost 自身が投稿します。投稿を実行するのは、お使いのコンピューター上のスケジューラー、またはオプションの 24 時間稼働するクラウドサービスです。
セキュリティ
pendpost はデフォルトで 127.0.0.1(ループバック)にバインドされ、外部に通信することはなく、シークレットはお使いの .env(gitignore 対象)にのみ保存します。セキュリティ対策の全容と脆弱性の報告方法については、SECURITY.md をご覧ください。
プライバシーポリシー
pendpost はお使いのコンピューター上で動作し、当社(Nomadik GmbH)にデータを送信しません。
- **収集する情報:**お客様が提供した情報のみです。プラン、下書き、メディア、アクティビティ履歴はローカルの
data/フォルダーに保存され、プラットフォームの認証情報はお客様自身の.envに保存されます。 - **データの利用と保存方法:**すべてのデータはお使いのコンピューター上にとどまります。コンテンツは、承認した投稿を公開するために、接続したソーシャルプラットフォームにのみ送信されます。
- **第三者:**接続する MCP クライアント(たとえば Claude Desktop や Cursor)と、その AI モデルプロバイダーは、お客様のアカウントと各社の規約に基づき、エージェントが pendpost のツールを通じて読み取る情報を参照できます。Radar は、有効にしたソースから公開投稿を読み取ります。
- **保持期間:**お客様がフォルダーを削除するまで、データはお使いのコンピューター上に保存されます。当社はコピーを保持しません。オプションの 24 時間稼働するクラウドサービスでは、購読期間中、プラン、暗号化されたトークン、監査記録を保持し、利用を終了した後、安全確保のための短い猶予期間を経て、管理対象のコピーを削除します。
- **お問い合わせ先:**[email protected]
ポリシーの全文は pendpost.com/privacy でご覧いただけます。
pendpost を形作る
pendpost はオープンに開発されており、皆様からのフィードバックをお待ちしています。参加方法は 3 つあり、いずれもアプリから外部へ通信することはありません。
- **簡単なフィードバックやアイデア:**ダッシュボードの Share feedback リンクを使う(ブラウザーで入力済みの GitHub ページが開き、
.envやシークレットが送信されることはありません)、Discussions に投稿する、またはフィードバック用の issue フォームを使ってください。 - **バグや機能リクエスト:**issue を作成し、該当するフォームを選んでください。
- より踏み込んだ提案(新しい統合ポイントや、コアの仕組みの変更など):RFC を作成してください。詳細は
docs/rfcs/README.mdをご覧ください。
アカウントをお持ちでない場合は、pendpost.com の簡単なフィードバックフォームから GitHub に転送できます。サポートの受け方については SUPPORT.md を、フィードバックの全プロセスについては docs/specs/feedback-pipeline.md をご覧ください。
ステータス
pendpost は少人数のチームがパートタイムでメンテナンスしており、まだ開発初期段階です。未完成な部分があることを想定し、それに応じた応答時間を見込んでください。
ドキュメント
詳細なリファレンスは docs.pendpost.com にあります(ソースは site-docs/)。製品紹介、価格、すべてのダウンロードオプションは pendpost.com にあります。
ライセンス
MIT、Copyright 2026 Nomadik GmbH。LICENSE をご覧ください。また、責任ある利用に関する方針については DISCLAIMER.md を、プルリクエストを作成する前に CONTRIBUTING.md もお読みください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。

