Gönderi

Vocalog: Obsidian İçin Kendi Yapay Zeka Destekli Sesli Not Eklentimi Nasıl Geliştirdim?

Vocalog: Obsidian İçin Kendi Yapay Zeka Destekli Sesli Not Eklentimi Nasıl Geliştirdim?

Merhabalar,

Bir süredir aklımda olan bir fikri sonunda gerçek bir Obsidian eklentisine dönüştürdüm: Vocalog.

Vocalog, sesli düşüncelerimi doğrudan Obsidian içindeki günlük notlarıma aktarabilmek için geliştirdiğim; canlı mikrofon kaydı, Whisper tabanlı konuşmadan metne dönüşüm ve yapay zeka destekli not yapılandırmasını tek bir akışta birleştiren bir eklenti. Projenin kaynak koduna GitHub üzerinden ulaşabilirsiniz.

Bu yazıda yalnızca eklentinin ne yaptığını değil, neden böyle bir şeye ihtiyaç duyduğumu, projeyi nasıl şekillendirdiğimi ve geliştirirken hangi kararları aldığımı kendi deneyimim üzerinden anlatacağım.

Vocalog kapak görseli Vocalog için hazırladığım kapak görseli.

Fikir nereden çıktı?

Obsidian’ı yalnızca Markdown dosyaları sakladığım bir uygulama olarak görmüyorum. Benim için Obsidian; fikirleri, teknik notları, proje günlüklerini ve öğrendiklerimi birbirine bağladığım kişisel bir çalışma alanı.

Fakat aklıma bir fikir geldiğinde her zaman klavyenin başında olmuyorum. Araba kullanırken, yürürken veya bir işle uğraşırken aklıma gelenleri yazıya geçirmek çoğu zaman fikrin kendisini kaybetmek anlamına geliyor. Telefonda ses kaydı almak ise not alma sürecini tamamlamıyordu:

  1. Harici bir uygulamada kayıt almak,
  2. Dosyayı bulmak,
  3. Bir transkripsiyon servisine göndermek,
  4. Çıktıyı kopyalayıp Obsidian’a yapıştırmak,
  5. Sonra da metni elle düzenlemek gerekiyordu.

Bu akış, sesli not almanın hız avantajını ortadan kaldırıyordu. Ben de süreci mümkün olduğunca Obsidian’ın içinde tutmaya karar verdim.

Neden mevcut bir projeyi forklayıp baştan ele aldım?

Vocalog’u geliştirirken sıfırdan boş bir repository oluşturmak yerine mevcut bir projeyi fork’ladım. Bunun nedeni hazır kodu olduğu gibi kullanmak değildi. Tam tersine, çalışan bir başlangıç noktasını alıp onu kendi kullanım senaryoma göre yeniden tasarlamak istedim.

Fork’ladığım proje, temel fikrin ve ilk prototipin çıkış noktası oldu. Daha sonra mimariyi, kullanıcı akışını, ayar ekranlarını, hata yönetimini, dokümantasyonu ve yapay zeka entegrasyonunu büyük ölçüde yeniden ele aldım. Bugün ortaya çıkan Vocalog, başlangıçtaki projeden ilham alan ama kullanım amacı, özellik seti ve uygulama detayları bakımından kendi ihtiyaçlarıma göre şekillenmiş ayrı bir ürün haline geldi.

Bu yaklaşım benim için önemliydi. Çünkü gerçek bir projeyi yeniden düşünmek, boş bir dosyada mimari tasarlamaktan daha öğretici. Var olan kararların neden alındığını anlamak, nerede sınıra ulaştıklarını görmek ve gerektiğinde değiştirmek; yazılım geliştirmeyi yalnızca yeni kod yazmaktan çıkarıp mühendislik problemine dönüştürüyor.

Vocalog nasıl çalışıyor?

Vocalog’un temel akışı dört adımdan oluşuyor:

1. Konuşuyorum

