A personal journal.

Workflow blogging baru, dari smartphone, dengan Obsidian

Published on: 11/05/2025 • Updated on: 13/05/2025 • 3 min read

Untuk percobaan posting, sudah ada postingan sebelumnya. Karena ribetnya migrasi (bahkan saya belum selesai memperbaiki postingan saya sejak pindah ke BSSG), jadi saya memutuskan untuk menuliskan postingan dengan memanfaatkan Obsidian. Yang ternyata, tidak mudah juga.

Intinya, setup saya adalah :

  • Editor : Obsidian
  • Builder : Alpine via ReTerminal (fork dari termux)
  • Server : Raspberry Pi Zero W

Latar belakang memilih Obsidian.

Gratis.

Ehm, karena saya bukan manusia minimalist yang suka mengetik di terminal. Ya, menang BSSG bisa diakses murni dari terminal, bahkan di postingan saya sebelumnya, saya suka micro sebagai text editor.

Alasan utama saya adalah kemudahan. Mengingat blog ini sekarang di-host di perangkat Raspberry Pi Zero saya, jika saya harus SSH setiap kali ingin menulis, bukankah itu merepotkan?

Akhirnya saya memutuskan untuk mencari editor yang nyaman digunakan, dan melakukan sinkronisasi berkas markdown mentah saya dengan rclone jika ingin mengetik / mengedit dari komputer.

Latar belakang menggunakan Alpine, di Android

Sebelumnya, saya sudah mencoba menggunakan BSSG pada perangkat Raspberry Pi Zero. Namun, ketika postingan saya yang hanya berjumlah 80 terasa lambat untuk dibangun, dan versi Pandoc yang lawas karena Debian, saya memutuskan untuk menggunakan terminal di Android dan menggunakan skrip deploy alias sync dengan rclone ke Pi agar bisa online.

Setup Obsidian

Bagi saya pemula, Obsidian itu bukan editor markdown sederhana. Obsidian sering dikenalkan sebagai editor yang powerful, karena plugin.

Hal yang saya perlukan adalah :

  1. otomatis menuliskan front matter, mengingat front matter harus diisi setiap saya membuat postingan.
  2. mengubah nama file menjadi format “tanggal-judulpost”

Hanya 2 itu, saya pun mengeksplorasi fitur yang ada di dalam Obsidian. Ada fitur bawaan dari Obsidian, yaitu template.

Sayangnya, template di Obsidian sangat terbatas, dan di sinilah kekuatan Obsidian mulai terlihat berkat Community Plugin.

Templater

Templater memungkinkan Saya untuk membuat teks otomatis (dalam hal ini front matter), awalnya template saya seperti ini

<%*
let title = tp.file.title;
let date = tp.date.now("YYYY-MM-DD");
%>---
title: <% title %>
date: <% date %>
lastmod: 
tags: 
slug: <% title %>
image: 
image_caption: 
description: 
---
Isi post... 

Sederhana dan banyak yang kurang. Hal yang pertama kali saya keluhkan adalah repotnya saya dalam menamai file postingan baru. Disinilah perjalanan saya mengotak atik Templater.

Isi judul, ganti nama file.

Templater memiliki fungsi yang tepat untuk ini, yaitu tp.system.prompt, sehingga saya mengubah template saya menjadi seperti ini.

<%*
let title = await tp.system.prompt("Masukkan judul post:");

await tp.file.rename(title);

%>---
title: <% title %>
---

Masalah datang, karena tidak sesuai dengan format yang saya inginkan (nama file seharusnya tidak memiliki spasi), template ini harus di ganti.

Nama file = slug.

Mengingat slug memiliki format yang sama seperti nama file, saya akhirnya mencoba membuat fungsi untuk replace teks, untungnya Templater bisa.

<%*
function slugify(text) {
  return text
    .toString()
    .toLowerCase()
    .replace(/\./g, "") // Hapus titik
    .replace(/:/g, "") // Hapus titik dua
    .replace(/\//g, "-") // Ganti / dengan -
    .replace(/\\/g, "-") // Ganti \ dengan -
    .replace(/</g, "") // Hapus <
    .replace(/>/g, "") // Hapus >
    .replace(/\|/g, "-") // Ganti | dengan -
    .replace(/\*/g, "") // Hapus *
    .replace(/\?/g, "") // Hapus ?
    .replace(/"/g, "") // Hapus "
    .replace(/\s+/g, "-") // Ganti spasi dengan -
    .replace(/-+/g, "-") // Gabungkan - berurutan
    .replace(/^-+/, "") // Hapus - di awal
    .replace(/-+$/, ""); // Hapus - di akhir
}

let title = await tp.system.prompt("Masukkan judul post:");

let newFileName = `${date}-${slugify(title)}`;

await tp.file.rename(newFileName);

%>---
title: <% title %>
slug: <% slugify(title) %>
---

Dengan begini, nama file dan slug tidak akan memiliki karakter aneh - aneh.

Image Inserter

Salah satu keunggulan Ghost adalah saya tidak perlu berfikir pusing untuk memilih gambar yang akan dipasang di post. Ternyata di Obsidian juga bisa, pasang plugin ini dan anda bisa mencari gambar judul yang diambil dari Unsplash, pexel, dan sebagainya.

Linter

Ada banyak cara untuk mengganti lastmod, namun setelah beberapa kali mengganti plugin, saya memilih untuk menggunakan plugin Linter. Alasannya, efisiensi. Dengan Linter tidak hanya mengubah lastmod, tetapi juga menata teks, terutama tag, di mana Obsidian secara default membuat tag seperti:

tags :
       - blogging
       - awesome

Padahal, BSSG memiliki format tags seperti berikut

tags : Blogging, awesome

Tinggal ubah pengaturan bagian tags, dan selesai.

Setidaknya, dengan beberapa plugin tersebut, saya lebih mudah untuk posting dari smartphone maupun PC. Untungnya, Obsidian menyimpan konfigurasi plugin di dalam vault, yang kebetulan saya tempatkan langsung di sebelah file postingan saya, sehingga tinggal open vault di PC dan segala macam setup ikut terbawa.

Setup ReTerminal

Seperti halnya Termux, bedanya ReTerminal ini secara bawaan langsung menginstal proot dengan distro Alpine Linux.

Kekurangannya adalah, perlu Shizuku, dan jika kamu ingin menghapus (benar-benar menghapus), sedikit merepotkan karena datanya disimpan ke folder yang “tersembunyi”, yaitu di /data.

Setelah install, tentu saya mempersiapkan git (untuk clone BSSG), pandoc, dan rclone.