A chapter of the Move Weight Foundation

Self-sustaining site monitor

Automation Status

Last run: 2026-07-27T02:11:36+00:00. Mode: hourly. Overall status: attention.

Open raw status JSON News Videos Agenda packets Finance transcripts

Current Totals

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

Last Run Jobs

JobStatusTimeOutput
Discover agenda packets and build audit pagesok4.81s
output
agenda packet auto: discovered=24 rendered=24
Crawl official Miami Web TV videosok6.89s
output
Crawled 522 official Granicus videos
Merged manifest now has 522 meetings
Wrote /opt/miamiok-granicus-videos.json
Rebuild official/YouTube video APIfailed0.09s
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.86s
output
youtube feed build: pulled=85 playlist=UUPEzVd4eQtJyVtOMt327PVA wrote=/var/www/exposemiamiok/html/youtube.html
Rebuild public videos pagefailed0.14s
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 feedsok7.08s
output
wrote /var/www/exposemiamiok/html/data/local-news-feeds.json items=74 sources=12
Rebuild site search indexok4.35s
output
wrote /var/www/exposemiamiok/html/data/site-search-index.json records=838
Crime watch feed aggregatorok8.86s
output
 Joplin man sentenced to more than 16 years in prison on child porn charges — 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] Inmate found unresponsive in Ottawa County jail; died in hospital - KOAM News No — Google News - Ottawa
  [ 5] Investigation underway after woman found dead in Ottawa County - FourStatesHomep — Google News - Ottawa
  [ 5] Shooting suspect pleas guilty to 2021 Ottawa County Murder - KOAM News Now — Google News - Ottawa
Normalize menu and logo shellok0.73s
output
full menu updated checked=764 changed=31 version=20260601-unified-menu-agenda6

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.