Obsidian’ın ribbon alanındaki mikrofon ikonuna tıklayarak canlı kayıt başlatıyorum. Kayıt sırasında ikonun görsel olarak nabız gibi yanıp sönmesi, mikrofonun aktif olduğunu anlık olarak gösteriyor.

Vocalog kayıt akışı temsili Bu görsel gerçek bir ekran görüntüsü değil; Vocalog’un kayıt akışını anlatan temsili bir arayüz önizlemesidir.

2. Ses metne dönüşüyor

Kayıt tamamlandığında ses dosyası yapılandırılmış konuşmadan metne API’sine gönderiliyor. Vocalog, OpenAI uyumlu endpoint’leri destekleyecek şekilde tasarlandı. Bu sayede OpenAI veya Groq gibi servislerin yanı sıra uygun bir yerel ya da self-hosted çözüm de kullanılabiliyor.

Özellikle Groq üzerindeki Whisper modelleri, hızlı sonuç almak istediğim senaryolarda oldukça iyi bir deneyim sunuyor.

3. Yapay zeka notu yapılandırıyor

Ham transkript çoğu zaman günlük notu olarak kullanılabilecek kadar düzenli olmuyor. Cümleler yarım kalabiliyor, konu değişebiliyor veya aynı fikir farklı şekillerde tekrar edilebiliyor.

Bu nedenle ikinci adımda LLM desteği devreye giriyor. DeepSeek, OpenAI, Groq veya yerel Ollama kurulumu gibi OpenAI uyumlu sohbet API’lerinden biriyle transkript; özet, aksiyon maddeleri, içgörüler ve önemli noktalar içeren Markdown formatına dönüştürülüyor.

4. Ham içerik korunuyor

Yapay zeka tarafından oluşturulan özetin yanında orijinal transkripti de koruyorum. Çünkü özet faydalı olsa da her zaman asıl konuşmanın bütün bağlamını taşımaz. Vocalog bu nedenle ham transkripti katlanabilir bir bölüm içinde saklıyor.

Bu tercih, yapay zekanın ürettiği sonuca körü körüne güvenmek yerine hem düzenli notu hem de kaynağı birlikte saklamamı sağlıyor.

Vocalog günlük notu temsili Yapay zeka tarafından yapılandırılmış günlük notu ve korunan ham transkript için temsili önizleme.

Benim için önemli olan tasarım kararları

Local-first yaklaşım

Vocalog’u tasarlarken en önem verdiğim konulardan biri veri kontrolü oldu. Kayıtlarımın ve oluşturduğum notların nerede tutulduğunu bilmek istiyorum. Eklenti herhangi bir merkezi ara sunucuya veri göndermiyor; ağ bağlantıları doğrudan kullanıcının seçtiği API sağlayıcısına yapılıyor.

Ses dosyaları ve günlük notları kullanıcının kendi vault’unda kalıyor. API anahtarları da Obsidian eklentisinin yerel ayar dosyasında saklanıyor. Elbette seçilen harici API sağlayıcısının kendi veri politikası ayrıca değerlendirilmeli; ancak uygulama seviyesinde gereksiz bir aracı katman eklememeyi özellikle tercih ettim.

Sağlayıcıdan bağımsız entegrasyon

Yapay zeka ekosistemi çok hızlı değişiyor. Bugün tercih edilen model veya servis birkaç ay sonra değişebilir. Bu nedenle Vocalog’u tek bir sağlayıcıya kilitlemek yerine OpenAI uyumlu API yaklaşımını kullandım.

Kullanıcı konuşmadan metne dönüşüm için bir sağlayıcı, özetleme için başka bir sağlayıcı seçebiliyor. İster uygun maliyetli bir bulut servisi, ister yerel çalışan bir Ollama modeli kullanılabiliyor.

Sesli kayıt yalnızca tek tık olmalı

Sesli not alma fikrinin en büyük avantajı hız. Bu yüzden kullanıcıyı dosya seçme, harici uygulama açma veya karmaşık bir iş akışı takip etme zorunluluğundan kurtarmak istedim.

