Skip to content

πŸ”— Day 2 β€” Integrasi Lanjutan: OAuth2, Firecrawl & Structured Outputs ​

Week 3 Β· Day 2 Β· 6 Video Topik: Tiga Jenis Autentikasi Recap, Google OAuth2 Full Setup, Google Drive Trigger & PDF Extraction, Firecrawl Web Scraping, Structured Outputs, HTTP Request Node


πŸ“‹ Daftar Isi ​

  1. Ikhtisar Integrasi Lanjutan
  2. Google OAuth2 Full Setup
  3. Workflow Google Drive Trigger
  4. Workflow PDF Extraction
  5. Integrasi Firecrawl
  6. Structured Outputs β€” Teknik Krusial
  7. Demo Lengkap: Agent + Firecrawl + HTTP Request

πŸ” Ikhtisar Integrasi Lanjutan ​

Day 2 membahas integrasi tingkat lanjut dengan fokus pada platform yang memerlukan konfigurasi autentikasi lebih kompleks. Sebelum menyelam ke detail, berikut rekap tiga jenis autentikasi:

Recap: Tiga Jenis Autentikasi ​

JenisCara KerjaContoh
API KeyCopy-paste kunci rahasiaFirecrawl, OpenAI, Pushover
OAuth2 One-Click (Cloud)n8n sudah siapkan OAuth appGoogle Sheets, Gmail (di cloud)
OAuth2 Full (Self-Hosted)Buat OAuth app sendiri di GCPGoogle Drive, Gmail (self-hosted)

Fitur n8n yang Baru Diperkenalkan ​

FiturShortcutFungsi
Projectsβ€”Mengorganisasi workflow dalam grup terpisah
Foldersβ€”Sub-organisasi di dalam project
Sticky NotesShift+SCatatan visual di canvas untuk dokumentasi

πŸ’‘ Fork in the Road: Pengguna cloud bisa kembali ke n8n cloud (OAuth sudah sederhana). Pengguna self-hosted harus ikuti setup OAuth2 full. Untuk webhook di self-hosted, gunakan ngrok sebagai tunnel.


πŸ” Google OAuth2 Full Setup ​

Ini adalah proses yang harus dijalani pengguna self-hosted untuk mengakses Google APIs. Prosesnya terasa panjang, tapi hanya perlu dilakukan sekali.

Alur Lengkap Step-by-Step ​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Google Cloud Console (GCP)              β”‚
β”‚                                                   β”‚
β”‚  1. Buat Project Baru ("amplify")                β”‚
β”‚          β”‚                                        β”‚
β”‚          β–Ό                                        β”‚
β”‚  2. APIs & Services β†’ Library                    β”‚
β”‚     β†’ Enable "Google Drive API"                  β”‚
β”‚          β”‚                                        β”‚
β”‚          β–Ό                                        β”‚
β”‚  3. OAuth Consent Screen                         β”‚
β”‚     β”œβ”€β”€ Internal (Google Workspace user)         β”‚
β”‚     └── External + Testing (untuk Gmail biasa)   β”‚
β”‚          β”‚                                        β”‚
β”‚          β–Ό                                        β”‚
β”‚  4. Credentials β†’ Create OAuth Client ID         β”‚
β”‚     β†’ Application Type: "Web Application"        β”‚
β”‚          β”‚                                        β”‚
β”‚          β–Ό                                        β”‚
β”‚  5. KRITIS: Copy Redirect URI dari n8n           β”‚
β”‚     β†’ Paste sebagai "Authorized Redirect URI"    β”‚
β”‚          β”‚                                        β”‚
β”‚          β–Ό                                        β”‚
β”‚  6. Dapatkan Client ID + Client Secret           β”‚
β”‚     β†’ Paste ke n8n credential                    β”‚
β”‚          β”‚                                        β”‚
β”‚          β–Ό                                        β”‚
β”‚  7. Sign in with Google β†’ Allow                  β”‚
β”‚     β†’ "Connection Successful" βœ…                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Detail Setiap Langkah ​

StepLokasiAksi
1GCP ConsoleBuat project baru bernama "amplify"
2APIs & Services β†’ LibraryCari dan enable "Google Drive API"
3OAuth Consent ScreenPilih External, tambahkan test users
4Credentials β†’ CreatePilih "OAuth Client ID", tipe "Web Application"
5n8n β†’ Credential GoogleCopy OAuth Redirect URI dari form n8n
6GCP β†’ Authorized RedirectsPaste URI, lalu copy Client ID + Secret
7n8n β†’ CredentialPaste ID + Secret, klik "Sign in with Google"

Mengapa OAuth2 Begitu Kompleks? ​

