- Spegel adalah browser yang mengubah halaman web HTML menjadi prompt LLM lalu menampilkannya dalam bentuk Markdown di terminal
- Berdasarkan prompt pengguna, halaman dapat diubah secara kustom dan real-time, sehingga bisa diatur untuk hanya menampilkan informasi penting secara ringkas
- Mekanisme inti kerjanya adalah perayapan HTML → pemrosesan prompt LLM → konversi dan output Markdown
- Menyediakan UI terminal yang intuitif dan ringan berbasis Textual TUI, serta view dan prompt dapat dikelola dengan mudah melalui berkas konfigurasi dan diubah secara real-time
- Berbeda dari browser terminal lama seperti Lynx, Links2, dan Browsh, Spegel dioptimalkan khusus untuk personalisasi konten berbasis LLM
- Dapat dipasang dengan mudah melalui
pip install spegel, dan cocok untuk berbagai eksperimen serta perluasan karena bersifat open source
Gambaran proyek dan fitur
- Spegel adalah salah satu jenis browser web yang berjalan di terminal, yang mengirim HTML ke LLM untuk menyusun ulang halaman dengan prompt buatan pengguna
- Output dikonversi menjadi Markdown lalu ditampilkan secara intuitif dalam UI terminal berbasis Textual
- Desain minimalis tanpa dukungan JS dan hanya memproses permintaan GET
- Mendukung berbagai view transformasi lewat kustomisasi prompt LLM (misalnya ringkasan resep, penekanan aksi utama, dan lain-lain)
Personalisasi dan contoh penggunaan
- Prompt dan view dapat dikelola dengan bebas melalui konfigurasi pengguna (
~/.spegel.toml)
- Contoh:
- Mengekstrak hanya bahan dan langkah inti dari resep
- Mengubah penjelasan yang rumit menjadi ringkas dalam gaya ELI5
- Jika perlu, beberapa view bisa didaftarkan sekaligus dan diganti dengan cepat
Cara kerja
- Spegel mengambil HTML lalu mengirimkannya ke LLM bersama prompt dari berkas konfigurasi
- Hasil dari LLM diubah menjadi Markdown lalu dirender di terminal melalui Textual
- Prompt dan view dapat disesuaikan secara real-time bahkan saat sedang menelusuri
- Hasil di-stream per baris, dengan pemrosesan buffer untuk mencegah kesalahan format Markdown
Perbedaan dari browser terminal yang sudah ada
- Lynx, Links2, dan Browsh hanya menampilkan struktur HTML itu sendiri di terminal
- Spegel berfokus pada transformasi berbasis LLM untuk menghapus informasi yang tidak perlu dan menyediakan view yang dioptimalkan
- Situs web modern sangat bergantung pada CSS dan JS sehingga terasa rumit di lingkungan terminal; Spegel mengekstrak hanya konten inti untuk meningkatkan fokus dan aksesibilitas
Instalasi dan cara pakai
- Instalasi mudah dengan pip:
pip install spegel
- Menjalankan:
spegel <URL>
- Perlu menyesuaikan berkas konfigurasi (
~/.spegel.toml), contoh tersedia di GitHub
- Kode sumber dan kontribusi: https://github.com/simedw/spegel
Catatan
- Masih berada pada tahap Proof-of-Concept, jadi masih ada beberapa fitur yang belum selesai dan bagian yang masih kasar
- Belum mendukung permintaan POST, dan sedang dipikirkan ide pengembangan ke depan seperti input formulir
- Alih-alih menjadi pengganti browser terminal yang ada, proyek ini lebih kuat nuansanya sebagai eksperimen untuk mengeksplorasi personalisasi konten berbasis LLM+TUI
2 komentar
Komentar Hacker News
Menurut saya ini ide yang sangat menarik; mungkin tidak akan sepenuhnya menggantikan browser, tetapi dengan menggabungkan pencarian deterministik dan prompt, rasanya ini bisa melahirkan cara menjelajah web yang benar-benar berbeda. Saya juga merasa akan lebih cocok jika disediakan dalam bentuk alat baris perintah.
Langkah berikutnya yang saya bayangkan adalah kemampuan menangani beberapa "tab" sekaligus; misalnya tab 1 berisi liputan berita A, tab 2 berita B, tab 3 Wikipedia, lalu semuanya dirangkum dan dibuatkan tautan referensi. Namun saya ragu apakah ada model yang cukup stabil untuk mendukung alur kerja seperti ini; bahkan model SOTA terbaru pun terasa punya keterbatasan.
Fitur seperti itu—melihat liputan dari banyak media sekaligus, merangkum, dan memberi referensi—pada dasarnya adalah yang dilakukan Ground News. Saya tidak punya hubungan apa pun dengan mereka, saya hanya melihat mereka disebut sebagai sponsor di video Kurzgesagt. Meski begitu, jelas UI-nya bisa saja berbeda.
Kalaupun beberapa tab/view ditampilkan bersamaan, saya membayangkannya tetap terbatas pada sumber yang sama. Misalnya satu tab berisi representasi asli yang dioptimalkan untuk CLI, tab lain khusus untuk fact-checking (mencari dasar isi lewat Google atau Brave). Rasanya eksperimen seperti ini akan sangat menyenangkan.
Ini pada dasarnya seperti struktur di mana spam SEO berbasis LLM dibuat habis-habisan, lalu LLM lain merangkum asal-asalan dan memuntahkannya kembali. Sungguh masa depan yang luar biasa.
Rasanya sangat klasik bahwa contoh pertama yang muncul adalah mengekstrak resep saja dari situs resep terkenal. Secara pribadi, proyek seperti ini langsung ingin saya rekomendasikan; kesannya sangat cerdas.
Lagi-lagi saya melihat hype LLM sebagai contoh penafsiran ulang atas sesuatu yang sebenarnya sudah ada, lalu dibuat jauh lebih buruk dan non-deterministik. Struktur standar seperti schema.org/Recipe sudah ada sejak lama.
Menarik bahwa dalam proses ekstraksi resep, isi, bahan, dan takaran bisa berubah secara acak. Menurut saya sifat LLM terlihat sangat jelas dalam mikrokosmos seperti ini, meski arahnya benar-benar berbeda dari yang diharapkan sebagian besar komentar.
Sudah ada ekstensi yang mengekstrak resep secara deterministik tanpa LLM. Misalnya ekstensi Chrome Recipe Filter menampilkan resep dalam popup ketika mendeteksi resep di halaman.
Saya suka bahwa LLM yang ditempatkan di tengah bisa mengakali tren penulisan yang dioptimalkan untuk SEO dan struktur SEO itu sendiri yang belakangan marak di Google. Menyaring semua bagian yang tidak perlu dan hanya menyisakan resep terasa seperti kasus yang sangat cocok untuk LLM. Saya menduga ke depan akan lebih banyak contoh penggunaan LLM secara aktif sebagai filter. Tentu akan lebih bagus jika resep bisa langsung diekstrak dari HTML, tetapi perang SEO sudah terlalu parah sehingga secara realistis hal itu jadi mustahil.
Jika LLM dipakai untuk menghapus semua elemen yang tidak perlu, perlu juga dipikirkan bahwa LLM bisa saja mengubah resep secara tak terduga. Saya tidak mengerti bagaimana orang bisa mempercayai perangkat lunak probabilistik seperti ini di lingkungan yang tidak bisa mentoleransi kesalahan.
Saya sudah membayangkan masa depan seperti ini sejak beberapa tahun lalu. Alat LLM dengan pencarian bawaan sudah ada, dan kemampuan menghubungkan beberapa pencarian sekaligus sangat kuat. Tetapi Spegel bekerja dengan cara yang sama sekali berbeda. Saya rasa pemblokir iklan masa depan akan berupa LLM lokal yang kecil dan efisien. Misalnya untuk mengurutkan timeline secara kronologis, mengubah UI, hanya menampilkan item tertentu, dan berbagai transformasi lain. Menyembunyikan komentar berkualitas rendah secara otomatis juga mungkin. Saat LLM bekerja di tengah sebagai proxy atau agen, semua itu bisa dilakukan. Saya menduga tren ini akan terasa sangat tidak nyaman bagi para pengiklan.
Perlu juga dipikirkan bahwa dalam proses menjelajah web, LLM mungkin harus memproses jutaan token per menit, dan itu berarti biaya komputasinya besar.
LLM membuat hal-hal yang tidak perlu, lalu LLM lain lagi menghapus hal-hal yang tidak perlu itu; terasa seperti struktur siklik yang berjalan tanpa salah paham satu sama lain.
Saya rasa ada potensi jika menggunakan model yang lebih sederhana (bahkan mungkin berbasis LSTM), menelusuri DOM, memilih hanya bagian yang diperlukan, lalu mengumpulkannya ke struktur data yang akan langsung ditampilkan di browser. Rasanya data latih pun bisa dibuat dengan mudah menggunakan rantai alat berbasis LLM milik penulis.
Banyak orang tampaknya melewatkan bahwa HTML hanyalah titik awal. Jika halaman web bisa diubah ke view lain, maka pada dasarnya semua input yang bisa diterima model juga bisa diubah. PDF, zip berisi gambar, JSON berukuran besar—apa pun bisa dijadikan view. Pada akhirnya yang penting bukan input HTML-nya, melainkan view hasil keluarannya.
Usulan menambahkan opsi
-pke spegelyaitu fitur untuk mengekstrak hanya informasi yang diinginkan berdasarkan prompt.
Saya rasa jika halaman tidak ditulis ulang dari awal setiap kali, melainkan sekali kunjungan diubah ke Markdown lalu versi bersihnya dibagikan, biaya komputasi untuk membangun ulang bisa dikurangi.
Karena kebutuhan dan pengetahuan awal tiap pengguna berbeda, menurut saya sekalipun dibuat materi bersama yang sangat bersih, pada akhirnya tetap akan ada proses penyesuaian per individu. Meski begitu, cache duplikasi global seperti cache P2P (misalnya IPFS) bisa membantu untuk pelestarian data, memastikan ketersediaan, dan menghemat sumber daya.
Header cache digunakan server untuk memberi tahu klien berapa lama suatu informasi boleh di-cache. Saya rasa akan bagus jika ditambahkan lapisan cache di sisi klien yang juga mematuhi header seperti ini.
Jika tujuannya adalah layout yang konsisten, ada juga kemungkinan mengirimkan hasil Markdown dari halaman terakhir bersama model sebagai contoh (one-shot example).
Karena tujuan proyek ini adalah "view berbasis prompt yang dipersonalisasi", saya rasa setidaknya hasil dari prompt default bisa di-cache dan dipakai ulang.
Saya merasa ini POC yang benar-benar luar biasa, dan ada kemiripan besar dengan ekstensi Chrome "reader view" yang biasa saya pakai.
tautan ekstensi reader view
Idenya sangat keren dan saya pikir potensinya juga besar dari sisi aksesibilitas.
Ada video lama yang mendemokan agen AI saya yang sekarang sudah saya pensiunkan, yang mengubah halaman web secara real-time.
Demo mengubah HN menjadi My Little Pony (video)
Hasilnya bisa dilihat mulai sekitar detik ke-37.
Saya juga pernah membuat ekstensi Chrome open-source, jadi kalau penasaran silakan lihat ChromeGPT.
spegel -p "extract only the product reviews" > REVIEWS.mdKalau opsi ini saja sudah ada, saya kepikiran banyak hal yang bisa dipakai, tapi sepertinya untuk saat ini masih belum ada.