Tek tıkla kayıt başlatmak, tekrar tıklayarak bitirmek ve sonucu günlük nota eklemek temel deneyimin mümkün olduğunca kısa kalmasını sağlıyor. Ayrıca mevcut ses dosyalarını sonradan işlemek ve tarih aralığı seçerek toplu işlem yapmak için komutlar da ekledim.

Geliştirirken neleri yeniden yaptım?

Projeyi fork’ladıktan sonra yalnızca birkaç özellik eklemekle yetinmedim. Kendi kullanım senaryoma uygun bir ürün elde etmek için farklı katmanları yeniden ele aldım:

  • Canlı mikrofon kaydı ve kayıt durumunun görsel geri bildirimi,
  • Whisper uyumlu konuşmadan metne akışı,
  • DeepSeek, OpenAI, Groq ve Ollama gibi LLM sağlayıcılarına uyarlanabilen yapı,
  • Günlük notlara temiz ve tekrar çalıştırılabilir biçimde ekleme,
  • Ham transkriptlerin kaybolmamasını sağlayan yapı,
  • Tek dosya, tarih aralığı ve seçili ses dosyaları için farklı işleme akışları,
  • Ayar ekranlarında daha anlaşılır kullanıcı deneyimi,
  • Hata durumlarında daha açık bildirimler,
  • README, llms.txt, manifest ve sürüm dokümantasyonunun güncellenmesi.

Bu süreçte en çok dikkat ettiğim şey, yapay zekayı ürünün tamamı gibi sunmamak oldu. Yapay zeka burada not alma sürecini hızlandıran bir katman. Ses kaydı, dosya yönetimi, günlük not entegrasyonu, ayarlar ve hata yönetimi gibi klasik yazılım mühendisliği problemleri hâlâ en az model seçimi kadar önemli.

Bana ne kattı?

Vocalog benim için yalnızca bir Obsidian eklentisi olmadı. Bir fikri hızla prototiplemenin ötesinde, mevcut bir projeyi nasıl devralabileceğimi ve nasıl kendi ürün vizyonuma dönüştürebileceğimi görmemi sağladı.

Bu proje sayesinde:

  • TypeScript ve Obsidian plugin API’siyle daha derin çalıştım,
  • Ses işleme ile LLM tabanlı metin üretimini aynı akışta birleştirdim,
  • Sağlayıcıdan bağımsız API tasarımının önemini tekrar gördüm,
  • Kullanıcı deneyiminde küçük geri bildirimlerin ne kadar değerli olduğunu deneyimledim,
  • Dokümantasyon, sürümleme ve AI araçlarının projeyi keşfetmesini kolaylaştıran metadata konularına daha fazla odaklandım.

En önemlisi, kendi günlük çalışma biçimimde gerçekten kullandığım bir araç ortaya çıktı. Bir projeyi değerlendirirken benim için en iyi test, onu birkaç hafta sonra hâlâ kullanıyor olup olmadığımdır. Vocalog bu testi geçti.

Bundan sonra ne var?

Vocalog’u geliştirmeye devam etmek istiyorum. Gelecekte daha iyi yerel model desteği, farklı ses formatları için daha geniş uyumluluk, gelişmiş şablonlar ve Obsidian içindeki not bağlamını daha iyi kullanan özetleme akışları üzerinde çalışmayı planlıyorum.

Ayrıca projeyi kullanan kişilerin geri bildirimleriyle hangi özelliklerin gerçekten değer ürettiğini görmek istiyorum. Eklenti açık kaynak olduğu için önerilere, issue’lara ve pull request’lere açığım.

Vocalog’u incelemek, kurmak veya katkıda bulunmak isterseniz repository’ye göz atabilirsiniz:

github.com/muminkoykiran/Vocalog

Bu proje, sesli düşüncelerimi kaybetmemek için başladı. Şimdi ise Obsidian kullanan herkesin fikirlerini daha hızlı yakalayıp düzenleyebilmesine yardımcı olabilecek bir araca dönüşüyor.

Bu gönderi CC BY 4.0 lisansı altındadır.