postkitty bir Hermes Agent eklentisidir. Bir kez kurun, yeni bir sohbet açın ve istediğinizi sade bir dille söyleyin.
Kurulum
Bunu terminalde çalıştırın. Eklenti resmî Hermes eklenti kataloğundan gelir.
hermespluginsinstallpostkitty
Hermes, Python bağımlılıklarını ve eklentinin etkinleştirilmesini sorduğunda evet deyin. Komutun şu biçimi iki soruyu da atlar:
hermespluginsinstallpostkitty--yes-deps--enable
Sonra yeni bir sohbet açın. Hermes bir eklentinin araçlarını bir sonraki sohbet başlarken yükler.
Kurulumu Hermes'e de yaptırabilirsiniz. Şu mesajı gönderin:
postkitty eklentisini benim için kur: terminalde `hermespluginsinstallpostkitty--yes-deps--enable` komutunu çalıştır. Bitince, araçlarının yüklenmesi için yeni bir sohbet açmamı söyle.
Gerekenler
Gereken
Ne için
Nasıl edinilir
Hermes Agent 0.22.7 veya üstü
Her şey
Sürümünüz daha eskiyse Hermes'i güncelleyin.
Beş Python paketi: OpenCV, NumPy, Pillow, regex ve ruamel.yaml
Fotoğraf, video ve sayım
Eklentiyle birlikte kurulur. Bir şey yapmanız gerekmez.
ffmpeg ve ffprobe
Yalnızca video
Hermes kendi ffmpeg'iyle gelir. Windows'ta ve çoğu Linux sisteminde video için başka bir şey kurmanız gerekmez. macOS'te bu kopyada ffprobe bulunmaz: bir kez brew install ffmpeg çalıştırın.
YuNet yüz algılama modeli
Fotoğraf ve video
postkitty modeli OpenCV Zoo'dan bir kez indirir ve sağlama toplamını doğrular.
libass içeren bir ffmpeg derlemesi
Yalnızca altyazı
Hermes'le gelen ffmpeg'de libass vardır. Kendi ffmpeg'inizi kullanıyorsanız /postkitty doctor çıktısındaki Captions satırına bakın.
Makinede kurulu bir yazı tipi
Yalnızca altyazı
Masaüstü bilgisayarlarda zaten vardır. Masaüstü ortamı olmayan bir sunucuda ya da konteynerde bir tane kurun: Ubuntu'da örneğin fonts-dejavu-core.
postkitty API anahtarı ya da hesap gerektirmez. Metin için medya araçlarının hiçbiri gerekmez: postkitty ffmpeg olmadan da metninizi yazar ve sayar.
Hepsini bir kerede denetlemek için Hermes sohbetine şunu yazın:
/postkittydoctor
Python, ffmpeg ve ffprobe, altyazı desteği, OpenCV, Pillow, yüz modeli ve çıktı klasörünün durumunu bildirir. Her sorunun yanında, nasıl giderileceğini anlatan tek bir satır bulunur. Son satır şu anda nelerin çalıştığını söyler: metin, fotoğraf, video, altyazı.
İlk isteğiniz
Yeni sohbette platformların adını yazın ve Hermes'e taslağınızı ya da her dosyanın tam yolunu verin.
postkitty ile bunu X, LinkedIn ve Instagram için gönderilere çevir, yazımı da düzelt: [taslağınız ya da bir fotoğrafın veya videonun yolu]
Bir iş tek bir fotoğraf ya da tek bir video alır; ikisinden birer tane de olabilir. Yanında metin bulunur. Birden çok fotoğrafınız varsa Hermes postkitty'yi her fotoğraf için ayrı çalıştırır. postkitty kaydırmalı gönderi oluşturmaz.
Hermes bir iş klasörünün yoluyla yanıt verir. Tüm denetimlerden geçen dosyalar ready/ içinde, her platform için ayrı bir klasörde durur. Her dosyayı metni, alternatif metni ve denetim sonuçlarıyla yan yana görmek için board.html dosyasını açın.
Hermes'e sade bir dille yazarsınız, Hermes de postkitty'yi çağırır. Platformları, dosyaları ve istediğiniz sonucu belirten bir istek ilk seferde doğru sonuç verir. Aşağıdaki her çift, belirsiz bir isteği net bir istekle yan yana gösterir.
Platformların adını verin
Platform adı vermezseniz postkitty dosyalarınıza uyan her platform için dosya üretir. Adlarını yazarsanız iş kısa sürer.
Belirsiz Bunu sosyal medyaya hazırla.
Net
[videonun yolu] dosyasını postkitty ile TikTok, Instagram Reels ve YouTube Shorts için hazırla.
Karede kimin kalacağını söyleyin
postkitty bulduğu her yüzü karede tutar. Bir kişi daha önemliyse ya da kimsenin kesilmemesi gerekiyorsa bunu söyleyin. Kişiler soldan sayılır.
Belirsiz Bu fotoğrafı kırp.
Net
[fotoğrafın yolu] dosyasını postkitty ile Instagram akışı için kırp. Beş kişinin hepsi fotoğrafta kalsın, soldan ikinci kişi ortada olsun.
Yerleşim sözcüklerini kullanın
Geniş bir videonun dikeye nasıl çevrileceğini dört sözcük belirler: crop, split, speaker ve geniş plan, yani pad yerleşimi. Her birini Yerleşimler bölümünde görebilirsiniz.
Belirsiz Bunu dikey yap.
Net
[videonun yolu] dosyasında iki kişi konuşuyor. Reels için ekranı böl, TikTok için o an konuşana geç, Shorts için geniş planın tamamını koru.
Kısaltma ve kapak zamanlarını verin
Zamanları saniye olarak ya da dakika ve saniye olarak verin. Vermezseniz postkitty klibi yalnızca platformun kesin bir süre sınırı varsa kısaltır ve kapak karesini kendisi seçer.
Belirsiz Kısalt, güzel bir kapak da seç.
Net
Reel'i ilk 45 saniyeye kısalt ve kapak olarak 0:12'deki kareyi kullan.
Tonu ve dili belirleyin
Metni Hermes'inizin kullandığı model yazar. Siz aksini söylemedikçe üslubunuzu ve dilinizi korur.
Belirsiz Bunun için güzel bir şeyler yaz.
Net
LinkedIn gönderisini resmi, X gönderisini samimi bir tonda yaz. İkisi de Almanca olsun. Verdiğim bilgileri olduğu gibi bırak.
Flood mu, tek gönderi mi istediğinizi söyleyin
X, Threads ya da Bluesky'de sınırı aşan metin numaralı bir flooda dönüşebilir. Hangisini istediğinizi söyleyin.
Belirsiz Bunu X'te paylaş.
Net
Bunu postkitty ile X'te bir flooda çevir, üslubumu koru. Bluesky sürümü tek gönderi olarak kalsın: [uzun gönderiniz]
Altyazıyı dosya olarak verin
postkitty altyazıları bir .srt ya da .vtt dosyasından alıp videoya gömer. Ekranda aynı anda en fazla iki satır gösterir ve altyazıyı platformun güvenli altyazı alanının içinde tutar. Sesi yazıya dökmediği için dosyayı sizin vermeniz gerekir.
Belirsiz Videoya altyazı ekle.
Net
[.srt dosyasının yolu] dosyasındaki altyazıları postkitty ile TikTok ve Reels kliplerine göm.
Değişiklik isteyin
Platformu ve neyin değişeceğini söyleyin. postkitty yalnızca o metni ya da dosyayı yeniden üretir ve yeniden denetler.
Belirsiz Beğenmedim, bir daha dene.
Net
LinkedIn gönderisini kısalt ve daha resmi yap, başka hashtagler kullan ve Instagram fotoğrafında soldaki kişiyi odağa al.
Dosyanın yüklenip yüklenmeyeceğini sorun
postkitty kendi üretmediği bir dosyayı da tek bir platformun sınırlarına göre denetleyebilir. Dosyayı ve platformu söyleyin.
Belirsiz Bu video olur mu?
Net
[dosyanın yolu] TikTok'a olduğu gibi yüklenir mi? postkitty ile kontrol et.
Hermes beş araç çağırır. Sıra şöyledir: scan, write, make, sonra değişiklikler için redo. check ise postkitty'nin üretmediği dosyalar içindir. Bu araçları kendiniz çağırmazsınız. Bu bölüm, Hermes'in ne yaptığını okumanıza ve eklentinin üzerine geliştirme yapmanıza yardım eder.
postkitty_scan
Girdileri okur ve işi planlar
Girdileri okur ve işi planlar. İş klasörünü oluşturduktan sonra kişileri, çekimleri ve sahneleri bulur ve her platform hedefi için kadrajı planlar. Hiçbir dosya üretmez, yalnızca metinle de çalışır.
Argüman
Tür
Açıklama
inputs
string[]
Tek bir fotoğrafın ya da tek bir videonun yolu; ikisinden birer tane de olabilir. Göreli bir yol, oturumunuzun çalıştığı klasörden başlar.
text
string
Varsa taslağınız.
platforms
string[]
Platform adları (instagram, tiktok, youtube, x, linkedin, threads, bluesky, facebook) ya da hedef kimlikleri. Verilmezse girdilere uyan her hedef seçilir.
job
string
Var olan bir işi sürdürmek için o işin kimliği.
Döndürdükleri. İş kimliği, her girdinin bilgileri (tür, boyut, süre, kişiler, çekimler), her hedefin planı (yerleşim, kısaltma, kapak karesi), her platformun koyduğu sınırlar, metninizin sayımları ve bir önizleme görselinin yolu.
postkitty_write
Her platformun metnini sayar ve metin dosyalarını yazar
Her platformun metnini o platformun gerçek kuralıyla sayar ve metin dosyalarını yazar. X, Threads ya da Bluesky'de sınırı aşan metin numaralı bir flooda bölünür. Hermes, her platform ok bildirene kadar bu aracı yeniden yazılmış bir taslakla tekrar çağırır. Metinde sonradan yapılan her değişiklikte de yeniden çağırır.
Argüman
Tür
Açıklama
jobzorunlu
string
postkitty_scan aracının döndürdüğü iş kimliği.
advice
object
Hermes'in gönderi hakkında çıkardıkları: topic, audience, tone, key_message, platformları gerekçeleriyle sıralayan ranking ve tips.
drafts
object
Her platform adı ya da hedef kimliği için bir taslak. String listesi verilirse flood olur.
alt_text
object
Hedef kimliğine, girdi dosyasının adına ya da hazır dosyanın yoluna göre alternatif metin. Yalnızca görüneni anlatır.
split_threads
boolean
Sınırı aşan metni flooda böler. Varsayılan: true.
Döndürdükleri. Her platform için sayım, birim, sınır, ok, taşan kısım ve akışın metni kestiği yere kadar görünen bölüm. advice.md dosyasını iş klasörüne yazar. post.txt, thread.txt ve alt.txt dosyalarını ready/ içine koyar.
postkitty_make
Üretir, denetler, onarır ve inceleme panosunu oluşturur
Planlanan her hedefi üretir, her dosyayı platformun yayımladığı sınırlara göre denetler, geçemeyeni onarır ve yalnızca denetimden geçen dosyaları ready/ içine koyar. İnceleme panosunu da yazar. Yalnızca metin içeren bir işte üretilecek dosya yoktur.
Argüman
Tür
Açıklama
jobzorunlu
string
postkitty_scan aracının döndürdüğü iş kimliği.
targets
string[]
Yalnızca bu hedef kimlikleri ya da platformlar. Verilmezse planlanan her hedef üretilir.
overrides
object
Hedef kimliği başına layout, focus, trim, cover_at ve captions değerlerinden istenenler. Açıklamaları postkitty_redo altındadır.
Döndürdükleri. Her hedef için bir satır içeren bir tablo. Bir dosya ancak durumu ready ya da repaired olduğunda yüklenmeye hazırdır. failed satırları neyin yanlış olduğunu, skipped satırları makinenizde hangi programın eksik olduğunu söyler.
postkitty_redo
Tek bir fotoğraf ya da video çıktısını değiştirir
Siz bir değişiklik istediğinizde tek bir fotoğraf ya da video hedefini yeniden üretir: başka bir yerleşim, odakta başka bir kişi, kısaltma, başka bir kapak karesi ya da altyazı. Taramayı yeniden kullandığı için hızlıdır. Yeni dosya denetimden geçemezse, daha önce geçmiş olan dosya yerinde kalır.
Argüman
Tür
Açıklama
jobzorunlu
string
postkitty_scan aracının döndürdüğü iş kimliği.
targetzorunlu
string
Yeniden üretilecek hedef, örneğin tiktok ya da instagram_feed.
Saniye cinsinden başlangıç ve bitiş. Yalnızca video.
cover_at
number
Kapak karesinin saniye cinsinden zamanı. Yalnızca video.
captions
string
Videoya gömülecek .srt ya da .vtt dosyasının yolu. none daha önce verilen altyazıyı kaldırır. Yalnızca video.
Döndürdükleri.postkitty_make ile aynı tablo, yalnızca o hedef için.
postkitty_check
postkitty'nin üretmediği bir dosyayı denetler
postkitty'nin üretmediği bir dosyayı, hiçbir şey üretmeden tek bir platform hedefine göre denetler. make ve redo ile üretilen dosyalar zaten denetlenmiştir.
Argüman
Tür
Açıklama
path
string
Denetlenecek dosyanın yolu.
target
string
x_image gibi bir hedef kimliği. Platformun o dosya türü için tek hedefi varsa platform adı da olur, örneğin tiktok.
job
string
Bir işin hazır dosyalarını yeniden denetlemek için o işin kimliği.
Döndürdükleri. Dosyanın geçip geçmediği ve geçemediği her denetim, uymadığı sınırla birlikte.
/postkitty komutu
Bunları Hermes sohbetine yazın. Hemen yanıt verirler ve modeli kullanmazlar.
Komut
Ne yapar
/postkitty
postkitty'nin ne yaptığını, örnek istekleri ve boyutu ile başlıca sınırlarıyla birlikte her hedefi gösterir.
/postkittytiktok
Bir platformun hedeflerini ve sınırlarını gösterir. Herhangi bir platform adını yazabilirsiniz.
/postkittydoctor
Kurulumunuzu denetler ve her sorunun nasıl giderileceğini tek satırla söyler.
/postkittycheck<file>[target]
Bir dosyayı bir hedefe göre denetler ve sonucu yazdırır. Hedef vermezseniz hangisini istediğinizi sorar.
Aynı motor, betikler ve cron işleri için terminalden de çalışır:
Komut
Ne yapar
hermespostkittydoctor
Kurulum denetimini çalıştırır.
hermespostkittyplatforms[name]
Tüm hedefleri ve sınırlarını ya da tek bir platformunkileri gösterir.
hermespostkittycheckFILE[--targetID]
Bir dosyayı bir hedefe göre denetler. Dosya geçemezse çıkış kodu 1 olur.
hermespostkittymake[FILES][options]
Tek bir gönderinin bütün dosyalarını üretir, denetler ve durum tablosunu yazdırır. Metni verildiği gibi sayar ve böler, yeniden yazmaz. Seçenekler: --text, --text-file, --platforms, --layout, --focus, --captions, --out. Çıkış kodu yalnızca her dosya hazır olduğunda 0 olur.
Ayarlar
Üç ayar vardır ve hepsi isteğe bağlıdır. Hermes'te eklentinin ayarlarından değiştirebilirsiniz.
Ayar
Açıklama
Varsayılan
output_dirÇıktı klasörü
İş klasörlerinin yazıldığı yer.
Oturumunuzun çalıştığı klasördeki ./postkitty
default_platformsVarsayılan platformlar
Platform adı vermediğinizde postkitty'nin dosya ürettiği platformlar.
Yerleşim, geniş bir görüntünün platformun istediği biçime nasıl getirileceğini belirler. postkitty her hedef için bir yerleşim seçer. Dilediğiniz zaman başkasını isteyebilirsiniz.
crop
kırp, kişiyi izle
Kareyi yeni biçime göre keser ve konuyu karede tutar. Videoda kare, hareket eden kişiyi izler.
Odak, karenin kimin ya da neyin çevresinde kurulacağını söyler. Sade bir dille: “soldaki kadını ortaya al”. Kendi hâline bırakıldığında postkitty kimseyi kesmez. Sizin verdiğiniz odak, biri kare dışında kalsa bile korunur ve sonuç kimin dışarıda kaldığını söyler.
Değer
Açıklama
auto
postkitty bulduğu yüzlere göre karar verir. Varsayılan değer budur.
person:N
Soldan sayılan tek bir kişi: person:1 en soldaki kişidir.
left
Görüntünün sol bölümü.
center
Görüntünün ortası.
right
Görüntünün sağ bölümü.
x:0.0-1.0
Genişlik boyunca bir nokta: x:0.0 sol kenar, x:1.0 sağ kenardır.
X: postkitty, X'in yayımladığı twitter-text kurallarının bir uyarlamasını kullanır. Bir bağlantı 23 karakter sayılır. README.md gibi bir dosya adı da bağlantı sayılır.
Threads bir emojiyi UTF-8 bayt sayısı kadar sayar.
Bluesky'ın 3.000 baytlık sınırı bir flooddaki her gönderi için ayrı ayrı geçerlidir.
Hedef, bir platforma yönelik tek bir dosya türüdür. Bir platformu açtığınızda postkitty'nin onun için ne ürettiğini ve denetlediği her sınırı görürsünüz.
Web sitesi aynı motoru bir HTTP API'nin arkasında çalıştırır. Bu API'yi siz de çağırabilirsiniz. Dil modeli içermez: metni sayar, denetler ve böler, dosyaları üretir ve denetler. Metninizi yeniden yazmaz. Anahtar gerekmez.
https://postkitty.mertkayacs.com/api
Yöntem
Uç nokta
Ne yapar
GET
/v1/health
Servisin çalışıp çalışmadığını ve sürümünü bildirir.
GET
/v1/limits
Servisin kendi sınırlarını sayı olarak verir: iş başına dosya sayısı, dosya boyutları, video süresi, metin uzunluğu ve saatlik istek sayısı.
GET
/v1/platforms
Her hedefi boyutu ve sınırlarıyla listeler.
POST
/v1/text
Bir metni her platform için sayar ve sınırı aştığı yerde flooda böler.
POST
/v1/check
Yüklenen bir dosyayı bir hedefe göre denetler.
POST
/v1/jobs
Yüklenen fotoğraflardan ya da tek bir videodan bir iş başlatır. İş kimliğiyle hemen yanıt verir.
GET
/v1/jobs/{id}
Bir işin durumunu verir: queued, running, done ya da failed. Hedefleri ve dosyaları da yanıtta yer alır.
GET
/v1/jobs/{id}/files/{path}
Hazır dosyalardan birini verir.
GET
/v1/jobs/{id}/download
Tüm hazır dosyaları tek bir zip olarak verir.
DELETE
/v1/jobs/{id}
İşi ve dosyalarını hemen siler.
Metni sayma ve bölme
text alanını içeren bir JSON gönderin. platforms isteğe bağlıdır, verilmezse sekiz platformun hepsi kullanılır. Flood yerine taşan kısmı almak için split_threads değerini false yapın.
Yanıtta her platform için bir kayıt bulunur: count, limit, ok, taşan kısım, akışta görünür kalan bölüm ve flood parçaları.
Dosya denetleme
Dosyayı multipart/form-data olarak, bir target değeriyle birlikte gönderin. Bu değer örneğin tiktok ya da instagram_feed olabilir. Yanıt, dosyanın geçip geçmediğini söyler ve geçemediği denetimleri listeler.
import requests
with open("clip.mp4", "rb") as clip:
reply = requests.post(
"https://postkitty.mertkayacs.com/api/v1/check",
files={"file": clip},
data={"target": "tiktok"},
timeout=120,
)
reply.raise_for_status()
print(reply.json())
const form = new FormData()
form.append("file", fileInput.files[0])
form.append("target", "tiktok")
const reply = await fetch("https://postkitty.mertkayacs.com/api/v1/check", { method: "POST", body: form })
if (!reply.ok) throw new Error((await reply.json()).error.message)
console.log(await reply.json())
Dosya üretme
Bir fotoğrafı ya da bir videoyu files alanıyla yükleyin. Bir işin kaç dosya aldığını GET /v1/limits söyler. text, platforms, layout ve focus isteğe bağlıdır. Yalnızca metin içeren bir iş de geçerlidir. Çağrı, iş kimliği ve bağlantılarıyla hemen döner. status değeri done ya da failed olana kadar işi iki saniyede bir sorgulayın. Sonra dosyaları tek tek ya da zip olarak indirin. Zip, inceleme panosunu da içerir.
# 1. Start a job. The reply carries its id.
curl -s https://postkitty.mertkayacs.com/api/v1/jobs \
-F "[email protected]" \
-F "text=Meet the team behind the launch." \
-F "platforms=instagram,bluesky"
# 2. Ask every two seconds until status is done or failed.
curl -s https://postkitty.mertkayacs.com/api/v1/jobs/JOB_ID
# 3. Download the finished files as one zip.
curl -s -o postkitty.zip https://postkitty.mertkayacs.com/api/v1/jobs/JOB_ID/download
# 4. Delete the job now instead of waiting.
curl -s -X DELETE https://postkitty.mertkayacs.com/api/v1/jobs/JOB_ID
import time
import requests
API = "https://postkitty.mertkayacs.com/api"
with open("team.jpg", "rb") as photo:
reply = requests.post(
f"{API}/v1/jobs",
files={"files": photo},
data={"text": "Meet the team behind the launch.", "platforms": "instagram,bluesky"},
timeout=120,
)
reply.raise_for_status()
job = reply.json()
while job["status"] in ("queued", "running"):
time.sleep(2)
job = requests.get(API + job["links"]["status"], timeout=30).json()
if job["status"] == "done":
archive = requests.get(API + job["links"]["download"], timeout=120)
with open("postkitty.zip", "wb") as out:
out.write(archive.content)
else:
print(job["error"]["message"], job["error"]["hint"])
requests.delete(API + job["links"]["status"], timeout=30)
const API = "https://postkitty.mertkayacs.com/api"
const form = new FormData()
form.append("files", fileInput.files[0])
form.append("text", "Meet the team behind the launch.")
form.append("platforms", "instagram,bluesky")
let job = await (await fetch(API + "/v1/jobs", { method: "POST", body: form })).json()
if (job.error) throw new Error(job.error.message)
while (job.status === "queued" || job.status === "running") {
await new Promise((resolve) => setTimeout(resolve, 2000))
job = await (await fetch(API + job.links.status)).json()
}
if (job.status === "done") {
for (const file of job.files) console.log(file.path, API + file.url)
console.log("Everything as one zip:", API + job.links.download)
} else {
console.error(job.error.message, job.error.hint)
}
Hatalar
Her hatanın gövdesi aynıdır. Mesaj tek bir sade cümledir, ipucu da bundan sonra ne yapacağınızı söyler. İkisi de İngilizcedir. Çevirecekseniz hataları code değerine göre ayırt edin.
İki kod beklemenizi ister: rate_limited (HTTP 429) ve queue_full (HTTP 503). İkisi de kaç saniye bekleyeceğinizi bildiren bir Retry-After başlığı gönderir.
Sınırlar ve silme
Yalnızca yükleme kabul edilir. API hiçbir URL'den içerik çekmez.
Fotoğraflar JPEG, PNG, WebP ya da GIF, video ise MP4, MOV, MKV ya da WebM olabilir. Hareketli görseller kabul edilmez. GET /v1/limits her sınırı sayı olarak döndürür: iş başına dosya sayısı, dosya boyutları, video süresi ve metin uzunluğu.
Çağrılar ziyaretçi başına saatlik olarak sınırlanır.
Yüklediğiniz dosyalar iş bitince silinir. Hazır dosyalar 60 dakika sonra, expires_at alanındaki zamanda silinir. DELETE isteği bunları hemen siler.
Kodu okumak ya da değiştirmek isteyen geliştiriciler için.
plugin.yaml manifest dosyasıdır: ad, sürüm, araçlar, bağımlılıklar ve ayarlar.
__init__.py araçları, skill dosyasını ve /postkitty komutunu Hermes'e kaydeder.
schemas.py modelin gördüklerini tutar: araç adları, açıklamalar ve parametreler. tools.py argümanları doğrulayıp motoru çağıran ince işleyicileri tutar.
engine/, Hermes'ten hiçbir şey içe aktarmayan düz bir Python kütüphanesidir. Genel arayüzü engine/pipeline.py dosyasıdır: scan, write, make, redo ve check. Her biri bir dict alır ve bir dict döndürür. HTTP API de aynı fonksiyonları çağırır.
Motorun içinde detect/ yüzleri bulur, photo/ ve video/ planlar ve üretir, text/ sayar ve böler, verify/ denetler ve onarır, board/ inceleme panosunu oluşturur.
data/platforms.yaml her boyutu ve sınırı kaynağıyla birlikte tutar. Bir sınırı orada değiştirdiğinizde denetimler de ona uyar.
skills/postkitty/SKILL.md modele araçları nasıl kullanacağını anlatır.
Önerileri ve metni model yazar. Geri kalan her şey deterministik koddur: algılama, kadraj, üretim, sayım, denetim ve onarım. Bir dosyanın geçip geçmediğine yalnızca araçlar karar verir.
Sık görülen sorunlar ve her birinin çözümü. Önce /postkitty doctor komutunu çalıştırın. Kurulum sorunlarının çoğunu bulur ve nasıl giderileceğini söyler.
Kurulumdan sonra Hermes postkitty'yi tanımıyor
Yeni bir sohbet açın. Hermes bir eklentinin araçlarını sohbet başlarken yükler. Bu yüzden kurulumu yaptığınız sohbette araçlar yoktur. Araçlar hâlâ görünmüyorsa eklenti etkin değildir: hermes plugins enable postkitty komutunu çalıştırın.
Video hedefleri atlanıyor
ffmpeg ya da ffprobe eksik. ffmpeg'i kurun, ffmpeg ve ffprobe komutlarının terminalinizde çalıştığından emin olun, sonra yeniden isteyin. macOS'te Hermes'le gelen ffmpeg'de ffprobe bulunmaz; brew install ffmpeg komutu onu ekler. Metin ve fotoğraflar bunlar olmadan da çalışır.
Fotoğraf ya da video, yüz algılayıcının kullanılamadığını bildiriyor
Yüz modeli ilk kullanımda bir kez indirilir ve bunun için ağ bağlantısı gerekir. İnternete bağlanın ve yeniden isteyin. Metin, model olmadan da çalışır.
ffmpeg'de libass olmadığı için altyazı reddediliyor
ffmpeg derlemeniz altyazı çizemiyor. libass içeren bir derleme kurun (macOS'te Homebrew ile bu ffmpeg-full paketidir) ya da altyazıyı isteğinizden çıkarın. /postkitty doctor bunu Captions satırında gösterir.
Makinede yazı tipi olmadığı için altyazı reddediliyor
ffmpeg altyazıyı makinede kurulu yazı tipleriyle çizer; masaüstü ortamı olmayan bir sunucuda ya da konteynerde hiç yazı tipi olmayabilir. Bir tane kurun (Ubuntu'da örneğin sudo apt install fonts-dejavu-core) ve yeniden isteyin. Mesaj belirli karakterleri sayıyorsa kurulu yazı tiplerinin hiçbirinde o karakterler yoktur: o yazı sistemi için bir yazı tipi kurun ya da karakterleri altyazı dosyasından çıkarın. Hiçbir yazı tipinde bulunmayan bir emoji altyazıya alınmaz ve sonuçta belirtilir. /postkitty doctor eksik yazı tipini Captions satırında gösterir.
Bir hedef failed gösteriyor
Satır, dosyanın hangi sınıra uymadığını ve onarımın bunu gideremediğini söyler. O hedef için başka bir yerleşim isteyin. pad görüntünün tamamını korur ve çoğu duruma uyar. Diğer hedeflerin denetimden geçen dosyaları yerinde kalır.
Karede yanlış kişi var
Kimi kastettiğinizi konumuyla söyleyin: “soldaki kişi”, “soldan ikinci kişi”. Bkz. Odak.
Bir metin sınırı aşıyor
Hermes metni kısaltır ve yeniden sayar. X, Threads ve Bluesky'de bunun yerine flood isteyebilirsiniz.
Hareketli bir GIF, WebP ya da PNG kabul edilmiyor
postkitty durağan fotoğraf ve video üretir. Tek bir kareyi JPEG ya da PNG olarak verin ya da klibi video dosyası olarak verin.
Bir dosyayı değiştirdiniz ama sonuçta hâlâ eskisi görünüyor
Değişen dosyayla yeni bir çalıştırma isteyin. postkitty dosyayı yeniden tarar ve yeni bir iş başlatır.