Self-sustaining site monitor
Automation Status
Last run: 2026-10-25T03:31:34+00:00. Mode: daily. Overall status: attention.
Open raw status JSON News Videos Agenda packets Finance transcripts
Current Totals
Last Run Jobs
| Job | Status | Time | Output |
|---|---|---|---|
| Discover agenda packets and build audit pages | ok | 4.54s | outputagenda packet auto: discovered=24 rendered=24 |
| Crawl official Miami Web TV videos | ok | 1.54s | outputCrawled 534 official Granicus videos Merged manifest now has 534 meetings Wrote /opt/miamiok-granicus-videos.json |
| Rebuild official/YouTube video API | ok | 0.1s | outputSkipping invalid YouTube upload marker /var/www/exposemiamiok/html/meetings/631/youtube_uploaded.json: Expecting value: line 1 column 1 (char 0) Skipping invalid YouTube upload marker /var/www/exposemiamiok/html/meetings/630/youtube_uploaded.json: Expecting value: line 1 column 1 (char 0) |
| Pull YouTube channel uploads from YouTube API | ok | 1.97s | output/usr/local/lib/python3.11/dist-packages/google/api_core/_python_version_support.py:273: FutureWarning: You are using a Python version (3.11.2) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2027-10-24). Please upgrade to the latest Python version, or at least Python 3.12, to continue receiving updates for google.api_core past that date. warnings.warn(message, FutureWarning) |
| Rebuild public videos page | ok | 0.18s | outputSkipping invalid YouTube upload marker /var/www/exposemiamiok/html/meetings/631/youtube_uploaded.json: Expecting value: line 1 column 1 (char 0) Skipping invalid YouTube upload marker /var/www/exposemiamiok/html/meetings/630/youtube_uploaded.json: Expecting value: line 1 column 1 (char 0) |
| Refresh local news RSS feeds | ok | 6.2s | outputwrote /var/www/exposemiamiok/html/data/local-news-feeds.json items=55 sources=12 |
| Rebuild site search index | ok | 2.89s | outputwrote /var/www/exposemiamiok/html/data/site-search-index.json records=995 |
| Crime watch feed aggregator | ok | 4.3s | outputy; body found in Tar Creek in Ottawa Count — Google News - Ottawa [ 6] OSBI, sheriff's office investigating body found by hunters in Ottawa County - KT — Google News - Ottawa [ 6] More charges filed in Joplin Jail drug exchanges — Joplin Globe [ 6] Commerce couple sentenced to life in prison for murder, child neglect — Joplin Globe [ 6] Suspect identified in 4-year-old Joplin shooting — Joplin Globe [ 6] Man stopped in Jasper County convicted of drug possession — Joplin Globe [ 5] Proactive Patrol Ends in High-Speed Pursuit, Crash, and Arrest of Texas Car Thef — Google News - Miami |
| Normalize menu and logo shell | ok | 0.56s | outputfull menu updated checked=940 changed=29 nav_items=18 js=adc52e4b css=d3945bb5 |
| Download missing meeting agenda attachments | skipped | 0s | outputCommand target is missing; job skipped. |
| Rebuild meetings index page | ok | 4.37s | outputmeetings index rebuilt: 534 meetings, 204 KB transcripts 510 | agendas 510 | minutes 20 | video 508 pushed to GitHub |
| Verify YouTube upload/transcript state | ok | 1.31s | output/usr/local/lib/python3.11/dist-packages/google/api_core/_python_version_support.py:273: FutureWarning: You are using a Python version (3.11.2) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2027-10-24). Please upgrade to the latest Python version, or at least Python 3.12, to continue receiving updates for google.api_core past that date. warnings.warn(message, FutureWarning) |
| Post-upload video page refresh | ok | 0.16s | outputSkipping invalid YouTube upload marker /var/www/exposemiamiok/html/meetings/631/youtube_uploaded.json: Expecting value: line 1 column 1 (char 0) Skipping invalid YouTube upload marker /var/www/exposemiamiok/html/meetings/630/youtube_uploaded.json: Expecting value: line 1 column 1 (char 0) |
| Post-upload YouTube channel pull | ok | 1.51s | output/usr/local/lib/python3.11/dist-packages/google/api_core/_python_version_support.py:273: FutureWarning: You are using a Python version (3.11.2) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2027-10-24). Please upgrade to the latest Python version, or at least Python 3.12, to continue receiving updates for google.api_core past that date. warnings.warn(message, FutureWarning) |
| Post-upload search refresh | ok | 2.73s | outputwrote /var/www/exposemiamiok/html/data/site-search-index.json records=995 |
| SEO sitemap and schema refresh | ok | 0.25s | outputding robots.txt...
robots.txt written
[3/5] Building schema.org structured data...
Schema injected into HTML pages
[4/5] Building Miami Oklahoma landing page...
Miami landing page: 11885 bytes
[5/5] Building Ottawa County landing page...
Ottawa County landing page: 6548 bytes
=== DONE ===
Sitemap: 820 URLs
Robots: /robots.txt
Schema: JSON-LD injected into all pages
Landing: /miami-oklahoma.html
Landing: /ottawa-county-guide.html
Submit: https://search.google.com/search-console
-> Add property: exposemiamiok.com
-> Sitemaps -> https://exposemiamiok.com/sitemap.xml |
| Post-upload menu normalization | ok | 0.54s | outputfull menu updated checked=940 changed=4 nav_items=18 js=adc52e4b css=d3945bb5 |
Schedule
Hourly: agenda packets, official videos, video page, RSS news, search, menu repair.
Daily: hourly jobs plus meeting attachment refresh, meetings index rebuild, YouTube transcript/API verification, video/search/menu refresh. The upload/caption batch runs from the dedicated 2:00 AM uploader.
Weekly: daily jobs plus City and Ottawa County finance downloads, finance transcript rebuild, audit-lead refresh, search/menu refresh.