# Tan Assistant: toplantıyı sesi ve değişen ekran kareleriyle nota çeviren masaüstü uygulaması

> Rust ve Tauri 2 ile yazılan açık kaynak bir masaüstü uygulaması toplantının sesini ve değişen ekran karelerini kaydedip özet ve aksiyon notu çıkarıyor.

- Şu an ne yapıyor: Toplantının mikrofon ve sistem sesini ayrı kanallarda, ekranın yalnızca değişen karelerini kaydedip özet, karar, aksiyon maddesi ve açık soru içeren bir not çıkarıyor. Toplantı kaydını videoya çevirmeden nota dönüştürmek isteyen herkes kaynaktan derleyip deneyebilir.
- Tür: Desktop, Open-Source
- Olgunluk: Alpha
- Durum: Geliştiriliyor
- Odak: Otomasyon & veri işleme
- Başlangıç: 2026-11-05
- Teknolojiler: Rust, Tauri 2, React, TypeScript, SQLite, whisper.cpp, Ollama
- Etiketler: #yapay-zeka, #rust
- Kaynak kodu: https://github.com/muhammetsafak/TanAssistant
- Kaynak: https://muhammetsafak.com/tr/labs/tan-assistant-lab/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
Toplantılarda alınan kararlar ve atanan işler unutulmasın diye katılımcıları bilgilendirerek ses ve ekranı kaydediyordum. Kaydı yeniden dinleyip not çıkarmak toplantı sayısıyla sürdürülemez hâle geldi; tam video ise yarım saatlik toplantıda birkaç GB tutuyordu. Tan Assistant bu iki sorunun arasındaki çözüm: video yerine ses ve yalnızca değişen ekran kareleri. Hikâyenin kendisi [blog yazısında](https://muhammetsafak.com/tr/blog/tan-assistant-toplanti-notu/).

## Videosuz toplantı kaydı

Toplantı hangi araçta yapılırsa yapılsın uygulama bilgisayarda çalışıyor. Mikrofonu ve diğer katılımcıların sesini ayrı kanallarda alıyor; ekrandan yalnızca görünür biçimde değişen kareleri tutuyor (algısal hash ile). Kayıt duraklatılabiliyor, duraklatılan süre kayda girmiyor. Windows, macOS (ScreenCaptureKit, 13.0 ve sonrası) ve Linux (X11 ile Wayland) için yakalama kodunu yazdım.

Kayıt bitince transkript, ardından özet, kararlar, işaretlenebilir aksiyon maddeleri ve açık soruların olduğu bir not oluşuyor; not, ekranda gösterilen karelerle birlikte duruyor.

## Modeli seçilebilir hat

Transkript için varsayılan olarak yerel whisper'ı kullandım (GPU varsa Vulkan ya da Metal, yoksa CPU); isterseniz OpenAI veya Gemini'ye de verebiliyorsunuz. Notu OpenAI, Anthropic, Gemini, DeepSeek ya da yerel bir Ollama yazabiliyor. Hangi işin hangi sağlayıcıya gideceğini ayarlardan siz seçiyorsunuz; API anahtarlarını işletim sisteminin anahtarlığında tutuyorum. Kayıtlar, kareler ve notlar makinenizde kalıyor; bulut sağlayıcılara yalnızca onlara atadığınız iş gidiyor.

Kodu katmanlı kurdum: `domain` bağımlılıksız, `application` yalnızca `domain`'e bakıyor, sağlayıcılar ve yakalama `infra-*` bağdaştırıcılarında duruyor. Bağımlılık yönünü `scripts/check-deps.sh` ile denetliyorum.

Uygulamayı Rust ile yazdım, çünkü toplantı boyunca arka planda açık kalan bir kayıt aracının olabildiğince hafif ve stabil olması gerekiyordu. Masaüstü kabuğu Tauri 2, arayüz React ve TypeScript; kayıtların ve notların dizini yerel bir SQLite veritabanında duruyor.

## Bugünün sınırı

Sürüm 0.1.0, alpha. Henüz kurulum paketi yayımlamadım, şimdilik kaynaktan derlemek gerekiyor. Davranış, veri düzeni ve ayarlar sürümden sürüme değişebilir; aradaki geçişi otomatik yapacak bir yol henüz yok.

Kapsamı bilerek dar tuttum: şimdilik yalnızca toplantıdan not çıkarıyor. İleride farklı özellikler de eklemeyi planlıyorum; amacım, benim için otomasyona çevirebileceğim işleri tek yerden yaptırabileceğim tümleşik bir uygulama. Adını bu sitenin maskotu [Tan](https://muhammetsafak.com/tr/tan/)'dan verdim.
