[object Object]

← back to Crazy News Channel Shadowman

p24 daily-cartoons: review queue shows linked article, renders cleanly without clips

fb5ea85964be2852f0efde2b727af9741a3bf9e9 · 2026-09-25 10:20:28 -0700 · Steve Abrams

build_review.py's card now shows the linked source article (title + real-news/p24
source chip), or a plain "no linked article" note for pre-TK-12237 queue items that
predate story linking. The approve-command snippet shown per card now includes the
recorded --story-id so Steve can copy/paste it directly. review.html regenerated;
verified 0 console/page errors via Playwright and 0 <style> blocks / style="" attrs
(only ../assets/style.css, per the one-stylesheet rule).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XizSgLiFuNbjY418z94Ewq

Files touched

Diff

commit fb5ea85964be2852f0efde2b727af9741a3bf9e9
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Fri Sep 25 10:20:28 2026 -0700

    p24 daily-cartoons: review queue shows linked article, renders cleanly without clips
    
    build_review.py's card now shows the linked source article (title + real-news/p24
    source chip), or a plain "no linked article" note for pre-TK-12237 queue items that
    predate story linking. The approve-command snippet shown per card now includes the
    recorded --story-id so Steve can copy/paste it directly. review.html regenerated;
    verified 0 console/page errors via Playwright and 0 <style> blocks / style="" attrs
    (only ../assets/style.css, per the one-stylesheet rule).
    
    Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01XizSgLiFuNbjY418z94Ewq
---
 daily-cartoons/build_review.py | 13 +++++++++++--
 daily-cartoons/review.html     | 15 ++++++++++-----
 2 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/daily-cartoons/build_review.py b/daily-cartoons/build_review.py
index 2f7e5f6..0e4ccff 100755
--- a/daily-cartoons/build_review.py
+++ b/daily-cartoons/build_review.py
@@ -22,15 +22,24 @@ def card(m):
     e = lambda x: html.escape(str(x or ""))
     media = (f'<video controls preload="none" poster="{e(m["_rel"])}/poster.jpg" src="{e(m["_rel"])}/clip.mp4"></video>'
              if m["_has_clip"] else (f'<img src="{e(m["_rel"])}/poster.jpg" alt="">' if m["_has_poster"] else '<div class="nomedia">no media</div>'))
-    cmd = f'python3 daily-cartoons/approve.py {m["slug"]} --date {m["date"]} --story-id &lt;story-id&gt;'
+    story_id = m.get("story_id")
+    cmd = (f'python3 daily-cartoons/approve.py {m["slug"]} --date {m["date"]}' + (f' --story-id {story_id}' if story_id
+           else ' --story-id &lt;story-id&gt;'))
+    story_html = (f'<p class="src"><a href="{e(m.get("story_url"))}" target="_blank" rel="noopener noreferrer">📰 {e(m.get("story_title"))}</a>'
+                  f' <span class="chip">{e(m.get("story_source"))}</span></p>' if m.get("story_url")
+                  else '<p class="src no-story">no linked article — pre-TK-12237 item, pass --story-id to approve</p>')
+    prompts = f'<p><b>image:</b> {e(m.get("image_prompt"))}</p>'
+    if m.get("motion_prompt"):
+        prompts += f'<p><b>motion:</b> {e(m.get("motion_prompt"))}</p>'
     return f'''<article class="card" data-created="{e(m.get("created_at"))}" data-title="{e(m.get("title"))}" data-cost="{m.get("cost",{}).get("total",0)}">
   {media}
   <div class="body">
     <h2>{e(m.get("title"))}</h2>
     <p class="cap">&ldquo;{e(m.get("caption"))}&rdquo;</p>
+    {story_html}
     <div class="chips"><span class="chip when" title="{e(m.get("created_at"))}" data-iso="{e(m.get("created_at"))}">🕓 {e(m.get("created_at"))}</span>
       <span class="chip">${m.get("cost",{}).get("total",0):.3f}</span><span class="chip st-{e(m.get("status"))}">{e(m.get("status"))}</span></div>
-    <details><summary>prompts</summary><p><b>image:</b> {e(m.get("image_prompt"))}</p><p><b>motion:</b> {e(m.get("motion_prompt"))}</p></details>
+    <details><summary>prompts</summary>{prompts}</details>
     <code class="cmd" title="click to copy">{cmd}</code>
   </div>
 </article>'''
