# 2026-09-16 (WIB)

## Cron `studiosoft-healthcare-carousel-harian` (f7e00ade8034) — hc37

Run: 16 Sep 2026 02:00 WIB (15 Sep 19:00 UTC). Aturan baru 15 Sep dipatuhi: **HANYA Threads SS
yang dapat carousel/image**; FB SS tanpa gambar; LinkedIn SS text-only; IG tidak disentuh.

- **Stok artikel healthcare BARU: HABIS.** WP REST studiosoft.id (via r.jina.ai) 40 post teratas:
  terbaru tetap 13 Sep 2026 — artikel healthcare di batch itu (`jasa-digital-marketing-klinik`)
  sudah dipakai hc36. 0 artikel healthcare baru → lanjut ke **RE-AIR hc20** (belum pernah tayang).
- **hc20 (`Pentingnya Konten Edukasi Kesehatan untuk Kepercayaan Pasien`) belum pernah tayang:**
  2× error `The media could not be fetched from this URI` (7 Sep caption >500 char, 12 Sep media)
  pada file `ss_hc20_edukasi_*` — padahal saat audit 200 di kedua ingress & JPEG valid.
  **Mitigasi run ini: slide dibuat ULANG (5 slide, 1080×1350, tema navy #0D4761 + sky #38BDF8,
  isi dari artikel) dengan NAMA FILE BARU `ss_hc37_edukasi_*`** → jalur fetch Repliz segar.
  URL diverifikasi 200 di KEDUA ingress (103.84.155.153 & .217) + PIL, 101–137 KB.
- **Hasil (verified fetch ulang dari API):**
  - **Threads SS** album `6aa9974d88a23118dad5a233` — **16 Sep 2026 09:00 WIB** (`2026-09-16T02:00Z`),
    5 slide urut 01–05, caption **437 char**, 0 mention, CTA di ekor caption, `status=pending`,
    + 2 replies text `02:01Z` (link artikel) & `02:02Z` (hashtag).
  - **LinkedIn SS** text `6aa9974d88a23118dad5a25d` — **09 Oct 2026 17:00 WIB** (`2026-10-09T10:00Z`),
    type=text, `medias=0`, `replies=0`, 1.440 char, link artikel + ajakan diskusi.
    (Slot LI kosong pertama = 9 Okt 17:00 WIB; antrean `ss_li_artikel_story` penuh 7 slot/hari
    s/d 9 Okt 14:00 WIB.)
  - **Facebook SS: TIDAK diberi konten run ini** (0 pending). Keputusan Bos ttg isi FB
    — (a) dibiarkan kosong atau (b) text-only dari artikel — masih menunggu; opsi ditawarkan lagi.
  - **IG SS** tidak disentuh (15 pending SSIGSEP, pipeline lain).
- State `studiosoft_healthcare_state.json` index → **33**; log ditulis ke `studiosoft_healthcare_log.txt`.
- Script: `studiosoft_hc37_carousel_gen.py` (slide), `studiosoft_healthcare_cron_run_hc37.py`
  (slot+create+log), `verify_hc37.py` (verifikasi independen).

### Pitfall yang ditemukan
- **`next_free_li()` di `studiosoft_healthcare_cron_run_hc36.py` memilih slot yang SUDAH LEWAT**
  (basis tanggalnya hardcode 14 Sep) → di hc37 diperbaiki: kandidat slot harus > now+15 menit,
  dan perbandingan waktu harus naive-vs-naive (datetime `fromisoformat` naif).
- **Poppins tidak punya glyph U+2192 (→)** — karakter tampil sebagai kotak tofu di slide.
  Pakai `•` (U+2022) untuk bullet. Cek cepat: render → `vision_analyze`.
- **Hook diskusi harus divalidasi di EKOR caption** (`CTA_RE.search(txt[-200:])`), bukan di seluruh
  badan caption: badan caption memuat kata "di-share" sehingga caption yang hook-nya cuma pertanyaan
  lolos validasi palsu.

## Cron `threads-all-harian` (16e1f3f8170d) — run 16 Sep 2026 04:00 WIB (15 Sep 21:00 UTC)

- **Run 15 Sep GAGAL total** (keterangan di output job: `RuntimeError: Non-streaming API call timed
  out after 600s`) → TSLAW/TSC/DAS tidak tayang 15 Sep (verifikasi: 0 jadwal Threads ketiga akun itu
  pada `2026-09-15T10/13/16Z`). Hari ini dijadwalkan lagi sesuai aturan Bos (mulai hari berikutnya,
  1 post/hari/akun).
- **Anti-redundant:** `scripts/scan_threads_used_links.py` dijalankan ulang → 3.583 jadwal,
  URL terpakai per akun: SS 174 · uky 142 · tslaw 35 · tsc 19 · das 55 (`/tmp/threads_used_all.json`).
  Semua link yang dipakai hari ini di-cek FREE terhadap set itu + HTTP 200.
- **Generator:** `gen_threads_20260916.py` (validasi keras: ≤500 char, ada link & CTA, 0 mention,
  0 elipsis, tepat 1 link) → `threads_content_today.json`.
