Workflow blogging baru, dari smartphone, dengan Obsidian
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 :
- otomatis menuliskan front matter, mengingat front matter harus diisi setiap saya membuat postingan.
- 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
.