diff --git a/daily-cartoons/review.html b/daily-cartoons/review.html
index 94ca56b..8c982b6 100644
--- a/daily-cartoons/review.html
+++ b/daily-cartoons/review.html
@@ -6,50 +6,55 @@
 <div class="ctrl"><label>Sort <select id="sort"><option value="new">Newest</option><option value="old">Oldest</option><option value="title">Title A→Z</option><option value="cost">Cost ↓</option></select></label>
 <label>Size <input id="dens" type="range" min="220" max="640" step="20" value="340"></label></div></header>
 <main id="grid"><article class="card" data-created="2026-09-25T14:29:23+00:00" data-title="Infinite Scroll" data-cost="0.103">
-  <video controls preload="none" poster="queue/2026-09-25/infinite-scroll/poster.jpg" src="queue/2026-09-25/infinite-scroll/clip.mp4"></video>
+  <img src="queue/2026-09-25/infinite-scroll/poster.jpg" alt="">
   <div class="body">
     <h2>Infinite Scroll</h2>
     <p class="cap">&ldquo;Scrolling: where time goes to die.&rdquo;</p>
+    <p class="src no-story">no linked article — pre-TK-12237 item, pass --story-id to approve</p>
     <div class="chips"><span class="chip when" title="2026-09-25T14:29:23+00:00" data-iso="2026-09-25T14:29:23+00:00">🕓 2026-09-25T14:29:23+00:00</span>
       <span class="chip">$0.103</span><span class="chip st-queued">queued</span></div>
     <details><summary>prompts</summary><p><b>image:</b> Black and white single-panel editorial cartoon, classic 1970s newspaper op-ed page style. Pen-and-ink with loose, confident, slightly jagged brush contour lines and dense directional crosshatching, scratchboard-like white highlights cut out of heavy solid black. A disheveled figure hunched over a laptop, endlessly scrolling through an infinite scroll of repetitive cat memes. The endless repetition is illustrated with identical cat faces and &#x27;lol&#x27; captions filling the screen. Figures are invented anonymous caricatures, not any real person. High contrast, stark, absurd, ink-heavy, hand-drawn newspaper cartoon. No color, no gradients, no 3D render, no photorealism, no vector clip art, no text, no letters, no caption, no speech bubbles, no watermark, no signature.</p><p><b>motion:</b> Animate this black-and-white pen-and-ink editorial cartoon, keep the hand-drawn ink style throughout, static camera. The cat images rapidly scroll past in a blur, each with the same exaggerated &#x27;lol&#x27; caption, making a monotonous typing sound. Slow, dry, deadpan comedy timing.</p></details>
     <code class="cmd" title="click to copy">python3 daily-cartoons/approve.py infinite-scroll --date 2026-09-25 --story-id &lt;story-id&gt;</code>
   </div>
 </article><article class="card" data-created="2026-09-25T14:27:36+00:00" data-title="Tech Tyrant" data-cost="0.103">
-  <video controls preload="none" poster="queue/2026-09-25/tech-tyrant/poster.jpg" src="queue/2026-09-25/tech-tyrant/clip.mp4"></video>
+  <img src="queue/2026-09-25/tech-tyrant/poster.jpg" alt="">
   <div class="body">
     <h2>Tech Tyrant</h2>
     <p class="cap">&ldquo;The algorithm always knows best.&rdquo;</p>
