========== YENİ KOMUT | 17.09.2026 12:17:26 ==========
/home/hermes/.hermes/skills/media/shorts-core/SKILL.md
182-
183-Mevcut workspace ve asset yolları biliniyorsa `/home/hermes` genelinde tekrar `search_files` taraması yapma. Bilinen proje dizinini ve mevcut manifest/cache bilgisini kullan.
184-
185-Production sırasında TTS sesi yeniden seçme veya keşfetme; varsayılan `tr-TR-Chirp3-HD-Algieba` / `0.90` baseline'ını koru.
186-
187-### ASSET-001 — Pre-casting visual inspection diagnostic
188-
189-Bu tanı koşusunda asset/casting kararını yalnız metadata, dosya adı veya arama açıklamasından verme.
190:Gerekli olduğunda aday gerçek footage/source/range/assetleri `vision_analyze` ile gerçekten gör.
191-
192-Değerlendir:
193-- gerçek hareket ve görüntü kalitesi;
194-- shot'ın anlatısal işlevini gerçekten kanıtlayıp kanıtlamadığı;
195-- aynı video içinde adayların görsel olarak birbirini gereksiz tekrar edip etmediği;
196-- kadraj, viewpoint, scale, environment ve motion bakımından yeterli progression olup olmadığı.
197-
198-Güzel fakat anlatısal işlevi karşılamayan adayı reddet ve gerekirse yeni aday ara.
--
217-
218-- seçilmiş Türkçe TTS + padding;
219-- VTT tabanlı en fazla iki satır ASS altyazı;
220-- full final encode öncesi gerçek glyph bbox guardrail;
221-- seçilmiş shot'lardan tek 1080×1920 visual master;
222-- hazır master + ses için FFmpeg direct mux ve `-c:v copy`;
223-- video stream hash kontrolü;
224-- probe, decode, black/freeze ve loudness QA;
225:- tek final contact sheet;
226-- TTS, bbox, visual master, final mux ve deterministic QA cache.
227-
228-Değişmeyen manifest ve girdilerde cache'i yeniden kullan. Aynı deterministic adımı doğrulama amacıyla tekrar üretme.
229-
230-Helper için geçici tek-seferlik bbox scripti, yeni Python ortamı veya yeniden keşfedilmiş FFmpeg/Montaj yolları oluşturma. Helper teknik olarak başarısız olursa yalnız hatalı bileşeni teşhis et.
231-
232-### Faz 3 — Tek görsel QA geçidi
233-
234:Deterministic pipeline PASS verdikten sonra yalnız final contact sheet'i `vision_analyze` ile değerlendir.
235-
236-Kontrol et:
237-
238-- gerçek 9:16 tam ekran;
239-- siyah/boş bant veya yanlış crop;
240-- en fazla iki satır altyazı ve safe area;
241-- Türkçe yazım/karakterler;
242-- gerçek footage önceliği ve shot çeşitliliği;
/home/hermes/.hermes/skills/media/shorts-core/scripts/shorts_fast_pipeline.py
362- run([
363- FFMPEG, "-y", "-v", "error",
364- "-i", str(final),
365- "-vf",
366- f"fps={fps:.6f}:start_time=0.5:round=near,"
367- "scale=360:640:flags=lanczos,"
368- "tile=3x2:margin=0:padding=0",
369- "-frames:v", "1",
370: str(work / "final_contact_sheet.jpg")
371- ])
372-
373-def main():
374- ap = argparse.ArgumentParser()
375- ap.add_argument("manifest")
376- args = ap.parse_args()
377-
378- manifest_path = Path(args.manifest).resolve()
--
521- )
522- else:
523- final_md5 = final_info["video_md5"]
524-
525- qa_sig = stamp([final], "deterministic-final-qa-v1")
526- qa_meta = work / ".qa.json"
527- cached_qa = False
528-
529: if qa_meta.exists() and (work / "final_contact_sheet.jpg").exists():
530- try:
531- cached_qa = json.loads(
532- qa_meta.read_text(encoding="utf-8")
533- ).get("sig") == qa_sig
534- except Exception:
535- pass
536-
537- if not cached_qa:
--
545- "pass": True,
546- "version": VERSION,
547- "cached_tts": cached_tts,
548- "cached_visual": cached_visual,
549- "cached_final": cached_final,
550- "cached_qa": cached_qa,
551- "duration": probe_duration(final),
552- "final": str(final),
553: "contact_sheet": str(work / "final_contact_sheet.jpg"),
554- "video_md5": final_md5,
555- }
556- (work / "pipeline_result.json").write_text(
557- json.dumps(result, ensure_ascii=False, indent=2),
558- encoding="utf-8"
559- )
560- print(json.dumps(result, ensure_ascii=False))
561-
root@213-238-170-219:~#