# Laporan Mingguan Klien yang Ditulis Agen Setiap Senin Sebelum Anda Bangun

_2026-09-25 · Laporan mingguan klien yang disusun agen dari Shager: apa yang terbit, apa yang gagal, klik per akun dan per postingan, lalu disandingkan dengan prospek di CRM._

Agen bisa menulis laporan distribusi mingguan untuk klien dengan menarik tiga hal dari Shager: postingan yang terbit selama seminggu beserta hasilnya per akun, klik per akun dan per postingan dari `get_analytics`, dan daftar apa pun yang gagal. Setelah itu, agen menyandingkan klik tersebut dengan prospek dari CRM klien memakai nilai `utm_content` yang menandai setiap akun. Jalankan secara terjadwal dengan kunci hanya-baca, dan laporannya sudah menunggu di folder pada Senin pagi.

Bagian yang butuh dipikirkan bukanlah kodenya, melainkan menentukan apa yang benar-benar perlu dilihat klien, dan jujur tentang apa yang sebenarnya diukur oleh angka-angka itu.

## Apa saja isi laporan distribusi mingguan?

Empat bagian sudah cukup. Selebihnya masuk ke tinjauan bulanan.

1. **Pengiriman.** Berapa postingan yang terbit, ke berapa akun, dan akun mana yang gagal. Klien jarang menanyakan hal ini sampai ada yang hilang, dan saat itu inilah satu-satunya yang mereka tanyakan.
2. **Klik per akun.** Halaman, cabang, atau channel mana yang mengirim orang ke situs. Bagian inilah yang mengubah alokasi anggaran.
3. **Klik per postingan.** Konten mana yang berhasil, di seluruh akun.
4. **Tindakan.** Apa yang perlu dilakukan klien: menghubungkan ulang akun, menyetujui draf minggu depan, mengirim aset yang kurang.

Perhatikan apa yang tidak ada: jangkauan, impresi, suka. Shager mengukur klik pada tautan terlacaknya sendiri, per akun dan per postingan. Shager tidak mengaku sebagai perangkat analitik media sosial, dan laporannya pun tidak boleh berpura-pura demikian.

## Panggilan data