+    <p class="src no-story">no linked article — pre-TK-12237 item, pass --story-id to approve</p>
     <div class="chips"><span class="chip when" title="2026-09-25T14:27:36+00:00" data-iso="2026-09-25T14:27:36+00:00">🕓 2026-09-25T14:27:36+00:00</span>
       <span class="chip">$0.103</span><span class="chip st-queued">queued</span></div>
     <details><summary>prompts</summary><p><b>image:</b> Black and white single-panel editorial cartoon, classic 1970s newspaper op-ed page style. Pen-and-ink with loose, confident, slightly jagged brush contour lines and dense directional crosshatching, scratchboard-like white highlights cut out of heavy solid black. A stern-faced figure sits on a high-tech throne surrounded by screens. A glowing blue hand projects from one of the screens, gesturing towards an abstract image on another screen, which represents &#x27;the people&#x27; being manipulated and guided like puppets. Figures are invented anonymous caricatures, not any real person. High contrast, stark, absurd, ink-heavy, hand-drawn newspaper cartoon. No color, no gradients, no 3D render, no photorealism, no vector clip art, no text, no letters, no caption, no speech bubbles, no watermark, no signature.</p><p><b>motion:</b> Animate this black-and-white pen-and-ink editorial cartoon, keep the hand-drawn ink style throughout, static camera. The blue hand swipes across the screens rapidly, causing the abstract representation of the people to nod in unison as if controlled by a puppet master. Slow, dry, deadpan comedy timing.</p></details>
     <code class="cmd" title="click to copy">python3 daily-cartoons/approve.py tech-tyrant --date 2026-09-25 --story-id &lt;story-id&gt;</code>
   </div>
 </article><article class="card" data-created="2026-09-25T14:25:59+00:00" data-title="Senator&#x27;s Shadow War" data-cost="0.103">
-  <video controls preload="none" poster="queue/2026-09-25/senator-s-shadow-war/poster.jpg" src="queue/2026-09-25/senator-s-shadow-war/clip.mp4"></video>
+  <img src="queue/2026-09-25/senator-s-shadow-war/poster.jpg" alt="">
   <div class="body">
     <h2>Senator&#x27;s Shadow War</h2>
     <p class="cap">&ldquo;In shadowy negotiations, power is real.&rdquo;</p>
+    <p class="src no-story">no linked article — pre-TK-12237 item, pass --story-id to approve</p>
     <div class="chips"><span class="chip when" title="2026-09-25T14:25:59+00:00" data-iso="2026-09-25T14:25:59+00:00">🕓 2026-09-25T14:25:59+00:00</span>
       <span class="chip">$0.103</span><span class="chip st-queued">queued</span></div>
     <details><summary>prompts</summary><p><b>image:</b> Black and white single-panel editorial cartoon, classic 1970s newspaper op-ed page style. Pen-and-ink with loose, confident, slightly jagged brush contour lines and dense directional crosshatching, scratchboard-like white highlights cut out of heavy solid black. A jowly senator stands on a podium casting an enormous shadow across a dimly lit room. His shadowy figure morphs into menacing figures and abstract shapes, like swords or masks, battling each other in the background. Figures are invented anonymous caricatures, not any real person. High contrast, stark, absurd, ink-heavy, hand-drawn newspaper cartoon. No color, no gradients, no 3D render, no photorealism, no vector clip art, no text, no letters, no caption, no speech bubbles, no watermark, no signature.</p><p><b>motion:</b> Animate this black-and-white pen-and-ink editorial cartoon, keep the hand-drawn ink style throughout, static camera. The senator&#x27;s silhouette winks and gestures, causing his shadow to morph into different forms that clash violently. Slow, dry, deadpan comedy timing.</p></details>
     <code class="cmd" title="click to copy">python3 daily-cartoons/approve.py senator-s-shadow-war --date 2026-09-25 --story-id &lt;story-id&gt;</code>
   </div>
 </article><article class="card" data-created="2026-09-25T14:23:48+00:00" data-title="Bureaucrats and Bubbles" data-cost="0.103">
-  <video controls preload="none" poster="queue/2026-09-25/bureaucrats-and-bubbles/poster.jpg" src="queue/2026-09-25/bureaucrats-and-bubbles/clip.mp4"></video>
+  <img src="queue/2026-09-25/bureaucrats-and-bubbles/poster.jpg" alt="">
   <div class="body">
     <h2>Bureaucrats and Bubbles</h2>
     <p class="cap">&ldquo;When committees debate, they just inflate ideas.&rdquo;</p>
