
## 01:00 WIB — Job gambar harian (cron `daily-image-posting-all` `563618b0f31b`) — item index 68 `ss_carousel_seo` → Threads StudioSoft

State awal `image_posting_state.json` = **68/88** → item `ss_carousel_seo`
(brand `studiosoft`, source `studiosoft_carousel`). Per aturan job + `references/image-posting-daily.md`:
brand `studiosoft` = **Threads StudioSoft saja** (`6a335b9ec5ff4ce3a3225c2a`) — FB SS (stop gambar 15 Sep),
IG, dan LinkedIn SS (text-only) **dilewati total**.

### Temuan 1 — aset lama GAGAL standar desain 16 Sep 2026
Semua `studiosoft_carousel/*.png` (19 Jul–1 Agu 2026) diperiksa visual (`vision_analyze`):
- garis separator putus-putus ("-----") di bawah judul ❌ (standar: TANPA separator),
- bullet glyph kotak rusak (☒) + footer "Swipe ☒" rusak ❌,
- teks blok nempel ke atas → **void besar di bawah** ❌,
- teks #1E40AF / navy lama ❌ (aturan Bos: `#0D4761` & `#1E40AF` DILARANG).

Aturan Bos 16 Sep: *"Gambar lama/arsip yang belum sesuai standar ini JANGAN diposting — render ulang dulu."*
→ **deck di-render ulang** (`ss_carousel_seo_render.py` → `studiosoft_carousel_fixed_seo/01..05.png`,
1080×1350, bg `#122B63`, rata kiri, satu blok di tengah vertikal, bullet titik, header `STUDIOSOFT` + `n/5`,
footer `www.studiosoft.id`). Semua slide `air=1.00 shrink=1.00` (tidak overflow). Isi teks dipertahankan
(slide 2 "APA ITU SEO", 3 "MENGAPA PENTING?", 4 "3 PILAR SEO", 5 "SIAP OPTIMASI SEO?"); "Anda" → "kamu"
(nada sosmed 5 Okt) dan em dash dibuang. **Slide 1 (cover) hilang dari arsip** → dibuat cover baru yang
setia tema ("KENAPA BISNIS KAMU PERLU SEO?").

### Temuan 2 — slot kartu SS = Selasa & Jumat 08:00 WIB
`ss_cards_run.py` mengunci kartu Threads SS di **Selasa & Jumat 08:00 WIB** (PRIME_DAYS), dan job teks
harian hanya mengisi 08:00 di hari non-Sel/Jum. Seri `ss_threads_images` (item 01–20, berkas `*_ss2.jpg`)
berakhir **8 Des 2026 08:00 WIB**, jadi kartu berikutnya di cadence yang sama = **Jumat 11 Des 2026 08:00 WIB**
(`2026-12-11T01:00:00.000Z`). Diverifikasi kosong di jendela 07:30–08:30 WIB (probe API read-only).

### Hasil (terverifikasi baca-balik 2×, list segar dari API)
| item | slot | Repliz id | media | caption | replies |
|---|---|---|---|---|---|
| `ss_carousel_seo` (threads_ss) | **11 Des 2026 08:00 WIB** | `6ac7db88297a876254235d7a` | `openclaw-img/ss_carousel_seo_01_cover.jpg` (130 KB) | 456 char | 2 nested |

- Caption nada **santai** (akun brand: "kami"/tanpa subjek, pembaca "kamu"), berisi link artikel
  `https://studiosoft.id/jasa-seo-surabaya-paket-harga/` (**HTTP 200**, belum pernah dipakai akun SS),
  pancingan diskusi di ekor, **0 hashtag / 0 mention internal / 0 CJK**. 2 nested reply 250 + 222 char.
- Media gate: **HTTP 200 di KEDUA ingress** (103.84.155.153 & 103.84.155.217) sebelum create.
- topic `StudioSoft card` (15 char, patuh seri kartu SS; batas Threads 50). `type=image`, `status=pending`,
  satu-satunya jadwal SS di 11 Des 2026 (tidak ada bentrok).
- **State → 69/88**; log → **66 entri** (`image_posting_log.json`, entri ditambah blok `design_note`).
- Skrip: `image_post_20261009_ss68.py` · probe slot `_probe_ss_slot_seo.py` · verifikasi `_verif_ss68.py`.
- WP: `wp_image_map.json` sudah memuat `studiosoft_carousel/01_cover.png` (id 6406) — **tidak upload WP**
  (media server `openclaw-img` yang dipakai, bukan WP).

