---
title: n8n
source: https://se-hari.com/docs/n8n
updated: 2026-08-16T01:05:08.765098+00:00
---

> Pasang community node Se-Hari, rangkai notulen otomatis ke Slack atau Notion tanpa menulis satu baris kode.

[n8n](https://n8n.io) adalah alat otomasi visual yang bisa di-hosting sendiri. Se-Hari menyediakan **community node**, sehingga Anda bisa merangkai "notulen selesai → kirim ke Slack" dengan menyeret dua kotak.

## Pasang

> **Node ini belum terbit di npm.** Langkah di bawah adalah bentuk finalnya, tapi pemasangannya belum bisa dilakukan sampai paketnya dipublikasikan. Sementara itu, seluruh API tetap bisa dipakai dari n8n lewat node **HTTP Request** bawaan — endpoint, header, dan contoh body-nya ada di [referensi API](/docs/api) dan [mulai cepat](/docs/mulai-cepat).

Di n8n: **Settings → Community Nodes → Install**, lalu masukkan:

```
n8n-nodes-sehari
```

Community node hanya tersedia di **n8n self-hosted**. Untuk n8n Cloud, pakai node HTTP Request — setiap halaman [resep](/docs/resep) menyertakan contohnya.

## Kredensial

Buat kredensial **Se-Hari API**, tempel API key, lalu klik **Test**. Kalau berhasil, nama dan saldo kredit Anda muncul.

Tombol Test memanggil `GET /me`, yang tidak menuntut scope apa pun. Artinya ia menguji kredensialnya, bukan izinnya — key dengan scope paling sempit sekalipun akan lolos. Kalau Test berhasil tapi node tetap gagal dengan 403, yang kurang adalah scope-nya.

Scope yang dibutuhkan per pemakaian:

| Yang Anda lakukan | Scope |
|---|---|
| Membaca notulen dan transkrip | `notulen:read` |
| Membuat atau mengunggah notulen | `notulen:write` |
| Membuat atau membatalkan meeting | `meetings:write` |
| Rekaman dan tautan unduh | `recordings:read` |
| Saldo dan estimasi kredit | `credits:read` |
| Node **Se-Hari Trigger** | `webhooks:write` |

## Node Se-Hari

Empat resource, dua puluh operasi:

- **Notulen** — Ambil, Ambil Transkrip, Bagikan, Buat dari Rekaman, Coba Lagi, Daftar, Hentikan Berbagi, Ubah Status Action Item, Unggah Rekaman
- **Meeting** — Ambil, Batalkan, Buat, Daftar, Daftar Rekaman Meeting
- **Rekaman** — Daftar, Link Unduh
- **Kredit** — Cek Saldo, Estimasi Biaya, Riwayat Pemakaian

Operasi daftar punya toggle **Ambil Semua** yang menelusuri paginasi cursor sampai habis, sehingga Anda tidak perlu merangkai perulangan sendiri.

**Daftar Rekaman** punya filter *Hanya Yang Belum Punya Notulen*. Filter itulah yang membuat resep "proses semua rekaman lama" bisa dirakit tanpa menulis kondisi apa pun.

## Retry aman secara bawaan

Operasi yang membuat sesuatu mengirim `Idempotency-Key` yang dibangun dari `{workflow}-{execution}-{item}`. Kalau n8n mengulang eksekusi yang gagal di tengah jalan — karena timeout jaringan, misalnya — Se-Hari mengembalikan hasil yang sama alih-alih membuat pekerjaan kedua.

Ini penting justru pada operasi yang menyentuh uang. Tanpanya, satu timeout pada `Buat Meeting` bisa menghasilkan dua meeting yang kreditnya terpotong dua kali.

## Node Se-Hari Trigger

Node trigger **mendaftarkan webhook-nya sendiri** saat workflow diaktifkan, dan menghapusnya saat dinonaktifkan. Tidak ada langkah "salin URL ini, tempel di sana" — langkah yang paling sering gagal karena salah salin atau lupa diaktifkan.

Setiap kiriman diverifikasi HMAC-SHA256 dengan jendela kesegaran 5 menit. Yang tidak lolos dijawab 401 dan workflow tidak dijalankan.

Output node adalah isi `data` dari payload, tanpa amplop event-nya. Karena payload membungkus entitas di bawah namanya sendiri, ekspresi setelah trigger berbentuk `{{ $json.note.summary }}` — bukan `{{ $json.summary }}`, dan bukan pula `{{ $json.data.note.summary }}`. Pada `note.failed`, `{{ $json.retryable }}` sejajar dengan `note`.

Satu tingkat itu hilang begitu Anda melewatkan datanya ke operasi Se-Hari lain: respons API objek tunggal tidak dibungkus, jadi setelah node **Ambil Notulen** ekspresinya kembali menjadi `{{ $json.summary }}`. Metadata event tersedia di `{{ $json._event }}` kalau Anda perlu bercabang berdasarkan jenisnya.

**Instance n8n Anda harus bisa dijangkau dari internet** — Se-Hari yang memanggilnya, bukan sebaliknya. URL `localhost` ditolak saat aktivasi, dengan pesan yang menjelaskan sebabnya alih-alih membiarkan workflow aktif tapi tidak pernah menerima apa pun.

## Contoh: notulen ke Slack

```
Se-Hari Trigger (note.completed)
  → Se-Hari (Notulen: Ambil Notulen, include summary + action_items)
    → Slack (Send Message)
```

Isi pesan Slack:

```
*{{ $json.title }}*
{{ $json.summary }}

Action item:
{{ $json.action_items.map(i => "• " + i.title).join("\n") }}
```

Tiga node, dan Anda tidak pernah lagi perlu mengetik ringkasan rapat.

## Resep siap pakai

15 workflow siap impor tersedia di [galeri resep](/docs/resep), termasuk:

- Notulen otomatis ke Slack, Notion, Google Sheets, Telegram
- Action item jadi kartu Trello atau task Asana
- Meeting Zoom otomatis dari event Google Calendar
- Sapu semua rekaman lama yang belum punya notulen
- Arsipkan rekaman ke Google Drive sebelum retensi 30 hari habis
- Tangani notulen gagal dengan percabangan `retryable`

## Kalau tidak berfungsi

**Test kredensial gagal 401** — key salah salin atau sudah dicabut. Panjangnya selalu 51 karakter.

**Node berjalan tapi hasilnya kosong** — hampir selalu filter terlalu sempit. Matikan semua filter, lalu tambahkan satu per satu.

**Trigger tidak pernah berjalan** — pastikan workflow **aktif**, bukan hanya tersimpan, dan URL n8n Anda publik. Riwayat pengiriman beserta kode responsnya ada di tab Webhooks pada [dashboard developer](/dashboard/developer).

## Selanjutnya

- [Galeri resep](/docs/resep) — workflow siap impor
- [Webhook](/docs/webhook) — cara kerja di baliknya
- [Idempotency](/docs/idempotency) — kenapa retry n8n aman