Panduan Menggunakan Obsidian Templater Plugin untuk Template Dinamis dengan JavaScript
Obsidian adalah aplikasi note-taking yang powerful, tapi kekuatan sebenarnya baru terasa ketika kamu mulai menggunakan plugin Templater. Berbeda dengan template bawaan Obsidian yang statis, Templater memungkinkan kamu membuat template dinamis menggunakan JavaScript. Ini sangat berguna untuk otomasi workflow, membuat daily notes dengan metadata otomatis, atau bahkan sistem manajemen proyek yang terintegrasi. Artikel ini akan memandu kamu dari instalasi hingga membuat template JavaScript yang benar-benar bisa dipakai sehari-hari.
Mengapa Templater Lebih Unggul dari Template Bawaan
Template bawaan Obsidian hanya bisa menyisipkan tanggal atau teks statis. Templater membuka pintu untuk logika kondisional, manipulasi string, bahkan eksekusi command sistem. Bayangkan kamu bisa membuat template meeting notes yang otomatis mengambil nama file dari judul meeting, menghitung durasi dari waktu mulai-selesai, atau membuat checklist yang berbeda tergantung jenis meeting. Semua ini bisa dilakukan dengan JavaScript yang embedded langsung di template.
Instalasi dan Setup Awal
Pertama, install Templater dari Community Plugins di Obsidian. Setelah aktif, buka Settings → Templater. Ada beberapa konfigurasi penting yang perlu kamu atur:
- Template folder location: Tentukan folder khusus untuk menyimpan template, misalnya
Templates/. Ini memisahkan template dari notes biasa. - Trigger Templater on new file creation: Aktifkan jika kamu ingin template otomatis muncul saat membuat file baru di folder tertentu.
- Enable System Commands: Hati-hati dengan opsi ini. Hanya aktifkan jika kamu benar-benar butuh menjalankan command sistem, dan pastikan kamu paham risikonya.
Untuk pengguna Termux, pastikan Obsidian sudah punya akses storage. Jalankan termux-setup-storage jika belum, lalu akses vault Obsidian kamu melalui folder ~/storage/shared/.
Langkah Praktis Membuat Template Dinamis
- Buat file template dasar. Di folder Templates, buat file baru misalnya
Daily Note.md. Mulai dengan syntax Templater paling sederhana:<% tp.date.now("YYYY-MM-DD") %>untuk menampilkan tanggal hari ini. - Gunakan variabel JavaScript. Templater mendukung JavaScript penuh di dalam tag
<% %>. Contoh praktis:<% const dayName = tp.date.now("dddd"); %><% dayName %>akan menampilkan nama hari. Kamu bisa menyimpan hasil ke variabel dan menggunakannya berkali-kali. - Buat logika kondisional. Misalnya kamu ingin checklist berbeda untuk weekday dan weekend:
<%* const isWeekend = ["Saturday", "Sunday"].includes(tp.date.now("dddd")); if (isWeekend) { %> - [ ] Review personal projects - [ ] Plan next week <%* } else { %> - [ ] Check work emails - [ ] Daily standup prep <%* } %>Perhatikan penggunaan<%*untuk kode yang tidak menghasilkan output, dan<%untuk yang menghasilkan output. - Manipulasi string dan formatting. Templater punya built-in functions seperti
tp.file.titleuntuk nama file. Kamu bisa manipulasi dengan JavaScript standar:<% tp.file.title.toLowerCase().replace(/ /g, "-") %>akan mengubah judul file jadi slug URL-friendly. - Prompt input dari user. Gunakan
tp.system.prompt()untuk meminta input saat template dijalankan:<% const projectName = await tp.system.prompt("Project name") %>. Ini berguna untuk template yang butuh customization per-instance. - Integrasi dengan file lain. Kamu bisa membaca konten file lain dengan
tp.file.include()atau bahkan mengeksekusi template lain sebagai function. Ini powerful untuk membuat sistem modular.
Contoh Template Real-World: Meeting Notes
Berikut template meeting notes yang saya pakai sehari-hari. Template ini otomatis mengisi metadata, membuat struktur notes, dan bahkan menghitung durasi meeting:
<%*
const meetingTitle = await tp.system.prompt("Meeting title");
const startTime = await tp.system.prompt("Start time (HH:MM)");
const endTime = await tp.system.prompt("End time (HH:MM)");
const [startH, startM] = startTime.split(":").map(Number);
const [endH, endM] = endTime.split(":").map(Number);
const duration = (endH * 60 + endM) - (startH * 60 + startM);
%>
# <% meetingTitle %>
**Date:** <% tp.date.now("YYYY-MM-DD") %>
**Time:** <% startTime %> - <% endTime %> (<% duration %> minutes)
## Attendees
-
## Agenda
1.
## Notes
## Action Items
- [ ]
## Follow-up
Template ini menghemat waktu karena struktur sudah konsisten, dan metadata terisi otomatis. Kamu bisa search notes berdasarkan durasi atau tanggal dengan mudah.
Kesalahan yang Sering Terjadi
- Lupa menggunakan
<%*untuk kode tanpa output. Jika kamu pakai<%untuk deklarasi variabel atau if statement, hasilnya akan muncul sebagai teks di notes. Gunakan<%*untuk logic,<%untuk output. - Tidak handle async/await dengan benar. Functions seperti
tp.system.prompt()adalah async. Jika kamu tidak pakaiawait, hasilnya akan jadi Promise object, bukan nilai yang kamu mau. - Path file yang salah di Termux. Obsidian di Termux kadang punya masalah dengan relative path. Selalu gunakan absolute path atau test dulu dengan
tp.file.path()untuk memastikan lokasi file benar. - Syntax error yang tidak jelas. Templater tidak selalu memberikan error message yang informatif. Jika template tidak jalan, cek console Obsidian (Ctrl+Shift+I di desktop) untuk melihat error JavaScript yang sebenarnya.
- Overcomplicating template. Jangan masukkan semua logic di satu template. Pecah jadi beberapa template kecil yang bisa di-include. Ini membuat maintenance lebih mudah dan template lebih reusable.
Tips Aman dan Etis
Templater punya akses ke sistem file dan bisa menjalankan command. Ini powerful tapi juga berbahaya jika disalahgunakan. Beberapa prinsip yang harus kamu pegang:
Jangan aktifkan System Commands kecuali benar-benar perlu. Fitur ini memungkinkan template menjalankan shell command. Jika vault kamu sync dengan cloud atau kamu download template dari orang lain, ada risiko eksekusi kode berbahaya.
Review template dari sumber eksternal. Jika kamu download template dari internet, baca dulu kodenya. Cari pattern mencurigakan seperti tp.system.command() yang mengakses file sensitif atau mengirim data keluar.
Gunakan untuk produktivitas, bukan automation yang merusak. Templater bisa dipakai untuk otomasi workflow yang sah seperti journaling, project management, atau knowledge base. Jangan gunakan untuk membuat spam bot, scraping tanpa izin, atau bypass sistem keamanan.
Backup vault secara berkala. Karena template bisa memodifikasi file, selalu ada risiko bug yang merusak data. Gunakan git atau sync service dengan version history.
Optimasi untuk Workflow Termux
Pengguna Termux punya keuntungan unik: kamu bisa kombinasikan Templater dengan command-line tools. Misalnya, template bisa memanggil termux-clipboard-get untuk paste clipboard, atau termux-location untuk menambahkan koordinat GPS ke notes. Tapi ingat, ini butuh System Commands aktif, jadi pastikan kamu paham risikonya.
Untuk performance, hindari template yang terlalu kompleks jika vault kamu besar. Templater menjalankan JavaScript synchronous, jadi kode yang lambat akan freeze Obsidian. Jika butuh processing berat, lebih baik pakai external script dan import hasilnya.
Kesimpulan
Templater mengubah Obsidian dari note-taking app biasa jadi sistem produktivitas yang bisa disesuaikan sepenuhnya. Dengan JavaScript, kamu bisa membuat template yang benar-benar dinamis dan sesuai workflow kamu. Mulai dari yang sederhana seperti auto-fill tanggal, sampai sistem kompleks dengan logika kondisional dan integrasi eksternal. Kuncinya adalah mulai kecil, test setiap perubahan, dan selalu prioritaskan keamanan. Setelah kamu terbiasa dengan syntax dasar, kamu akan menemukan banyak cara untuk mengotomasi task repetitif dan fokus ke hal yang lebih penting: konten notes itu sendiri.