### ⚠️ Untuk run berikutnya — item 69 `ss_artikel_klinik`
Aset `studiosoft_artikel_images/slide1_biru.png` bg = **#1E40AF (navy lama, DILARANG)** dan
`slide2_putih.png` putih tanpa standar baru → **wajib di-render ulang** dulu (engine `ss_carousel_lib.py`),
jangan diposting apa adanya. Slot berikutnya di cadence kartu SS = **Selasa 15 Des 2026 08:00 WIB**.


## hc60 Healthcare StudioSoft (2026-10-09 02:04 WIB)
- Threads carousel (RE-AIR `9-contoh-konten-digital-marketing-rumah-sakit...`): 10 Oct 2026 09:00 WIB | album `6ac7e96a411e0d4964e7d2f5` + 2 replies (`6ac7e96b411e0d4964e7d306`, `6ac7e96b297a8762542581df`)
- LinkedIn TEXT `6ac7e96b411e0d4964e7d328` (12 Oct 2026 23:00 WIB) memakai artikel `https://studiosoft.id/tools-analisis-kompetitor-media-sosial/`
- FB TEXT `6ac7e96b411e0d4964e7d33d` (12 Oct 2026 19:30 WIB) memakai artikel `https://studiosoft.id/tips-seo-digital-marketing-surabaya-optimasi-local-untuk-klinik-dan-bengkel-lokal/`
- Artikel Threads: https://studiosoft.id/9-contoh-konten-digital-marketing-rumah-sakit-yang-edukatif-dan-etis/

## 02:30 WIB — Carousel feed IG StudioSoft 08:30 WIB (cron `ss-ig-carousel-feed` `cde9a71b9203`) — SLOT SUDAH TERISI, tidak create baru

Kandidat fresh dari `ss_ig_car_pick.py 15` = 25 artikel (marketing-manufaktur, seo-properti, branding-agency, dst).
**Tidak dipakai** — slot 9 Okt 08:30 WIB sudah terisi album dari kunci antrean 3 Okt (`kunci_car10_okt.py`,
6–31 Okt), jadi sesuai aturan maks 1 carousel/hari/akun → SKIP create.

- Jadwal: `6ac1024f07008e0e919e6b88` · `type=album` · `status=pending` · `scheduleAt 2026-10-09T01:30:00.000Z` (08:30 WIB) · akun Kreasi Studiosoft
- Judul/topik: "Carousel IG SS — ai-dan-pekerjaan-digital-marketer-apa-yang-berubah" · topic `Seri Industri StudioSoft: SEO & Digital Marketing`
- 10 media `openclaw-img/ss_car10_aimarketer_01..10.jpg` (1080×1350) — **HTTP 200 di KEDUA ingress** (103.84.155.153 & 103.84.155.217)
- Story mirror `6ac102521733078385cc8a4d` 08:40 WIB, media `ss_story_canvas_ss_car10_aimarketer_01.jpg` 1080×1920, 200 di dua ingress, caption kosong, replies 0
- Caption 602 char, link `https://studiosoft.id/ai-dan-pekerjaan-digital-marketer-apa-yang-berubah/` (**HTTP 200**) · 5 hashtag huruf kecil · 0 mention · 0 CJK · CTA "Tulis di komentar" ✅
- Warna: 9 Okt = tanggal ganjil → slide 1 NAVY #122B63, genap PUTIH bolak-balik (probe pixel (8,8) 10/10 sesuai) — cocok `ritme_warna_ss.py --jam 8`; reel 11:00 (urutan 2) = `ss_reel_putih_08.mp4` → tetap kebalikan ✅
- QC visual `vision_analyze` slide 1/5/10: teks utuh, tidak overflow, tidak ada glyph rusak, 0 CJK
- ⚠️ Temuan kecil: beberapa slide isi masih pakai sapaan "Anda" (slide 5 & 10) padahal nada sosmed akun brand = "kamu" → ditawarkan perbaikan ke Bos (belum dieksekusi, menyentuh media terjadwal = butuh GO)
- ⚠️ Temuan lain: slot reel **19:00 WIB (12:00Z) kosong sejak 7 Okt s/d 31 Okt** (23 hari) — cron `ss-ig-reel-roll` `cd5e2c6fd75f` keluar silent; dilaporkan ke Bos
- Script: `/tmp/verify_car10_okt9.py` (verifikasi media 2 ingress + caption)

## 07:08 WIB — Job artikel harian StudioSoft (cron `studiosoft-artikel-harian` `754ecdec3503`) — 1 artikel baru dijadwalkan

