Files
agent-playbooks/falahcast-e19-published.md
T

4.0 KiB

Falah Cast Episode 19 — Published

Live: https://iqra.falahos.my/ibn-khaldun-and-the-muqaddimah-the-science-of-empires/

Published 2026-09-24 via manual end-to-end pipeline test (no cloud routine, run directly from this machine since the cloud environment egress block is still unresolved):

  1. Script written by Notion AI's Content Studio Custom Agent (see falahcast-e19-muqaddimah.md in this repo for the raw script).
  2. Audio generated locally via edge-tts (pip3 install edge-tts), voice en-US-AriaNeural — matches the host voice used in all prior Falah Cast episodes (confirmed from philosophy_series.json's "voice": "en-US-AriaNeural" field).
  3. Uploaded to Ghost via POST /ghost/api/admin/media/upload/ (multipart, purpose=media) → returned hosted URL.
  4. Post created via POST /ghost/api/admin/posts/ with a lexical body matching the exact structure of prior episodes (an audio node + a short intro paragraph), tagged Falah Cast / Podcast / Ibn Khaldun / Islamic Philosophy.

Notable: no dedicated Odysseus or Hermes TTS tool was available in this session's MCP connectors — checked both, neither exposed one. edge-tts (free, local, matches established voice) was the practical choice over Higgsfield's paid TTS engines, which would have introduced a different, inconsistent host voice.

This proves the full content pipeline works end-to-end when not blocked by network policy. Once the "Falah" cloud environment's egress allow-list is actually fixed (see gumroad-file-hosting-gotcha.md and prior session notes), this flow is a candidate for a scheduled routine.

Episode 20 — Rumi's Masnavi

Live: https://iqra.falahos.my/rumis-masnavi-the-reeds-cry-and-the-logic-of-the-heart/

Same pipeline as episode 19. Note: first curl publish attempt appeared to fail with a local JSON-parse error (caused by mixing -w status output into the same stream as the response body) but had actually succeeded server-side — retrying created a duplicate post (-2 slug). Caught by checking filter=slug:~'masnavi' and deleted the duplicate via DELETE /ghost/api/admin/posts/{id}/ (204 confirmed). Lesson: always write API response bodies to a separate file/variable from status-code output before parsing, and check for existing posts before assuming a "failed" call didn't actually go through.

Episode 21 — Sejarah Melayu (Malay Annals)

Live: https://iqra.falahos.my/sejarah-melayu-memory-daulat-and-how-a-people-tells-its-story/

Same pipeline. Also this session (2026-09-25): investigated the episode numbering duplication flagged earlier — root cause found in the campaign repo's commit history: episodes 11-18 exactly repeat the topics of episodes 2-8, in order, offset by 9 (e11=e02's topic, e13=e03's, ..., e18=e08's), with only e09/e10/e12 being genuinely new. This points to a topic-cycling/wraparound bug in the old daily-cron.py/content-engine.py pipeline. No fix needed/attempted — that pipeline is confirmed dormant (not scheduled anywhere on this Mac, per earlier pi diagnostic), and the current manual Notion-AI-driven episodes (19+) draw from never-used book-repo topics, sidestepping the bug entirely.

Also: wired the researched 30-day topic calendar directly into the Iqra Times Daily Article routine (trig_01NjWBVBaDrtBbCU6mMq8xgf) — it now works through the fixed list in order (tracking position via the "Islamic Tech" Ghost tag) instead of self-picking topics each run.

And: archived two empty/stale Gitea repos found in the earlier infra sweep (wmj/mautic-mcp-server, wmj/ihya-migration-test) via PATCH /api/v1/repos/{owner}/{repo} with {"archived": true} — reversible, non-destructive. falah-mobile's earlier "partial API response" flag turned out to be a non-issue on re-check (69KB, healthy).

Episode 22 — Madinah / al-Farabi's Virtuous City

Live: https://iqra.falahos.my/madinah-twice-the-covenant-and-the-virtuous-city/

Same pipeline. Bridges to Ibn Ata'illah's Kitab al-Hikam (aphorisms) next.