OAuth2 dirancang untuk keamanan akses pihak ketiga terhadap data pengguna. Kompleksitasnya adalah fitur, bukan bug:

  • Pengguna memberikan izin eksplisit (consent screen)
  • Aplikasi pihak ketiga tidak pernah melihat password
  • Izin bisa dicabut kapan saja
  • Scope bisa dibatasi (hanya Drive, hanya read, dll.)

⚠️ Kesalahan Umum: Lupa paste redirect URI dari n8n ke GCP. Tanpa ini, OAuth flow akan gagal total. Selalu copy URI dari n8n terlebih dahulu!


πŸ“ Workflow Google Drive Trigger ​

Workflow pertama yang dibangun: monitor folder di Google Drive dan kirim notifikasi saat ada file baru.

Arsitektur Workflow ​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Google Drive    β”‚     β”‚    Pushover      β”‚
β”‚  Trigger         │────▢│    Notification   β”‚
β”‚                  β”‚     β”‚                  β”‚
β”‚  πŸ“ Monitor:    β”‚     β”‚  πŸ“± "File baru   β”‚
β”‚  "Amplify File  β”‚     β”‚   terdeteksi!"   β”‚
β”‚   Drop" folder  β”‚     β”‚                  β”‚
β”‚  ⏱️ Every 1 min β”‚     β”‚                  β”‚
β”‚  πŸ”” File Createdβ”‚     β”‚                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Konfigurasi ​

ParameterNilai
TriggerGoogle Drive Trigger
EventFile Created
Folder"Amplify File Drop"
Poll IntervalEvery 1 minute
ActionPushover notification
DeployProduction

πŸ“„ Workflow PDF Extraction ​

Workflow kedua lebih kompleks β€” mengunduh file dari Drive, mengekstrak teks dari PDF, dan mengirim kontennya via notifikasi.

Arsitektur Workflow ​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Google Drive  β”‚    β”‚ Google Drive  β”‚    β”‚ Extract from β”‚    β”‚ Pushover β”‚
β”‚ Trigger       │───▢│ Download File │───▢│ File (PDF)   │───▢│ Notify   β”‚
β”‚               β”‚    β”‚              β”‚    β”‚              β”‚    β”‚          β”‚
β”‚ File Created  β”‚    β”‚ ID: $json.id β”‚    β”‚ Auto-parse   β”‚    β”‚ Extractedβ”‚
β”‚               β”‚    β”‚              β”‚    β”‚ PDF content  β”‚    β”‚ text     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Detail Teknis ​

NodeKonfigurasi
Drive TriggerMonitor folder, event: file created
Download FileExpression: $json.id (ID dari trigger)
Extract from FileTipe: PDF, auto-extract text
PushoverKirim extracted text sebagai notifikasi

Pengujian ​

Sebuah PDF test dengan isi "This is a very important message" berhasil:

  1. Diupload ke Google Drive
  2. Terdeteksi oleh trigger
  3. Didownload
  4. Diekstrak teksnya
  5. Dikirim via Pushover β€” teks muncul di notifikasi βœ…

πŸ’‘ Tips Lanjutan: Untuk menangani berbagai tipe file, gunakan if/else routing berdasarkan MIME type. PDF, DOCX, dan tipe file lain bisa diarahkan ke extractor yang berbeda.


πŸ”₯ Integrasi Firecrawl ​

Firecrawl adalah platform web scraping, crawling, dan searching yang bisa digunakan oleh AI Agent untuk mengambil informasi dari internet.

Fitur Firecrawl ​

FiturFungsi
SearchMencari informasi di internet
ScrapeMengambil konten dari halaman web tertentu
CrawlMenjelajahi seluruh situs secara rekursif
Free Tier500 halaman gratis

Instalasi di n8n ​

Firecrawl tersedia sebagai community node (bukan built-in):

  1. Buka n8n β†’ Settings β†’ Community Nodes
  2. Install "Firecrawl" node
  3. Setup credential: masukkan API Key dari firecrawl.dev

⚠️ Firecrawl memiliki core node di n8n, tapi bukan tool node untuk AI Agent. Ini menjadi relevan di Day 3 ketika kita menggunakan MCP sebagai solusi.


⭐ Structured Outputs β€” Teknik Krusial ​

Ini adalah salah satu teknik PALING PENTING dalam seluruh kursus. Instruktur menekankan berulang kali bahwa Structured Outputs adalah "senjata rahasia" yang tidak cukup mendapat sorotan.

Apa itu Structured Outputs? ​

Structured Outputs memaksa LLM untuk menghasilkan output dalam format JSON yang sesuai dengan schema tertentu β€” bukan teks bebas, tapi data terstruktur yang bisa langsung diproses oleh workflow.

Cara Mengaktifkan di n8n ​