- `ss_jadwal_cek.py` awal: 12 artikel menunggu tayang (9 s.d. 20 Okt), hari kosong 21, 22, 23 Okt
  → persediaan perlu ditambah.
- Topik dari `ss_topik_bank.json`, entri pertama yang belum dipakai: "Audit SEO Teknis: 12 Pemeriksaan
  dan Urutannya", fokus `audit seo teknis`, pilar A uang.
- `ss_cek_topik.py` terhadap 354 artikel: skor tertinggi 0,09 (#2980 / #2972 / #2975 yang semuanya
  bergaya "audit SEO gratis untuk pemula") → aman. Sudut artikel baru berbeda: urutan 12 pemeriksaan
  teknis dan alasannya, bukan daftar alat gratis.
- Naskah 1.259 kata, 8 h2, 3 h3, 4 tautan internal (semua dicek HTTP 200 lebih dulu:
  `/audit-290-artikel-halaman-yatim/`, `/core-web-vitals-kecepatan-website-2026/`,
  `/jasa-maintenance-wordpress-surabaya/`, `/jasa-seo-surabaya-paket-harga/`), tombol WA
  `wa.me/6281935000624` + FAQPage. `cek_pola_ai.py`: 0 temuan (0 em dash, 0 kutip melengkung, 0 CJK,
  0 tanda seru).
- Draf #9319 → dijadwalkan `future` 2026-10-21T08:00:00 (date_gmt 01:00Z, selisih 7 jam pas).
  Meta Yoast tersimpan lewat REST dan dibaca balik: fokus `audit seo teknis`, judul 46 char,
  deskripsi 151 char.
- Berkas: `ss_artikel_audit_seo_teknis.py`, hasil `ss_artikel_audit_seo_hasil.json`.
- Sisa persediaan setelah run ini: 12 hari (s.d. 21 Okt); hari kosong 22 dan 23 Okt akan diisi run
  berikutnya.

## 11:10 WIB — Bos tanya rencana video TS Law + minta PDF rencana konten

- Pertanyaan awal Bos: *"Apa masih ada video lagi di repliz tslaw yang belum tayang"* → dicek lewat
  `scripts/tanya_video_tslaw_pending.py` (filter `type`/`medias`, `scheduleAt`; field penting Repliz =
  `type`, `medias`, `scheduleAt`, `status`). Hasil: **51 jadwal video belum tayang** = 1 reel FB
  (Pelakor 4K, 9 Okt 19:30) + 50 story (25 hari × IG+FB, 9 Okt s/d 2 Nov). Tidak ada reel/video feed lain.
- **PDF rencana konten TS Law** dibuat: `laporan/rencana_konten_tslaw_9okt-2nov2026.pdf` (4 hlm).
  Jalur teknis: **reportlab tidak ada di server** → pakai `/usr/bin/python3` (fpdf2 2.8.7) + DejaVu fonts;
  preview raster pakai `pypdfium2` (poppler/pdftoppm tidak ada). Skrip: `scripts/buat_pdf_rencana_tslaw.py`
  + `scripts/gen_spec_pdf_tslaw.py` dan `scripts/tslaw_upcoming_json.py` (snapshot jadwal ke `/tmp/tslaw_up.json`).
- Isi penting temuan: 85 jadwal menunggu (IG 36, FB 37, Threads 12; LinkedIn stop). Bank poster habis
  setelah 22 Okt, carousel habis setelah 2 Nov, video feed tinggal 1, teks Threads tinggal 1.
- Bos: *"ok pasang ini di hari senin untuk video feed"* → **belum dieksekusi**, menunggu kejelasan.
  Fakta yang sudah dicek: **semua video TSLaw di server sudah tayang** (tidak ada stok video baru);
  video TSLaw selalu datang dari Bos via MEGA (PMH 5 Okt, Pelakor 8 Okt); slot kosong Senin 12 Okt =
  FB 11:00 (jam langganan reel) dan IG 11:00. FB 19:30 Senin sudah keisi carousel.
- Sumber materi seri TSLaw ditemukan di cache profil lain (`profiles/suwarno/cache/documents/`):
  `Series_13_Episode_Konten_Hukum (1).docx` (13 episode "Jangan Salah Paham Soal Hukum") dan
  `Konten TSLAW.rtf` — asal `TSLAW_KONTEN_MASTER.json` (21 topik).

## 11:30 WIB — Video TS Law "Tanah Waris" dari Bos (MEGA) dipasang untuk Senin 12 Okt

- Bos kirim `https://mega.nz/file/iAVlzajY#...` → `_mega_dl/cek_20261009/1005(1).mp4`
  (HEVC 2160x3840, 38,2 dtk, 80,7 MB, md5 4f86dfc0… — beda dari video Pelakor 1007.mp4).
