YouTube Board

ai.hourly

scheduler disabled local polling disabled active command ready read-only not due now
Modern command
ai:hourly
Legacy command
/usr/bin/php /home/urtube/prompt/ai_hour_prompt.php do=1
Schedule
10 0-15 * * *
00-15 點每小時第 10 分
Evaluation time
2026-05-26 11:58:09 Asia/Taipei
External dependency
Local DB
Write targets
none by default; explicit `--execute` calls OpenCode-compatible chat completions and upserts `urt_ai_hour`
Notes
Legacy 在每小時第 10 分用 `ai_hour_prompt.php do=1` 抓上一個完整小時的 `urt_video`,套用 condition/tag filters,呼叫 AI 後 insert `urt_ai_hour` 且 `data_type=each`;modern command 預設仍只預覽影片候選、prompt bounds、既有 hourly row。Explicit `--execute` 會檢查 OpenCode-compatible key、呼叫 chat completions,並以 date window / condition / model / data_type / user_token idempotently upsert `urt_ai_hour`。Scheduler scheduled write 只在 scheduler、local/production polling、allowlist gates 通過後使用 capped execute command。

Execution Guardrail

This job is read-only, active, command-ready, and allowed to execute when its cron expression is due. Scheduler execution still requires INGESTION_SCHEDULER_ENABLED=true.

Scheduled Local Polling

Scheduler-enabled local polling is blocked for this job until every explicit gate is satisfied.

  • INGESTION_LOCAL_POLLING_ENABLED is false.
  • Job key is not in INGESTION_SCHEDULED_WRITE_ALLOWLIST.
  • Production polling is not explicitly enabled.

ai:hourly --execute --limit=20

Safe Commands

php artisan ingestion:run --job=ai.hourly --at="2026-05-26 11:58:09" INGESTION_SCHEDULER_ENABLED=true php artisan ingestion:run --execute --job=ai.hourly INGESTION_SCHEDULER_ENABLED=true INGESTION_LOCAL_POLLING_ENABLED=true INGESTION_SCHEDULED_WRITE_ALLOWLIST=ai.hourly php artisan ingestion:run --execute --job=ai.hourly

Next Runs

10 0-15 * * *

  • 2026-05-26 12:10:00 CST
  • 2026-05-26 13:10:00 CST
  • 2026-05-26 14:10:00 CST
  • 2026-05-26 15:10:00 CST
  • 2026-05-27 00:10:00 CST