AI Agent Node
  └── "Require specific output format" β†’ ON βœ…
        └── Sub-node: Structured Output Parser
              └── Definisi JSON schema

Contoh Schema ​

json
{
  "search_query": "internet search query to answer the user's question"
}

Ketika LLM menerima schema ini, output-nya dijamin menghasilkan JSON yang conform:

json
{
  "search_query": "best accounting software for consulting firms 2025"
}

Mengapa Ini Sangat Powerful? ​

Tanpa Structured Outputs          Dengan Structured Outputs
─────────────────────             ─────────────────────────
"I think you should              { "search_query":
search for accounting              "accounting software
software..."                       consulting firms" }
     β”‚                                  β”‚
     β–Ό                                  β–Ό
  ❌ Teks bebas,                  βœ… JSON presisi,
  sulit diproses                  langsung bisa dipakai
  oleh node berikutnya            oleh node berikutnya

πŸ”‘ Key Insight: Structured Outputs memungkinkan Anda membangun pipeline yang bulletproof β€” setiap langkah menghasilkan data yang bisa diprediksi, meminimalkan error akibat output LLM yang berubah-ubah.


πŸ”„ Demo Lengkap: Agent + Firecrawl + HTTP Request ​

Video terakhir mendemonstrasikan workflow end-to-end yang menggabungkan semua konsep hari ini.

Arsitektur Workflow ​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Chat  │──▢│  AI Agent (DeepSeek)      │──▢│  Firecrawl   │──▢│ HTTP Request β”‚
β”‚Trigger β”‚   β”‚                           β”‚   β”‚  Search      β”‚   β”‚ POST to      β”‚
β”‚        β”‚   β”‚  + Structured Output:     β”‚   β”‚              β”‚   β”‚ webhook.site β”‚
β”‚        β”‚   β”‚  {"search_query": "..."}  β”‚   β”‚  Query from  β”‚   β”‚              β”‚
β”‚        β”‚   β”‚                           β”‚   β”‚  JSON output β”‚   β”‚ Send results β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Alur Data ​

  1. User mengirim pertanyaan via chat
  2. AI Agent (DeepSeek + Structured Output Parser) menghasilkan search query dalam format JSON
  3. Firecrawl Search menggunakan $json.output.search_query untuk mencari di internet
  4. HTTP Request (POST) mengirim hasil ke webhook.site sebagai JSON

HTTP Request Node β€” Generic Node ​

AspekDetail
TipeGeneric HTTP Request
MethodPOST
URLwebhook.site (untuk testing)
BodyJSON dengan hasil pencarian
FungsiMengirim data ke endpoint external apapun

HTTP Request node adalah "Swiss Army Knife" n8n β€” bisa berkomunikasi dengan API manapun yang belum memiliki node khusus.


πŸ“Š Ringkasan Tiga Integrasi Hari Ini ​

IntegrasiAutentikasiKategori
Google DriveOAuth2 FullFile monitoring & extraction
FirecrawlAPI KeyWeb scraping & searching
HTTP RequestVariesGeneric API communication

Ditambah dua teknik core:

  • Structured Outputs β€” constraint output LLM ke JSON schema
  • PDF Extraction β€” mengambil teks dari file PDF

πŸ“Š Tabel Terminologi ​

IstilahDefinisi
OAuth2Protokol autentikasi untuk akses aman ke data pihak ketiga
Redirect URIURL callback yang dikirim GCP ke n8n setelah user approve
Client IDIdentifier publik untuk OAuth application
Client SecretKunci rahasia untuk OAuth application
Consent ScreenHalaman izin yang ditampilkan ke pengguna saat OAuth
Structured Output ParserSub-node yang memaksa LLM output JSON sesuai schema
FirecrawlPlatform web scraping/searching untuk AI
webhook.siteLayanan testing untuk menerima HTTP request
MIME TypeIdentifier tipe file (application/pdf, text/html, dll.)
Community NodeNode n8n yang dibuat oleh komunitas, bukan tim resmi

πŸ† Pencapaian Day 2 ​

βœ… Menguasai Google OAuth2 full setup di GCP Console
βœ… Membangun Google Drive trigger workflow
βœ… Mengekstrak teks dari PDF secara otomatis
βœ… Mengintegrasikan Firecrawl untuk web scraping
βœ… Menguasai Structured Outputs β€” teknik paling penting
βœ… Menggunakan HTTP Request node untuk komunikasi API generik
βœ… Membangun pipeline end-to-end: Chat β†’ Agent β†’ Search β†’ POST

🎯 Progres: 80% melalui kursus selesai! Structured Outputs adalah game-changer yang akan terus digunakan di hari-hari berikutnya.

Rangkuman kursus Udemy β€” AI Builder: Create Agents, Voice Agents & Automations in n8n