- Isi dibaca dari 19 frame (bukan tebakan): jual beli tanah waris tanpa persetujuan seluruh ahli waris →
  jual beli **dapat dibatalkan**, dasar **putusan MA No. 3236 K/PDT/1989**. Ditutup logo Tito Suprianto Law Firm.
- **Cek duplikat**: disisir 169 jadwal TSLaw (judul + deskripsi + nama media). Video ini **belum pernah
  dijadwalkan**. Yang bersinggungan topik hanya carousel "8 Anggapan soal Tanah dan Properti" (2 Nov) dan
  poster "Sah Tanpa Notaris" (tayang 28 Sep) — dua-duanya bukan video ini.
- Transcode: `openclaw-img/tslaw_video_tanah_waris_1009_4k_h264.mp4` — H.264 High 5.1, 2160x3840, 30fps,
  7,8 Mbps, **37,2 MB** (preset veryfast crf 20 maxrate 12M), HTTP **200 di 3 jalur funnel**.
- **Terpasang (baca-balik `pending`, semua 12 Okt WIB)**: Threads teks bahasan 09:00 `6ac86d8a411e0d496406f3d7`
  (486 char) · IG video 11:00 `6ac86d89297a8762543bd68a` · FB video 11:00 `6ac86d89297a8762543bd6a6`
  (caption 1.521 char, 0 mention, hashtag huruf kecil, 0 CJK). Video ke Threads tetap mustahil → bahas sebagai teks.
- Carousel `mitos10` (8 Anggapan Hukum) **digeser Senin 12 Okt → Rabu 14 Okt** supaya IG tidak punya dua post
  feed sehari (`6ac3539707008e0e9104842f` Threads + `6ac35397173307838558141e` IG 09:00, `6ac3539707008e0e91048445`
  FB 19:30; caption & 10 media utuh). Rabu 14 Okt sebelumnya cuma story → aman.
- ⚠️ **Pelajaran API (penting)**: `PUT /public/schedule/<id>` menolak payload parsial.
  - hanya `scheduleAt` → **500** "Cannot read properties of undefined (reading '0')"
  - hanya `medias` + `scheduleAt` → **400** "type must be a string / should not be empty"
  - yang lolos: payload **lengkap** (`accountId, title, description, topic, type, medias, replies, scheduleAt`),
    dan respons sukses **body kosong** (jangan `json.load` responsnya, baca balik lewat GET).
  Skrip: `geser_carousel_mitos10_ke_rabu.py`.
- Watchdog tayang: cron **`tslaw-video-tanah-waris-check` (`49672b31318e`)**, `0 5,13 12,13 10 *` UTC
  (12:00 & 20:00 WIB tgl 12–13 Okt), `--no-agent`, repeat 4, script `cek_tslaw_video_tanah_waris.py`/`.sh`
  di `profiles/atun/scripts/`. Uji: senyap saat aman ✅, `hermes cron run` → succeeded ✅.
  Catatan CLI: hapus job pakai `hermes cron remove <id>` (bukan `delete --yes`).

## 11:55 WIB — "Atur terbaik untuk SEO Google + aturan & views Meta" (perintah Bos)

### Sisi Meta (IG/FB/Threads) — sudah dieksekusi, baca-balik `pending`
- Caption diperbarui jadi **1.548 char**, hook 124 char pertama utuh dalam jendela pratinjau (IG memotong
  ~125 char) dan sudah memuat frasa kunci: "Tanah waris dijual tanpa persetujuan semua ahli waris? Jual
  belinya bisa dibatalkan walau sudah lewat notaris dan PPAT."
- Hashtag dipangkas **6 -> 5** (anjuran Meta 3-5): #tanahwaris #jualbelitanah #hukumpertanahan
  #hukumperdata #titosupriantolawfirm. Tetap 0 mention, 0 CJK, tanpa tautan di caption (tautan di caption
  menekan jangkauan).
- **FB: type `video` -> `reel`** (Reels dapat distribusi lebih besar; di akun ini type reel sudah 4x sukses).
  **IG tetap `video`** — di akun IG mana pun belum ada yang pakai `reel` (belum terbukti), dan video 9:16
  dari API tetap disajikan Instagram sebagai Reels.
- **alt text media** diisi deskriptif 154 char (aksesibilitas + penemuan): "Video edukasi hukum TS Law:
  jual beli tanah waris tanpa persetujuan seluruh ahli waris bisa dibatalkan, dasar putusan MA 3236 K/PDT/1989".