- **Hasil (verified fetch ulang dari API, `replies=0`, 0 mention, link ada):**
  - **Tslaw** `6aa9b2fc81234a292dbcc9e1` — 16 Sep 17:00 WIB (`2026-09-16T10:00Z`), 482 char,
    link `https://www.tslaw.id/cara-daftar-hak-cipta-2026/` (HTTP 200).
  - **TSC** `6aa9b2fc81234a292dbcc9fb` — 16 Sep 20:00 WIB (`2026-09-16T13:00Z`), 443 char,
    link `https://www.theskincodeclinic.com/kapan-harus-ke-dokter-kulit/` (200).
  - **DAS** `6aa9b2fc88a23118dad9318b` — 16 Sep 23:00 WIB (`2026-09-16T16:00Z`), 458 char,
    link `https://dasindonesia.com/bengkel-buka-hari-minggu-surabaya/` (200).
  - **StudioSoft & @ukyhandoko `no_free_slot`** (pola tetap): kotak kosong pertama = **SS 30 Sep
    08:00 WIB**, **uky 3 Okt 05:00 WIB**. Sesuai aturan Bos ("jangan paksa"/jangan geser ke hari
    lain) → draf backlog dipakai apa adanya, TIDAK dibuat jadwal baru.
- **Backlog `threads_backlog_ss_uky.json` diverifikasi ulang & tetap valid:** `retainer-digital-marketing`
  (SS, 477 char) & `konsultan-ai-surabaya` (uky, 479 char) — keduanya FREE di set URL terpakai dan
  **link masih 200** (via `r.jina.ai`, judul halaman cocok 16 Sep) → tidak perlu ganti.
- Log diperbarui: `log_threads_harian.json` (`last_date=2026-09-16`, `threads_used_links['2026-09-16']`).

## Redesign gambar Threads @ukyhandoko (perintah Bos 16 Sep 2026) — SELESAI

- Bos kirim link post `threads.com/@ukyhandoko/post/DdVDi2Ok_fQ` + "designnya terlalu luas
  pastikan text di tengah dan jangan terlalu banyak space kosong dibawahnya".
  Sumber gambar = `uky_threads_images/11_white_meaning.png` (1080×1920, blok teks di y=280 →
  ~55% kanvas kosong di bawah).
- Revisi berurutan (preview dikirim tiap langkah): square 1080×1080 + text naik 1 tingkat →
  garis separator dihapus → ukuran text dikembalikan semula → **"ok pas segini, save ukuran ini"**
  → **"rata kiri aja"**.
- **SPESIFIKASI FINAL: square 1080×1080, judul Bold 85 / body Regular 36, blok teks di tengah
  vertikal, rata KIRI, TANPA garis separator.** Script baku: `gen_uky_center.py`
  (default = spec ini; `left preview square` / `left batch square`).
- **71 file dirender ulang** (20 `uky_threads_images/` + 51 `uky3_output/`), backup `.legacy-20260916`.
- **25 jadwal Threads uky yang belum tayang di-swap media-nya** ke desain baru via
  `uky_swap_square.py --apply` (media baru nama `uky_sq_*.jpg`, 200 di kedua ingress) →
  verifikasi fetch ulang dari API **25/25 ✅** (18–22 Sep 08:00 WIB + 29 Sep–1 Okt + 3–6 Okt).
  File/URL lama tidak dihapus; post yang sudah tayang tidak bisa diubah.
- Spec disimpan di skill `atun-social-automation` → `references/desain-standar-uky.md`
  (+ bullet di SKILL.md); catatan detail: `catatan/2026-09-16-standar-desain-uky.md`.

## Kartu StudioSoft (Threads + FB) — 16 Sep 2026 — SELESAI

- Perintah Bos: kartu "kaya gini" tapi header diganti `www.studiosoft.id` (footer tetap
  `@ukyhandoko • Founder StudioSoft`), teks pakai "Kami/kita" (bukan saya), tiap postingan
  **wajib bawa link artikel studiosoft.id** agar artikelnya tershare, dibuat **semenarik mungkin**,
  dan **tidak usah sering-sering: cukup jam prime time sesuai kebutuhan**.
- Bank teks baru `ss_cards_content.py`: 20 kartu (judul + body gaya perusahaan + caption ≤500 char
  dengan placeholder `{link}` + link artikel unik per kartu).
- Runner `ss_cards_run.py` (dry-run → `--apply`): validasi link FREE (set `studiosoft` di
  `/tmp/threads_used_all.json`) + HTTP 200 → render kartu square (header www.studiosoft.id) →
  upload `<name>_ss.jpg` + verifikasi 200 di KEDUA ingress → create jadwal → verifikasi ulang
  per jadwal via `GET /public/schedule/<id>`.
- **Jadwal (2×/minggu per kanal, prime time saja):** Selasa & Jumat — Threads StudioSoft
  **08:00 WIB (image)**, FB StudioSoft **19:30 WIB (TEXT-only, `replies=[]`)**; 20 kartu per kanal
  2 Okt → 8 Des 2026. **Verifikasi: 40/40 ✅**, 0 slot bentrok. ID di `ss_cards_log.json`.
- Catatan: FB SS tetap tanpa gambar (aturan 15 Sep) — kalau Bos mau FB SS sekalian pakai gambar,
  tinggal bilang. 51 quote card (`ss_quote_cards/`) belum dijadwalkan, menunggu keputusan Bos.

