# ChatGPT から Shager で投稿できる？ できます。ログインでつなぐか、ほかの3つの方法で

_2026-09-05 · ChatGPTのMCPコネクタはOAuthでログインし、Shagerはこれに対応しています。開発者モードで追加してログイン、承認するだけ。Codex、API、スクリプトの方法も解説します。_

できます。ChatGPT のカスタム MCP コネクタは OAuth で認証し、Shager の MCP サーバーは OAuth によるログインに対応しています。開発者モードで https://app.shager.ai/api/mcp をコネクタとして追加し、Shager にログインして承認するだけで、コピーするキーはありません。ほかにも、Codex 経由、OpenAI API 経由、あるいは文章作成は ChatGPT、配信は短いスクリプトという分担で、OpenAI のモデルに Shager の仕事を任せることもできます。

この記事では、コネクタの追加方法を説明し、ほかの方法についても動くコードを紹介します。

## Shager を ChatGPT のコネクタとして追加するには

OpenAI の [ChatGPT のアプリにおける認証](https://developers.openai.com/apps-sdk/build/auth)のガイドでは、サポートされる方式が説明されています。認証が必要なサーバーは、MCP の認可仕様に沿った OAuth 2.1 フローを実装します。推奨は Client ID Metadata Documents で、動的クライアント登録にも対応しています。認証なしで動かすことも可能です。同じガイドには、ChatGPT はカスタムの API キーを提示できないとも書かれています。

https://app.shager.ai/api/mcp にある Shager のサーバーはこの仕様に沿っており、Client ID Metadata Documents と動的クライアント登録の両方に対応しています。接続の手順は次のとおりです。

1. ChatGPT で「Settings」から「Apps & Connectors」を開き、開発者モード（Developer mode）をオンにして「Create」をクリックします。
2. 名前を `Shager` にし、`https://app.shager.ai/api/mcp` を入力して OAuth を選びます。
3. 「Connect」をクリックします。Shager が開くので、ログインし、組織を選んで承認します。

開発者モードは ChatGPT の有料プランで使えます。この接続でできるのは、読み取りと下書きの作成です。予約と公開は承認画面の別のチェックボックスで、チェックを入れない限りオフのままです。接続は https://app.shager.ai/dashboard/agents からいつでも解除できます。

### API キーの前に認証なしのプロキシを挟めばいいのでは？

よく提案されますが、やめておくべきです。今はそもそも必要ありません。認証なしのリクエストを受け付けて Shager のキーを差し込むプロキシは、エージェンシーの公開権限を誰でも使えるエンドポイントに変えてしまいます。URL を見つけた人は誰でもクライアントのワークスペースに投稿の下書きを作れ、キーが `publish` を持っていれば予約までできてしまいます。絶対にやめてください。

## 方法1：OpenAI のコーディングエージェント、Codex

「OpenAI のモデルに Shager を操作させたい」のであれば、Codex ですでにすっきり実現できます。Codex は Streamable HTTP の MCP サーバーに対して、環境変数のベアラートークンを使えるので、設定は `~/.codex/config.toml` に数行書くだけです。

```toml
[mcp_servers.shager]
url = "https://app.shager.ai/api/mcp"
bearer_token_env_var = "SHAGER_API_KEY"
```

OpenAI の MCP に関するドキュメントによると、ChatGPT デスクトップアプリ、Codex CLI、IDE 拡張機能はこの設定ファイルを共有します。ツールの許可リストを含む詳しい手順は、[Shager を Codex に接続する](/ja/blog/connect-shager-to-codex)で解説しています。

## 方法2：リモート MCP ツールを使う OpenAI Responses API

OpenAI の API で独自のエージェントを作っているなら、Responses API がリモートの MCP サーバーを自分で呼び出してくれます。[コネクタと MCP のガイド](https://developers.openai.com/api/docs/guides/tools-connectors-mcp)には、`server_url`、アクセストークン用の `authorization` フィールド、`allowed_tools`、`require_approval` を持つ `mcp` ツールが記載されています。また、API は `authorization` の値を保存しないので、リクエストのたびに送る必要があるとも書かれています。

```python
import os
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model=os.environ["OPENAI_MODEL"],
    input=(
        "In the Shager workspace 'Cedar Clinics', list the channels, then create a "
        "DRAFT post to all active channels announcing Saturday walk-in hours. "
        "Use a different caption per channel that names the clinic's town. "
        "cta_url https://cedarclinics.example/walk-in, campaign 'walk-in-sat'. "
        "Do not pass schedule_at."
    ),
    tools=[{
        "type": "mcp",
        "server_label": "shager",
        "server_url": "https://app.shager.ai/api/mcp",
        "authorization": os.environ["SHAGER_API_KEY"],
        "allowed_tools": [
            "whoami", "list_workspaces", "list_channels",
            "list_groups", "create_post", "get_post",
        ],
        "require_approval": {
            "never": {"tool_names": ["whoami", "list_workspaces", "list_channels", "list_groups", "get_post"]}
        },
    }],
)

print(response.output_text)
```

この種の構成を実際に動かしてみて気づいた点が3つあります。

1つ目は、何よりも先に `whoami` で認証をテストすることです。OpenAI のドキュメントでは `authorization` は OAuth のアクセストークン用フィールドとして説明されていますが、Shager のキーはベアラートークンです。最初の呼び出しで、ヘッダーが Shager の想定どおりに届いているかがすぐにわかります。ツールの出力で 401 が返ってきたら、方法3に切り替えてください。

2つ目は、`create_post` をあえて `never` のリストから外していることです。そのため API は実行前に承認リクエストを返します。コード側で引数を確認し、承認のレスポンスで応答します。下書きが書き込まれる前に、人またはルールによるチェックポイントを低コストで挟めます。

3つ目は、このキーには `publish` を付けないことです。そうすれば、承認された呼び出しでも作れるのは下書きだけになります。

## 方法3：ChatGPT が書き、スクリプトが配信する

ChatGPT を日常的に使っているエージェンシーで最もよく見かけるパターンです。モデルには得意なこと、つまり40通りのキャプションを書く仕事を任せます。配信は20行ほどのスクリプトが、Shager の REST API（https://app.shager.ai/api/v1）を通して行います。API の全容は [OpenAPI ドキュメント](https://app.shager.ai/api/v1/openapi.json)に記載されています。

まず ChatGPT に、ファイルに貼り付けられる構造化された出力を頼みます。

```text
For each account below, write a caption for our Saturday walk-in hours post.
Vary the opening line and mention the town. Keep facts identical.
Return only JSON: [{"channel_id": "...", "caption": "..."}]
Accounts: <paste the id and name list from list_channels>
```

それを下書きとして送ります。

```python
import json, os, requests

API = "https://app.shager.ai/api/v1"
H = {"Authorization": f"Bearer {os.environ['SHAGER_API_KEY']}"}
WS = os.environ["SHAGER_WORKSPACE_ID"]

captions = json.load(open("captions.json"))

r = requests.post(f"{API}/workspaces/{WS}/posts", headers=H, json={
    "caption": captions[0]["caption"],
    "channel_ids": [c["channel_id"] for c in captions],
    "per_channel": captions,
    "cta_url": "https://cedarclinics.example/walk-in",
    "campaign": "walk-in-sat",
    "first_comment": "Hours and directions: https://cedarclinics.example/walk-in",
}, timeout=60)

body = r.json()
if not r.ok:
    raise SystemExit(f"{body['error']['code']}: {body['error']['message']}")
print("draft", body["data"]["id"], body["data"]["status"])
```

`per_channel` 配列は `channel_id` と `caption`（任意で `first_comment` と `format`）を持つオブジェクトを受け付けるので、ChatGPT の JSON をそのまま流し込めます。`cta_url` にはアカウントごとに別々の短縮リンクと UTM が付き、`utm_content` にはアカウント名が入ります。これによって、後から成果をアカウント単位で計測できるようになります。

## どのチームにどの方法が合うか

| 状況 | 方法 |
|---|---|
| ターミナルや IDE で、ツールを使うエージェントを今すぐ動かしたい | `bearer_token_env_var` を使った Codex |
| OpenAI のモデルで自社のプロダクトやエージェントを作っている | `mcp` ツールを使う Responses API、または素の REST |
| チームが ChatGPT で文章を書いていて、そこから離れるつもりはない | キャプションは ChatGPT、配信はスクリプト |
| ChatGPT アプリの中で Shager を使いたい | 開発者モードのカスタムコネクタで、OAuth でログイン |

## ログインで接続すると何ができるか

ChatGPT で https://app.shager.ai/api/mcp をカスタム MCP サーバーとして追加し、Shager のアカウントでログインします。認証付きのサーバーについて、OpenAI の [ChatGPT からの接続ガイド](https://developers.openai.com/apps-sdk/deploy/connect-chatgpt)が説明しているとおりの流れです。キーを共有するのではなく、一人ひとりが自分のアカウントで接続します。監査ログの仕組みは同じで、ツールも同じです。ツールは REST の各操作と1対1で対応しています。

## よくある質問

### ChatGPT のコネクタ設定で API キーを使う方法はありますか？

OpenAI の ChatGPT のアプリ向け認証ガイドによれば、ありません。ガイドには OAuth と認証なしの方式だけが挙げられ、ChatGPT はカスタムの API キーを提示できないと書かれています。キーは不要で、OAuth を選んでログインすれば済みます。誰でもアクセスできるエンドポイントの裏にキーをさらすような回避策は、解決策ではなくセキュリティ上の問題だと考えてください。

### モバイルの ChatGPT でも Shager は使えますか？

それは、ChatGPT がどこでカスタム MCP サーバーを許可しているかによります。これは OpenAI が決めることで、提供開始の過程でも変わってきました。以前の挙動を当てにせず、OpenAI の最新ドキュメントを確認してください。

### これらの方法を試すのに、Shager の有料プランは必要ですか？

いいえ。API と MCP のアクセスはすべてのプランに含まれており、ローンチ期間中の Shager は無料で、カードも不要です。課金を始める前には、事前にお知らせします。プランごとのアカウント数の上限は[料金ページ](/ja/pricing)でご確認ください。

## 次のステップ

コードで進めるなら、[REST API クイックスタート](/ja/blog/shager-rest-api-quickstart)から始めるのが一番の近道です。新しいキーの発行から、計測付きの複数アカウント向け下書きの作成まで、6回の呼び出しでたどり着けます。

---
Source: https://shager.ai/ja/blog/shager-and-chatgpt