- Judul jadwal jadi pertanyaan yang dicari orang: "TS Law — Tanah Waris Dijual Tanpa Persetujuan Ahli Waris,
  Bisa Dibatalkan?". Skrip: `rapikan_video_tslaw_meta_seo.py` (dry run -> `--run`).

### Sisi Google — draf artikel siap, belum tayang (aturan skill: draf dulu)
- Draf **#3698** di tslaw.id, slug `tanah-waris-dijual-tanpa-persetujuan-ahli-waris`, kategori 14 (Hukum Bisnis),
  8 tag (termasuk #39 tanah waris, #77 hukum waris, #79 pembagian waris, #55 hukum pertanahan).
  Fokus kata kunci: "jual beli tanah waris tanpa persetujuan ahli waris".
- **1.111 kata** (isi 11.933 char), 9 H2, 8 H3, 5 tautan internal (semua HTTP 200 dicek), 1 tombol WA
  (`wa.me/6281909222026` — nomor yang benar-benar tampil di situs; `cfg_tslaw.json` masih memuat nomor lama
  6281935000624, jangan dipakai).
- **Video TS Law ditanam di artikel** dengan pemutar `<video>` (versi web 1080, 5,7 MB, bukan 4K 37 MB)
  + poster (frame detik ke-5), ditambah **schema VideoObject dan FAQPage** (`application/ld+json` dua blok).
  Tujuan: Google bisa menampilkan video ini di hasil pencarian video, bukan cuma di sosmed.
- Gambar unggulan dari frame video sendiri (bukan gambar hasil generate, sesuai aturan Bos 29 Sep):
  dipotong 1200x630 -> media #3699, alt terisi, HTTP 200.
- Mutu teks: `cek_pola_ai.py` bersih (0 em dash, 0 kutip melengkung, 0 CJK, 0 frasa AI). Satu pola
  "bukan sekadar ... melainkan" sudah diperbaiki.
- Data GSC tslaw.id 10 Jul - 7 Okt: hanya 79 kueri, impresi kecil (terbesar "ts law firm" 33 impresi).
  Tidak ada kueri tanah waris bervolume, jadi judul dipilih dari maksud pencarian, bukan dari data kueri.
- Berkas: `tslaw_artikel_tanah_waris_dijual_sepihak.py` (generator + `--run`), `tslaw_artikel_gambar_unggulan.py`,
  `tslaw_verif_artikel_tanah_waris.py`, `tslaw_gsc_tanah_waris.py`, `tslaw_cek_topik_tanah_waris.py`,
  `tslaw_bahan_artikel_tanah_waris.py`.
- Pratinjau admin: https://www.tslaw.id/wp-admin/post.php?post=3698&action=edit — **menunggu keputusan Bos**
  mau tayang atau diedit dulu.

### Keputusan Bos: "tidak usah dibuat barengan, atur saja agar semua tayang rapih"
- Artikel #3698 **dijadwalkan Kamis 15 Okt 2026 08:00 WIB** (`status=future`), bukan Senin (hari video).
  Hari itu kanal sosial TSLaw hanya story, jadi kalendernya berjarak: Senin video, Rabu carousel,
  Kamis artikel.
- ⚠️ **Zona waktu tslaw.id terkonfirmasi**: `date` = WIB, server menghitung `date_gmt` = date - 7 jam.
  Uji: set `date` 2026-10-15T01:00 -> balik `date_gmt` 2026-10-14T18:00. Jadi jam tayang ditulis apa adanya
  dalam WIB. (Artikel lama #3356 punya `date == date_gmt` karena diisi langsung, jangan dipakai sebagai acuan.)
- Baca-balik final: `date` 2026-10-15T08:00:00 + `date_gmt` 2026-10-15T01:00:00 -> dua-duanya jatuh
  Kamis 15 Okt 08:00 WIB. Video, schema, gambar unggulan, tag, kategori utuh.
- Skrip: `tslaw_jadwalkan_artikel_tanah_waris.py` (dry run -> `--run`, idempoten).
- **Temuan penting**: tslaw.id punya **11 draf artikel belum dijadwalkan** dan **0 artikel `future`**
  (tidak ada sama sekali yang terjadwal). Isinya seri "Pengacara/Konsultan ... di Surabaya" yang dibuat
  3-9 Okt satu per hari (#3532, #3557, #3653, #3657, #3667, #3671, #3675, #3679, #3685, #3689, + #3698).
  Belum disentuh — menunggu keputusan Bos (kena aturan "semua profil garap klien sama").
