AI Class

Cara Bangun AI Agent Summarizer Dokumen Otomatis dengan n8n + GPT (MVP 1 Hari)

· 3 menit baca

Cara Bangun AI Agent Summarizer Dokumen Otomatis dengan n8n + GPT (MVP 1 Hari)

Pain point: Tim product & konten sering terjebak menelaah ratusan dokumen—spesifikasi, riset pasar, atau laporan klien—yang memakan waktu berjam‑jam. Akibatnya keputusan terlambat, deadline terlewat, dan knowledge silos terbentuk.

Apa Itu AI Agent Summarizer?

AI Agent di sini adalah workflow “cerdas” di n8n yang memanggil LLM (mis. OpenAI GPT‑4) untuk membuat ringkasan berkualitas dari dokumen apa pun (PDF, DOCX, HTML, atau teks mentah). Agent menilai panjang, mengekstrak poin‑poin utama, lalu mengirim hasil ringkasan ke Slack, email, atau Notion.

Arsitektur Workflow (High‑Level)

  • Trigger: Webhook HTTP (atau schedule) menerima file_url atau file_base64.
  • Node "Extract Text": Menggunakan pdf-parse / mammoth untuk PDF atau DOCX, atau html‑to‑text untuk HTML.
  • Node "Chunker": Membagi teks menjadi chunk ≤ 12 k token (batas GPT‑4). Memakai fungsi JavaScript custom di n8n.
  • Node "LLM Summarizer": Memanggil OpenAI chat/completions dengan prompt "Buat ringkasan 3‑5 kalimat yang mencakup tujuan, metode, hasil, dan rekomendasi". Loop untuk setiap chunk, lalu merge dengan reduce LLM.
  • Node "Post‑Process": Menambahkan metadata (judul, tanggal, sumber) dan format Markdown.
  • Node "Deliver": Pilihan: kirim ke Slack channel, buat halaman di Notion DB, atau email ke stakeholder.

Langkah‑per‑Langkah Implementasi

1. Siapkan n8n dan API Key OpenAI

  1. Deploy n8n (Docker, Railway, atau Cloud n8n.io).
  2. Buat Secret bernama OPENAI_API_KEY di Settings → Credentials.

2. Buat Workflow Baru

  1. Tambah Webhook node. Set method POST, path /summarize.
  2. Upload file via multipart/form-data atau kirim URL JSON {"file_url":"https://.../spec.pdf"}.

3. Extract Text

Gunakan HTTP Request (jika file_url) → kemudian Function node dengan script:

const fetch = require('node-fetch');
const pdf = require('pdf-parse');
const buffer = await $node["HTTP Request"].binary.data;
const data = await pdf(buffer);
return [{ json: { text: data.text } }];

Untuk DOCX gunakan mammoth dengan cara serupa.

4. Chunker (JavaScript)

const MAX_TOKENS = 12000; // safe bound for GPT‑4
const text = $json["text"];
function splitIntoChunks(txt) {
  const sentences = txt.match(/[^.!?]+[.!?]+/g) || [txt];
  const chunks = [];
  let cur = '';
  for (const s of sentences) {
    if ((cur + s).length > MAX_TOKENS) {
      chunks.push(cur.trim());
      cur = '';
    }
    cur += s + ' ';
  }
  if (cur) chunks.push(cur.trim());
  return chunks;
}
return [{ json: { chunks: splitIntoChunks(text) } }];

5. LLM Summarizer (OpenAI)

Tambah HTTP Request node, pilih POST https://api.openai.com/v1/chat/completions. Body:

{
  "model": "gpt-4o-mini",
  "messages": [
    {"role": "system", "content": "You are a concise technical summarizer."},
    {"role": "user", "content": "Ringkas teks berikut menjadi 3‑5 kalimat utama: {{ $json.chunk }}"}
  ],
  "temperature": 0.2
}

Gunakan SplitInBatches node untuk iterasi tiap chunk, lalu Merge hasilnya menjadi satu string.

6. Post‑Process & Delivery

  • Function node: tambahkan # Summary of {{ $json.title }}\n\n{{ $json.summary }} dengan format markdown.
  • Jika ke Slack: Slack node, pilih channel, kirim text sebagai markdown.
  • Jika ke Notion: Notion node, buat page di DB "Document Summaries".

Use Case Real: Riset Pasar Tim Produk

Tim produk menerima 30 PDF riset pasar tiap minggu. Dengan workflow di atas, mereka cukup meng‑upload folder ke Google Drive → n8n auto‑trigger → dalam 5 menit tiap dokumen ada ringkasan di Notion. Keputusan strategi jadi lebih cepat, dan dokumen asli tetap tersimpan untuk referensi.

Insight & Strategi Praktis

  • Prompt Engineering: Sertakan kata kunci "tujuan, metode, hasil, rekomendasi" dalam prompt untuk output yang terstruktur.
  • Cost Control: Gunakan model gpt‑4o‑mini untuk chunk‑wise summarization; hanya gunakan gpt‑4 bila dokumen sangat kritikal.
  • Human‑in‑the‑Loop: Setelah ringkasan dibuat, kirim ke Slack dengan tombol Approve/Revise (Slack Block Kit). Jika revise, gunakan n8n Webhook kembali ke LLM dengan instruksi revisi.
  • Scaling: Deploy n8n di Kubernetes dengan Horizontal Pod Autoscaler; setiap pod memproses maksimal 5 dokumen bersamaan.

Penutup & CTA

Dengan hanya beberapa node di n8n, kamu bisa mengubah tumpukan dokumen menjadi knowledge bite yang langsung dapat dipakai tim. Coba implementasi di proyekmu hari ini: upload satu PDF, lihat hasilnya di Slack, dan kustomisasi pengiriman ke Notion atau Confluence.

Join JIPRAKS Classroom untuk template workflow siap pakai, contoh prompt, dan diskusi langsung dengan AI Agent experts.

Artikel terkait