How Does It Work?
After years of sparodic gameblogging I wanted to blog more regularly with screenshots and have more casual posts, but I quickly figured out I am too lazy to mess with screenshot handling every day, so I automated that process.
I consolidated my screenshot folders on various platforms (GOG, Steam, etc.) and set up SyncThingy to sync handheld screenshot folders.
Each time I open the blogging engine, a Python script checks those folders, finds everything that was created yesterday, and outputs all of the images in a nicegui blogging frontend.
The screenshot is identified by it's filename. In something like Retroarch, this is easy, as it produces human-readable filenames.
stripped_name = name.split("(", 1)[0].split('-',1)[0].strip()
For Steam, I look up the appID in the filename using a .json of Steam appIDs. Switch IDs have to be decrypted before they're looked up.
encrypted_id = img.split("-")[1]
result = subprocess.run(['nxapi','util', 'captureid','decrypt', encrypted_id], capture_output=True, text=True, shell=True)
decrypted_id = result.stdout.upper().strip()
with open(SWITCH_JSON, mode ='r', encoding='utf-8')as file:
json_data = json.load(file)
for item in json_data.items():
if item[0] == decrypted_id:
game = item[1].encode("ascii", "ignore").decode().replace(":","")
## remove intial "the"
if game[:3] == "The":
game = game[3:].strip()
print("Found Switch ID ", decrypted_id, game)
I toggle the ones I want to post and write my blog post. During post-processing, the script saves an optimized, resized, renamed copy of the screenshot in the appropriate game folder. It creates a markdown post for the post I just typed up, and the rest of the site is generated from these markdown files.
I don't need much data to process all those posts into a blog and game pages.
---
title:
date:
games: []
images: []
alt_text: []
---
Setting this up was a little work up front, but I wrote 200+ posts in the first year, so it was definitley worth it. (With my most recent consolidation, there are over 600 posts). It only takes a few minutes to blog each day, as opposed to however long it would take to do all the image stuff and archive posts as needed.
Every year or so I review the engine and improve it. The most recent improvement in June 2026 was automating the upload process and conslidating the blog and the main site, which were previously seperate. The blog was automatic, but I had to update the site manually. Now it all happens at once.