+    <p class="src no-story">no linked article — pre-TK-12237 item, pass --story-id to approve</p>
     <div class="chips"><span class="chip when" title="2026-09-25T14:23:48+00:00" data-iso="2026-09-25T14:23:48+00:00">🕓 2026-09-25T14:23:48+00:00</span>
       <span class="chip">$0.103</span><span class="chip st-queued">queued</span></div>
     <details><summary>prompts</summary><p><b>image:</b> Black and white single-panel editorial cartoon, classic 1970s newspaper op-ed page style. Pen-and-ink with loose, confident, slightly jagged brush contour lines and dense directional crosshatching, scratchboard-like white highlights cut out of heavy solid black. A committee of identical bureaucrats sit at a rectangular table, each surrounded by floating soap bubbles. They gesture excitedly towards the bubbles, which seem to grow larger with their every word, obscuring their faces in an absurd balloon maze. Figures are invented anonymous caricatures, not any real person. High contrast, stark, absurd, ink-heavy, hand-drawn newspaper cartoon. No color, no gradients, no 3D render, no photorealism, no vector clip art, no text, no letters, no caption, no speech bubbles, no watermark, no signature.</p><p><b>motion:</b> Animate this black-and-white pen-and-ink editorial cartoon, keep the hand-drawn ink style throughout, static camera. The bureaucrats&#x27; hands wave rapidly as the bubbles expand and pop in exaggerated slow motion, making funny popping sounds. Slow, dry, deadpan comedy timing.</p></details>
     <code class="cmd" title="click to copy">python3 daily-cartoons/approve.py bureaucrats-and-bubbles --date 2026-09-25 --story-id &lt;story-id&gt;</code>
   </div>
 </article><article class="card" data-created="2026-09-24T22:12:18+00:00" data-title="Committee of Shadows" data-cost="0.103">
-  <video controls preload="none" poster="queue/2026-09-24/committee-of-shadows/poster.jpg" src="queue/2026-09-24/committee-of-shadows/clip.mp4"></video>
+  <img src="queue/2026-09-24/committee-of-shadows/poster.jpg" alt="">
   <div class="body">
     <h2>Committee of Shadows</h2>
     <p class="cap">&ldquo;In darkness, they find clarity.&rdquo;</p>
+    <p class="src no-story">no linked article — pre-TK-12237 item, pass --story-id to approve</p>
     <div class="chips"><span class="chip when" title="2026-09-24T22:12:18+00:00" data-iso="2026-09-24T22:12:18+00:00">🕓 2026-09-24T22:12:18+00:00</span>
       <span class="chip">$0.103</span><span class="chip st-queued">queued</span></div>
     <details><summary>prompts</summary><p><b>image:</b> Black and white single-panel editorial cartoon, classic 1970s newspaper op-ed page style. Pen-and-ink with loose, confident, slightly jagged brush contour lines and dense directional crosshatching, scratchboard-like white highlights cut out of heavy solid black. A committee of identical bureaucrats sitting around a circular table under dim red light, each with half their face obscured by shadowy masks; behind them is an endless sea of file cabinets with ominous glowing neon labels. Figures are invented anonymous caricatures, not any real person. High contrast, stark, absurd, ink-heavy, hand-drawn newspaper cartoon. No color, no gradients, no 3D render, no photorealism, no vector clip art, no text, no letters, no caption, no speech bubbles, no watermark, no signature.</p><p><b>motion:</b> Animate this black-and-white pen-and-ink editorial cartoon, keep the hand-drawn ink style throughout, static camera. The shadows on the masks shift and stretch as if animated, making the masked faces look like they are whispering to each other. Slow, dry, deadpan comedy timing.</p></details>

← 0b40f82 p24 daily-cartoons: approve.py defaults --story-id from meta  ·  back to Crazy News Channel Shadowman  ·  p24 daily-cartoons: docs for article-driven, still-image-by- 8ef5d98 →