# Bisakah ChatGPT Posting Lewat Shager? Bisa: Hubungkan Lewat Login, atau Pakai Salah Satu dari Tiga Jalur Lain

_2026-09-05 · Konektor MCP ChatGPT masuk dengan OAuth, dan Shager mendukungnya: tambahkan Shager di mode developer, login, lalu setujui. Ditambah Codex, API, dan skrip._

Bisa. Konektor MCP kustom di ChatGPT melakukan autentikasi dengan OAuth, dan server MCP Shager mendukung login OAuth. Tambahkan https://app.shager.ai/api/mcp sebagai konektor di mode developer, masuk ke Shager, lalu setujui, tanpa kunci yang perlu disalin. Anda juga bisa memanfaatkan model OpenAI untuk bekerja dengan Shager lewat Codex, lewat API OpenAI, atau dengan memakai ChatGPT untuk menulis dan skrip pendek untuk mengirim.

Artikel ini menunjukkan cara menambahkan konektornya, dan memberikan kode yang sudah jalan untuk setiap jalur lainnya.

## Bagaimana cara menambahkan Shager sebagai konektor ChatGPT?

Panduan OpenAI tentang [autentikasi untuk aplikasi di ChatGPT](https://developers.openai.com/apps-sdk/build/auth) menjelaskan model yang didukung: server yang memerlukan autentikasi harus menerapkan alur OAuth 2.1 yang mengikuti spesifikasi otorisasi MCP, dengan Client ID Metadata Documents sebagai pilihan utama dan pendaftaran klien dinamis yang juga didukung. Server juga bisa berjalan tanpa autentikasi. Panduan yang sama menyatakan bahwa ChatGPT tidak bisa mengirimkan kunci API kustom.

Server Shager di https://app.shager.ai/api/mcp mengikuti spesifikasi itu, dengan Client ID Metadata Documents maupun pendaftaran klien dinamis. Cara menghubungkannya:

1. Di ChatGPT, buka Settings, lalu Apps & Connectors, aktifkan Developer mode, dan klik Create.
2. Beri nama `Shager`, masukkan `https://app.shager.ai/api/mcp`, lalu pilih OAuth.
3. Klik Connect. Shager akan terbuka: masuk, pilih organisasi, lalu setujui.

Mode developer tersedia di paket berbayar ChatGPT. Koneksi ini bisa membaca dan membuat draf. Menjadwalkan dan memublikasikan adalah kotak centang terpisah di layar persetujuan, nonaktif kecuali Anda mencentangnya, dan Anda bisa memutus koneksinya kapan saja dari https://app.shager.ai/dashboard/agents.

### Kenapa tidak pasang proxy tanpa autentikasi di depan kunci API?

Banyak yang menyarankan ini, dan ini ide buruk, apalagi sekarang Anda tidak memerlukannya. Proxy yang menerima permintaan tanpa autentikasi lalu menyisipkan kunci Shager Anda akan mengubah akses publikasi agensi Anda menjadi endpoint publik. Siapa pun yang menemukan URL-nya bisa membuat draf postingan di workspace klien, dan kalau kuncinya punya cakupan `publish`, bisa sekalian menjadwalkannya. Jangan lakukan.

## Jalur 1: Codex, agen coding dari OpenAI

Kalau yang Anda inginkan adalah "model OpenAI yang mengoperasikan Shager", Codex sudah bisa melakukannya dengan rapi. Codex mendukung bearer token dari variabel lingkungan untuk server MCP streamable HTTP, jadi penyiapannya cukup beberapa baris di `~/.codex/config.toml`:

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

Dokumentasi MCP OpenAI mencatat bahwa aplikasi desktop ChatGPT, Codex CLI, dan ekstensi IDE memakai file konfigurasi yang sama. Panduan lengkapnya, termasuk daftar tool yang diizinkan, ada di [menghubungkan Shager ke Codex](/en/blog/connect-shager-to-codex).

## Jalur 2: Responses API OpenAI dengan tool MCP jarak jauh

Kalau Anda membangun agen sendiri di atas API OpenAI, Responses API bisa memanggil server MCP jarak jauh secara langsung. [Panduan konektor dan MCP](https://developers.openai.com/api/docs/guides/tools-connectors-mcp) mendokumentasikan tool `mcp` dengan `server_url`, field `authorization` untuk access token, `allowed_tools`, dan `require_approval`. Dokumentasinya juga menyebutkan bahwa API tidak menyimpan nilai `authorization`, jadi Anda harus mengirimkannya di setiap permintaan.

```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)
```

Tiga catatan dari pengalaman menjalankan penyiapan seperti ini.

Pertama, uji autentikasinya dengan `whoami` sebelum yang lain. Dokumentasi OpenAI menyajikan `authorization` sebagai field untuk access token OAuth; kunci Shager adalah bearer token, jadi panggilan pertama langsung memberi tahu Anda apakah header-nya sampai sesuai yang diharapkan Shager. Kalau output tool berisi 401, beralihlah ke Jalur 3.

Kedua, `create_post` sengaja tidak dimasukkan ke daftar `never`, sehingga API mengembalikan permintaan persetujuan sebelum menjalankannya. Kode Anda memeriksa argumennya lalu membalas dengan respons persetujuan. Itu titik pemeriksaan murah, oleh manusia atau oleh aturan, sebelum draf ditulis.

Ketiga, jangan beri kunci ini cakupan `publish`. Dengan begitu, panggilan yang sudah disetujui pun hanya bisa membuat draf.

## Jalur 3: ChatGPT menulis, skrip Anda yang mengirim

Inilah pola paling umum di agensi yang sehari-harinya bekerja di ChatGPT. Model mengerjakan yang memang jadi keahliannya, yaitu menulis empat puluh variasi caption. Skrip dua puluh baris menangani pengirimannya lewat REST API Shager di https://app.shager.ai/api/v1, yang dijelaskan lengkap di [dokumen OpenAPI](https://app.shager.ai/api/v1/openapi.json).

Minta ChatGPT memberi output terstruktur yang bisa Anda tempel ke file:

```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>
```

Lalu kirim sebagai draf:

```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"])
```

Array `per_channel` menerima objek berisi `channel_id` dan `caption` (ditambah `first_comment` dan `format` yang opsional), jadi JSON dari ChatGPT bisa langsung masuk. `cta_url` mendapat tautan pendek dan UTM terpisah per akun, dengan `utm_content` berisi nama akunnya, dan itulah yang membuat hasilnya bisa diatribusikan nanti.

## Jalur mana yang cocok untuk tim mana?

| Situasi | Jalur |
|---|---|
| Anda ingin agen dengan tool di terminal atau IDE hari ini juga | Codex dengan `bearer_token_env_var` |
| Anda membangun produk atau agen sendiri di atas model OpenAI | Responses API dengan tool `mcp`, atau REST biasa |
| Tim Anda menulis di ChatGPT dan tidak mau pindah | ChatGPT untuk caption, skrip untuk pengiriman |
| Anda ingin Shager di dalam aplikasi ChatGPT itu sendiri | Konektor kustom di mode developer, dengan login OAuth |

## Apa untungnya login?

Anda menambahkan https://app.shager.ai/api/mcp sebagai server MCP kustom di ChatGPT dan masuk dengan akun Shager Anda, seperti yang dijelaskan [panduan OpenAI untuk menghubungkan dari ChatGPT](https://developers.openai.com/apps-sdk/deploy/connect-chatgpt) bagi server yang memerlukan autentikasi. Setiap orang terhubung dengan akunnya sendiri, tanpa berbagi kunci. Log audit bekerja dengan cara yang sama, begitu juga tool-nya, yang sepadan satu per satu dengan operasi REST.

## FAQ

### Adakah cara memakai kunci API di pengaturan konektor ChatGPT?

Menurut panduan autentikasi OpenAI untuk aplikasi di ChatGPT, tidak ada. Panduan itu hanya mencantumkan mode OAuth dan tanpa autentikasi, serta menyatakan bahwa ChatGPT tidak bisa mengirimkan kunci API kustom. Anda memang tidak memerlukannya: pilih OAuth lalu login. Anggap setiap akal-akalan yang menaruh kunci Anda di balik endpoint terbuka sebagai masalah keamanan, bukan solusi.

### Apakah Shager bisa dipakai di ChatGPT versi mobile?

Itu tergantung di mana ChatGPT mengizinkan server MCP kustom, yang merupakan keputusan OpenAI dan sudah beberapa kali berubah selama peluncuran. Periksa dokumentasi OpenAI terbaru, jangan berpatokan pada perilaku sebelumnya.

### Apakah saya perlu paket Shager berbayar untuk mencoba jalur-jalur ini?

Tidak. Akses API dan MCP sudah termasuk di setiap paket, dan selama masa peluncuran Shager gratis, tanpa kartu; sebelum mulai menagih, kami akan memberi tahu Anda lebih dulu. [Halaman harga](/en/pricing) mencantumkan batas akun per paket.

## Langkah berikutnya

Kalau Anda memilih jalur kode, cara tercepat untuk mulai adalah [panduan cepat REST API](/en/blog/shager-rest-api-quickstart), yang membawa Anda dari kunci baru hingga draf multiakun dengan tautan terlacak dalam enam panggilan.

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