← back to Allnewsdaily
allnewsdaily Short: publish 3x/day (6/12/18) + min-gap guard + guard follows each publish
1a87806a02162382558d4ef88ffdd0475d27fe98 · 2026-09-09 23:04:35 -0700 · Steve Abrams
Daily-short launchd → 3 fire times (6am/12pm/6pm); replaced once-per-day lock with a 120min
min-gap guard so the 3 runs proceed while an accidental double-fire is blocked. History-based
dedupe already gives each run distinct headlines. Delete-canary → 09:30/13:30/19:30/21:30 to
follow each publish.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Files touched
M com.steve.allnewsdaily-daily-short.plistM com.steve.allnewsdaily-short-guard.plistM scripts/short/make-daily-short.mjs
Diff
commit 1a87806a02162382558d4ef88ffdd0475d27fe98
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Sep 9 23:04:35 2026 -0700
allnewsdaily Short: publish 3x/day (6/12/18) + min-gap guard + guard follows each publish
Daily-short launchd → 3 fire times (6am/12pm/6pm); replaced once-per-day lock with a 120min
min-gap guard so the 3 runs proceed while an accidental double-fire is blocked. History-based
dedupe already gives each run distinct headlines. Delete-canary → 09:30/13:30/19:30/21:30 to
follow each publish.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
com.steve.allnewsdaily-daily-short.plist | 11 ++++++-----
com.steve.allnewsdaily-short-guard.plist | 9 +++++----
scripts/short/make-daily-short.mjs | 9 +++++++--
3 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/com.steve.allnewsdaily-daily-short.plist b/com.steve.allnewsdaily-daily-short.plist
index 0bd363c..4fbeed5 100644
--- a/com.steve.allnewsdaily-daily-short.plist
+++ b/com.steve.allnewsdaily-daily-short.plist
@@ -29,12 +29,13 @@
<key>WorkingDirectory</key>
<string>/Users/macstudio3/Projects/allnewsdaily</string>
- <!-- 6:00 AM local, daily. -->
+ <!-- 3x daily: 6:00 AM, 12:00 PM, 6:00 PM local. Each run picks different (non-repeat) headlines. -->
<key>StartCalendarInterval</key>
- <dict>
- <key>Hour</key><integer>6</integer>
- <key>Minute</key><integer>0</integer>
- </dict>
+ <array>
+ <dict><key>Hour</key><integer>6</integer><key>Minute</key><integer>0</integer></dict>
+ <dict><key>Hour</key><integer>12</integer><key>Minute</key><integer>0</integer></dict>
+ <dict><key>Hour</key><integer>18</integer><key>Minute</key><integer>0</integer></dict>
+ </array>
<key>RunAtLoad</key>
<false/>
diff --git a/com.steve.allnewsdaily-short-guard.plist b/com.steve.allnewsdaily-short-guard.plist
index 6d07691..a36571e 100644
--- a/com.steve.allnewsdaily-short-guard.plist
+++ b/com.steve.allnewsdaily-short-guard.plist
@@ -27,12 +27,13 @@
<key>WorkingDirectory</key>
<string>/Users/macstudio3/Projects/allnewsdaily</string>
- <!-- 10:00, 14:00, 18:00 local — several passes through the 24-48h algorithm/retraction window. -->
+ <!-- Follows each 6/12/18 publish (checks ~1-3h after): 09:30, 13:30, 19:30, 21:30 local. -->
<key>StartCalendarInterval</key>
<array>
- <dict><key>Hour</key><integer>10</integer><key>Minute</key><integer>0</integer></dict>
- <dict><key>Hour</key><integer>14</integer><key>Minute</key><integer>0</integer></dict>
- <dict><key>Hour</key><integer>18</integer><key>Minute</key><integer>0</integer></dict>
+ <dict><key>Hour</key><integer>9</integer><key>Minute</key><integer>30</integer></dict>
+ <dict><key>Hour</key><integer>13</integer><key>Minute</key><integer>30</integer></dict>
+ <dict><key>Hour</key><integer>19</integer><key>Minute</key><integer>30</integer></dict>
+ <dict><key>Hour</key><integer>21</integer><key>Minute</key><integer>30</integer></dict>
</array>
<key>RunAtLoad</key>
diff --git a/scripts/short/make-daily-short.mjs b/scripts/short/make-daily-short.mjs
index 79a9d86..f93d151 100644
--- a/scripts/short/make-daily-short.mjs
+++ b/scripts/short/make-daily-short.mjs
@@ -100,11 +100,16 @@ const releaseLock = () => { try { fs.rmSync(LOCK); } catch {} };
(async () => {
if (!acquireLock()) { console.error('[daily-short] another run holds the lock (< 30min old) — aborting.'); process.exit(0); }
try {
- // #7 — already published today?
+ // #7 — min-gap guard: allow the scheduled 3x/day (runs ~6h apart) but block an accidental
+ // rapid double-fire. (Different headlines each run are handled by the history.json dedupe.)
if (!FORCE && !NO_UPLOAD && !DRY) {
try {
const prev = JSON.parse(fs.readFileSync(path.join(DATA, 'latest-run.json'), 'utf8'));
- if (prev.airedDate === todayStamp() && prev.videoId) { releaseLock(); return void writeStatus('PASS', `already published today (${prev.url}) — skipping (use --force to re-run)`, prev); }
+ const MIN_GAP_MIN = Number(process.env.AND_MIN_GAP_MIN || 120);
+ if (prev.videoId && prev.ts) {
+ const gap = (Date.now() - Date.parse(prev.ts)) / 60000;
+ if (gap < MIN_GAP_MIN) { releaseLock(); return void writeStatus('PASS', `last upload ${gap.toFixed(0)}min ago (< ${MIN_GAP_MIN}min min-gap) — skipping to avoid double-post (use --force)`, prev); }
+ }
} catch {}
}
← e68bd39 allnewsdaily Short: Steve's cloned voice + natural model + s
·
back to Allnewsdaily
·
allnewsdaily: cut outlet directory to top-20 most-popular gl c16abe8 →