Untuk satu workspace klien, agen menjalankan urutan berikut. Nama tool-nya adalah tool MCP yang sebenarnya; padanan REST-nya ada di [dokumen OpenAPI](https://app.shager.ai/api/v1/openapi.json).

1. `list_workspaces` untuk menemukan workspace klien berdasarkan nama.
2. `list_posts` dengan `status` diatur ke `PUBLISHED`, lalu lagi dengan `PARTIALLY_PUBLISHED` dan `FAILED`. `limit` bisa sampai 100.
3. `get_post` untuk setiap postingan dalam minggu itu, untuk mendapatkan status per akun, URL postingan yang tayang, dan pesan error.
4. `get_analytics` dengan `from` dan `to` yang mencakup minggu tersebut.
5. `list_channels`, untuk memetakan ID channel ke nama akun yang mudah dibaca dan menemukan akun yang status koneksinya berubah.

Panggilan analitik lewat REST:

```bash
curl -s "https://app.shager.ai/api/v1/workspaces/ws_example/analytics?from=2026-09-14T00:00:00%2B03:00&to=2026-09-20T23:59:59%2B03:00" \
  -H "Authorization: Bearer $SHAGER_READ_KEY"
```

Ada dua detail di URL itu yang sering menjebak. Tanda `+` di offset harus dienkode sebagai `%2B` di query string, kalau tidak server akan membacanya sebagai spasi. Selain itu, batas minggu harus dihitung dalam zona waktu klien, bukan zona waktu server. Kalau `from` tidak diisi, `get_analytics` otomatis memakai 30 hari terakhir, padahal bukan itu yang dibutuhkan laporan mingguan.

## Klik bukan prospek, jadi sandingkan keduanya

Shager memberi setiap akun tautan pendek dan tag UTM sendiri, dengan `utm_content` sebagai penanda akun. Itulah yang memungkinkan penyandingan. CRM mencatat prospek beserta nilai UTM yang ditangkap formulir di landing page; agen mencocokkannya dengan jumlah klik per akun dari Shager berdasarkan `utm_content` yang sama.

Tabel yang dihasilkan adalah inti laporannya:

| Akun | Postingan | Klik (Shager) | Prospek (CRM) | Catatan |
|---|---|---|---|---|
| Aurora Downtown | 4 | ... | ... | |
| Aurora Northside | 4 | ... | ... | perlu dihubungkan ulang |

Selisih antarkolom adalah informasi. Klik banyak tanpa prospek berarti masalah di landing page atau penawaran, bukan masalah distribusi. Panduan lama kami tentang [atribusi prospek per akun](/en/blog/utm-per-account-lead-attribution) membahas field formulir dan pemetaan CRM yang membuat kolom prospek bisa dipercaya, dan [mengukur prospek dari konten agen](/en/blog/measuring-leads-from-agent-content) membahas sisi agennya.

Kalau Anda tidak punya akses ke CRM, laporannya tetap bisa jalan hanya dengan klik. Sebutkan hal itu di bagian atas laporan. Laporan yang menyebut klik sebagai "hasil" adalah cara agensi kehilangan kepercayaan satu kuartal kemudian.

## Menjalankannya tanpa pengawasan dengan Claude Code

Claude Code bisa berjalan secara non-interaktif dengan `claude -p`, seperti dijelaskan di [dokumentasi headless](https://code.claude.com/docs/en/headless)-nya. Dengan begitu, laporan mingguan cukup menjadi sebuah cron job.

Pertama, folder proyek untuk laporan dengan `.mcp.json` yang membaca kunci dari variabel lingkungan. [Dokumentasi MCP](https://code.claude.com/docs/en/mcp) Claude Code mendukung ekspansi `${VAR}` di header:

```json
{
  "mcpServers": {
    "shager": {
      "type": "http",
      "url": "https://app.shager.ai/api/mcp",
      "headers": { "Authorization": "Bearer ${SHAGER_READ_KEY}" }
    }
  }
}
```

Lalu instruksinya, disimpan sebagai skill agar logikanya berada di satu file, bukan di satu baris crontab. Claude Code memuat skill proyek dari `.claude/skills/<name>/SKILL.md`, sesuai [dokumentasi skill](https://code.claude.com/docs/en/skills)-nya:

```markdown
---
name: weekly-report
description: Compile the weekly distribution report for one client workspace from Shager. Use when asked for a weekly client report.
---

The argument is the client workspace name: $ARGUMENTS

1. Resolve the workspace with list_workspaces. Read its timezone.
2. Compute last Monday 00:00 to Sunday 23:59:59 in that timezone, with offsets.
3. Collect posts with list_posts (PUBLISHED, PARTIALLY_PUBLISHED, FAILED) and
   keep those published in the window. Call get_post for each.
4. Call get_analytics for the window. Map channel ids to names with list_channels.
5. If crm/<workspace>.csv exists, join leads on utm_content.
6. Write reports/<workspace>/<YYYY-MM-DD>.md with four sections: Delivery,
   Clicks by account, Clicks by post, Actions. Use tables. No adjectives about
   performance; numbers and one plain sentence per section.
7. Never call any tool that creates, schedules or cancels anything.
```

Dan perintah terjadwalnya, yang hanya memberi persetujuan awal untuk tool baca dan penulisan file:

```bash
cd ~/agency-reports && claude -p "/weekly-report Aurora" \
  --allowedTools "mcp__shager__list_*,mcp__shager__get_*,mcp__shager__whoami,Write" \
  --output-format json > logs/aurora-$(date +%F).json
```

Sintaks aturan izin dengan awalan `mcp__<server>__` dan glob di akhir didokumentasikan di [referensi izin](https://code.claude.com/docs/en/permissions) Claude Code. Apa pun yang tidak ada di daftar itu tidak akan disetujui otomatis dalam pengiriman tanpa pengawasan.

## Kenapa kunci hanya-baca penting di sini

Skill memberi tahu model agar tidak menulis. Kunci membuatnya mustahil. Buat kunci terpisah yang hanya bercakupan `read` untuk pelaporan di dasbor agen, dan jangan pakai di tempat lain. Kalau kunci itu sampai bocor, akibat terburuknya hanyalah seseorang bisa membaca jumlah klik. Kami membahas model cakupan selengkapnya di [kunci API, cakupan, dan audit](/en/blog/api-keys-scopes-and-audit).

Setiap panggilan agen pelapor juga muncul di log audit di dasbor itu, cara yang baik untuk memastikan pada beberapa Senin pertama bahwa agen hanya memanggil apa yang Anda harapkan, tidak lebih.

## Menulis bagian naratif

Biarkan agen menulis satu atau dua kalimat per bagian, tetapi beri batasan. Tanpa aturan, model akan menggambarkan perubahan 4 persen sebagai "peningkatan signifikan". Instruksi saya lugas: sebutkan angkanya, bandingkan dengan minggu sebelumnya jika ada, dan jangan menyebut penyebab kecuali datanya menunjukkannya. Kalau halaman sebuah cabang mendapat nol klik karena koneksinya kedaluwarsa hari Selasa, itu penyebab yang ditunjukkan data. "Audiens jenuh" bukan.

## FAQ

### Bisakah agen langsung mengirim laporannya ke klien?

Bisa, kalau Anda memberinya tool email, tetapi saya tidak akan melakukannya di hari pertama. Suruh agen menulis file-nya, tinjau hasilnya selama beberapa minggu, baru otomatiskan pengirimannya. Laporan adalah cara klien melihat pekerjaan Anda, dan angka salah yang terkirim otomatis lebih mahal harganya daripada waktu yang dihemat.

### Apakah get_analytics menyertakan prospek?

Tidak. Tool ini mengembalikan klik pada tautan terlacak Shager, per akun dan per postingan, dalam rentang tanggal tertentu. Prospek berasal dari CRM atau alat formulir klien, dicocokkan berdasarkan `utm_content`. Laporan sebaiknya memisahkan kedua sumber ini dengan jelas.

### Seberapa jauh ke belakang laporan bisa melihat?

`get_analytics` menerima `from` dan `to` apa pun yang Anda kirim, dengan default 30 hari terakhir saat `from` tidak diisi. Untuk perbandingan antarbulan, jalankan skill yang sama dengan rentang waktu berbeda, alih-alih menjadikan laporan lama sebagai sumber kebenaran.

## Langkah selanjutnya

Kalau Anda belum punya kunci, [titik masuk untuk agen](/en/agents) menunjukkan cara membuatnya atau membiarkan agen mendaftar sendiri. Mulailah dengan satu klien, baca sendiri laporan tiga Senin berturut-turut, baru setelah itu tambahkan klien lainnya.

---
Source: https://shager.ai/id/blog/weekly-client-report-by-agent
