Social Media Picker and Online Scheduler | Case Study

A desktop-first workflow for preparing photography posts, generating or polishing captions, scheduling them locally or online, and publishing to multiple social platforms with operational checks.

Python Tkinter desktop UI SQLite history Windows Task Scheduler Hostinger PHP cron SMTP summaries

Scope note: this page documents the implemented workflow and verified behavior. It intentionally does not publish API tokens, SMTP secrets, full source files, or credential-bearing configuration.

Social Media Picker main interface with source folders, Post 1 queue, preview, captions, scheduling controls, and platform checkboxes
Figure 1: Main picker surface with source selection, Post 1 staging, preview, captions, scheduling, and platform controls.

0. Section Map

1. Problem Context And Objective

Posting photography sets manually across several platforms creates repeated work and repeated risk: captions can drift, platform selections can be missed, schedules depend on the computer being on, and partial failures are hard to track cleanly.

Objective: keep the creative review step manual, but automate the repetitive operational work around scheduling, publishing, logging, email reporting, and cleanup.

2. Workflow Logic

The workflow is deliberately staged. The tool does not immediately post from a folder scan. It first builds a reviewed Post 1 queue, then saves a scheduled record with captions, selected platforms, image references, and status fields.

  1. Select a source folder and move images into the Post 1 queue.
  2. Review the preview and file order.
  3. Generate or polish the all-platform caption and X caption.
  4. Choose date, time, Instagram preparation mode, and platforms.
  5. Schedule locally or export to the online scheduler.
  6. Runner processes due jobs and records per-platform results.
  7. Email summary is sent after processing.
  8. Fully posted online jobs are archived and temporary online media is removed.

3. Local Scheduler Architecture

The local workflow keeps the full desktop experience available through the Social Media Picker and a Windows scheduled task.

Confirmed local behavior includes session save/restore, history view, caption generation, ChatGPT polish, scheduled posting, and HTML email summaries after post runs.

4. Online Scheduler Architecture

The online scheduler removes the requirement that the local computer stays on at the posting time. The desktop app exports a queue package, uploads it by FTP, and a Hostinger PHP cron processes due items.

The online queue carries only the operational data needed for the run: schedule time, timezone, selected platforms, captions, media references, source references, and platform results.

{
  "id": "post_ID",
  "local_post_id": 0,
  "status": "scheduled",
  "scheduled_for": "YYYY-MM-DD HH:MM",
  "timezone": "Europe/Amsterdam",
  "platforms": ["FB Page", "Instagram", "Threads", "Tumblr", "Mastodon"],
  "media": [
    {
      "filename": "image.jpg",
      "relative_path": "media/post_ID/image.jpg",
      "public_url": "https://www.amir2000.nl/..."
    }
  ],
  "platform_results": {}
}

5. Platform Rules And Boundaries

The confirmed auto-post targets are FB Page, Instagram, Threads, Tumblr, and Mastodon. X remains visible in the UI but intentionally unchecked and disabled for auto-posting because automated posting requires paid API access.

Split rules currently implemented:

6. Reliability And Failure Handling

The scheduler treats every platform result separately instead of assuming that a post is all-or-nothing. This matters because real platform APIs can return transient failures or token/authentication errors.

A confirmed 18:00 online run posted successfully to all selected targets after a second cron pass for Tumblr. The final cron state archived the posted JSON and removed the matching online media folder.

Online AutoPost email summary showing post 13 as posted successfully to FB Page, Instagram, Threads, Tumblr, and Mastodon
Figure 2: Email summary evidence for the confirmed 18:00 online run; all selected platforms finished successfully.

7. UI Evidence

The interface screenshots below show the main operating surface, the date/time picker, and the online scheduling path.

Date and time picker window for selecting a scheduled post time
Figure 3: Dedicated date/time picker for schedule selection.
Social Media Picker online scheduling view showing online schedule and sync controls
Figure 4: Online scheduling and sync controls inside the same desktop workflow.

8. Code Exposure Decision

This public case study should not include the full code. The full implementation contains configuration paths, platform integration details, and operational wiring that should stay private or be shared only in a cleaned repository.

Best public approach:

9. Outcome

Known boundary: caption quality tuning remains an improvement area, and X auto-posting is intentionally disabled because of paid API access requirements.

© 2026 Amir Darzi
Privacy Policy  |  Photography site | W3C-Valid  |  Cookie settings