Self-sustaining site monitor

Automation Status

Last run: 2026-07-17T04:11:26+00:00. Mode: hourly. Overall status: attention.

Open raw status JSON News Videos Agenda packets Finance transcripts

Current Totals

520Meeting Manifest Count
512Meeting Transcripts
51Youtube Uploads
85Youtube Channel Pull
510Youtube Captions
520Official Video Records
70News Items
12News Sources
804Search Records
81Finance Transcripts
24Agenda Packets

Last Run Jobs

JobStatusTimeOutput
Discover agenda packets and build audit pagesok4.34s
output
agenda packet auto: discovered=24 rendered=24
Crawl official Miami Web TV videosok1.57s
output
Crawled 520 official Granicus videos
Merged manifest now has 520 meetings
Wrote /opt/miamiok-granicus-videos.json
Rebuild official/YouTube video APIfailed0.05s
output
line 293, in load
    return loads(fp.read(),
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Pull YouTube channel uploads from YouTube APIok1.65s
output
youtube feed build: pulled=85 playlist=UUPEzVd4eQtJyVtOMt327PVA wrote=/var/www/exposemiamiok/html/youtube.html
Rebuild public videos pagefailed0.1s
output
aw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Traceback (most recent call last):
  File "/opt/youtube_gallery.py", line 180, in <module>
    main()
  File "/opt/youtube_gallery.py", line 60, in main
    subprocess.run(["python3", "/opt/gen_videos_json.py"], check=True)
  File "/usr/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['python3', '/opt/gen_videos_json.py']' returned non-zero exit status 1.
Refresh local news RSS feedsok6.15s
output
wrote /var/www/exposemiamiok/html/data/local-news-feeds.json items=70 sources=12
Rebuild site search indexok2.86s
output
wrote /var/www/exposemiamiok/html/data/site-search-index.json records=804
Crime watch feed aggregatorok8.22s
output
harges — Joplin Globe
  [ 6] Large fentanyl stash found in Joplin drug arrests — Joplin Globe
  [ 5] Florida murder suspect spotted near Oklahoma mall last week arrested at Miami ho — Google News - Miami 
  [ 5] Man arrested for murder after deadly shooting in Miami - fox23.com — Google News - Miami 
  [ 5] Ottawa County couple arrested for child abuse - KTUL — Google News - Miami 
  [ 5] Oklahoma authorities arrest suspect in murder of Miami man - Inside Joplin — Google News - Miami 
  [ 5] Inmate found unresponsive in Ottawa County jail; died in hospital - KOAM News No — Google News - Ottawa
Normalize menu and logo shellfailed0.52s
output
ception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/exposemiamiok_navigation_update.py", line 466, in <module>
    main()
  File "/usr/local/bin/exposemiamiok_navigation_update.py", line 459, in main
    if update_html(path):
       ^^^^^^^^^^^^^^^^^
  File "/usr/local/bin/exposemiamiok_navigation_update.py", line 427, in update_html
    path.write_text(text, encoding="utf-8")
  File "/usr/lib/python3.11/pathlib.py", line 1079, in write_text
    with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f:
OSError: [Errno 28] No space left on device

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.