Satu baris spreadsheet per rapat: tanggal, judul, durasi, ringkasan. Bentuk paling sederhana untuk melacak berapa banyak waktu tim Anda dihabiskan di rapat.
#Kapan resep ini masuk akal
Spreadsheet adalah pilihan yang tepat kalau tujuan Anda menghitung, bukan membaca. Berapa jam rapat per minggu, siapa yang paling sering mengadakan rapat, rapat mana yang berulang tanpa menghasilkan action item — semua pertanyaan itu jauh lebih mudah dijawab di Sheets daripada di Notion atau Slack.
#Yang dihasilkan
Satu baris baru di spreadsheet setiap kali notulen selesai.
#Yang Anda butuhkan
- n8n self-hosted dengan community node
n8n-nodes-sehariterpasang notulen:readwebhooks:write- Kredensial Google Sheets di n8n
Kalau belum memasang node-nya, ikuti panduan n8n lebih dulu — pemasangannya satu langkah dari menu Settings.
#Alur workflow
- Se-Hari Trigger (
Se-Hari: seHariTrigger) - Ambil Notulen Lengkap (
Se-Hari: seHari) - Tambah Baris Sheet (
noOp)
#Cara memakainya
- Salin JSON di bawah
- Di n8n: Workflows → Import from Clipboard, lalu tempel
- Pilih kredensial Se-Hari API pada setiap node Se-Hari
- Sesuaikan node tujuan (lihat catatan di bawah)
- Aktifkan workflow
Kalau workflow ini memakai node trigger, endpoint webhook-nya didaftarkan otomatis saat diaktifkan dan dihapus saat dinonaktifkan. Tidak ada URL yang perlu disalin manual.
#Yang perlu disesuaikan
Buat header kolomnya lebih dulu, dan pastikan urutannya cocok dengan pemetaan di node Google Sheets. Sheets tidak akan mengeluh kalau kolomnya tertukar — Anda baru menyadarinya berminggu-minggu kemudian saat mencoba membaca datanya.
#Sebelum dijalankan di produksi
Impor dulu ke workflow terpisah dan jalankan sekali secara manual. n8n menyimpan hasil setiap node pada eksekusi terakhir, jadi Anda bisa melihat bentuk data yang sebenarnya keluar dari node Se-Hari sebelum menulis ekspresi apa pun di node berikutnya. Menebak bentuk data lalu memperbaikinya lewat percobaan berulang jauh lebih lambat, dan pada resep yang memakai kredit, percobaan berulang itu ada harganya.
Perhatikan juga penagihan kredit resep ini. Operasi yang membuat meeting memotong kredit saat itu juga, sedangkan operasi notulen menagih setelah pemrosesan selesai sesuai durasi asli rekaman. Kalau workflow Anda membaca saldo tepat setelah mengantre notulen, angkanya belum berubah — itu bukan bug. Pasang batas kredit harian pada API key yang dipakai workflow ini supaya kesalahan sekali tidak berubah menjadi tagihan besar.
#Kalau tidak berjalan seperti seharusnya
Kalau baris masuk tapi kolom ringkasan kosong, kemungkinan besar node Se-Hari dipanggil tanpa include=summary. Ringkasan tidak ikut secara bawaan pada operasi Daftar Notulen; pakai Ambil Notulen dengan opsi Sertakan yang sesuai.
Untuk masalah yang lebih umum, tab Webhooks di dashboard developer memuat riwayat pengiriman lengkap dengan kode respons dari instance n8n Anda — tempat pertama yang harus dilihat ketika trigger tidak pernah berjalan.
#Variasi yang sering diminta
- Tambahkan kolom jumlah action item untuk melihat rapat mana yang benar-benar menghasilkan keputusan.
- Buat sheet terpisah per bulan lewat node Code yang menentukan nama sheet dari tanggal.
- Tambahkan kolom biaya kredit untuk melacak pengeluaran per rapat.
#Workflow JSON
{
"name": "Notulen ke Google Sheets",
"nodes": [
{
"parameters": {
"content": "## Notulen ke Google Sheets\n\nBerjalan otomatis setiap kali notulen selesai diproses.\n\n**Yang perlu Anda lakukan:**\n1. Pilih kredensial Se-Hari (scope: notulen:read, webhooks:write)\n2. Ganti node terakhir dengan tujuan Anda\n3. Aktifkan workflow — endpoint webhook didaftarkan otomatis\n\nPayload webhook membungkus entitasnya di bawah nama jenisnya, jadi ekspresinya\nlewat $json.note — BUKAN $json langsung:\n\n{{ $json.note.title }} — judul rapat\n{{ $json.note.summary }} — ringkasan\n{{ $json.note.action_items }} — array action item\n{{ $json.note.duration_minutes }} — durasi\n{{ $json.retryable }} — hanya pada note.failed, sejajar dengan note\n{{ $json._event.type }} — jenis event",
"width": 460,
"height": 260
},
"id": "note-1",
"name": "Catatan",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-40,
-40
]
},
{
"parameters": {
"events": [
"note.completed"
]
},
"id": "trg-notecompleted",
"name": "Se-Hari Trigger",
"type": "n8n-nodes-sehari.seHariTrigger",
"typeVersion": 1,
"position": [
0,
300
],
"credentials": {
"seHariApi": {
"id": "__SEHARI_CRED__",
"name": "Se-Hari API"
}
},
"webhookId": "__AUTO__"
},
{
"parameters": {
"resource": "notulen",
"operation": "get",
"noteId": "={{ $json.note.id }}",
"include": [
"summary",
"action_items"
]
},
"id": "sh-AmbilNotulenLengkap",
"name": "Ambil Notulen Lengkap",
"type": "n8n-nodes-sehari.seHari",
"typeVersion": 1,
"position": [
220,
300
],
"credentials": {
"seHariApi": {
"id": "__SEHARI_CRED__",
"name": "Se-Hari API"
}
}
},
{
"parameters": {},
"id": "dst-TambahBarisSheet",
"name": "Tambah Baris Sheet",
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
440,
300
],
"notes": "Ganti dengan node Google Sheets → Append Row. Kolom: tanggal, judul, durasi, ringkasan.",
"notesInFlow": true
}
],
"connections": {
"Se-Hari Trigger": {
"main": [
[
{
"node": "Ambil Notulen Lengkap",
"type": "main",
"index": 0
}
]
]
},
"Ambil Notulen Lengkap": {
"main": [
[
{
"node": "Tambah Baris Sheet",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"pinData": {},
"meta": {
"templateCredsSetupCompleted": false
},
"tags": [
{
"name": "Se-Hari"
}
]
}#Resep lain
- Semua resep n8n
- Panduan n8n — pemasangan node dan kredensial
- Webhook — cara kerja trigger di baliknya