Social Media Picker and Online Scheduler | Case Study

A desktop-first workflow for preparing reviewed photography posts, creating and improving 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 copy or move chosen images into the Post 1 queue.
  2. Review the preview and file order; the queue can be reordered, restored to its remembered source, or cleaned deliberately.
  3. Add a caption brief and optional blog URL, then create a Quality Caption or Local Draft and optionally Improve Draft. The all-platform and X captions remain editable before scheduling.
  4. Choose date, time, Instagram preparation mode, per-post Instagram split size, 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. Terminal online jobs are archived and their 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.

Current caption controls provide a quality workflow, a local draft workflow, and an improvement workflow. Each leaves the all-platform and X captions editable, so the creative approval step remains manual. Confirmed local behavior also includes session save/restore, history view, 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, Instagram preparation and split settings, 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"],
  "instagram_mode": "Original",
  "instagram_split_count": 10,
  "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 documented 19 July 2026 scheduled run posted successfully to all selected targets. Its results show Instagram completing in two parts and Mastodon completing in four parts, with the final record marked posted at 18:10:06 Europe/Amsterdam.

Social Media email summary showing post 92 posted successfully to FB Page, Instagram, Threads, Tumblr, and Mastodon, with Instagram split into two parts and Mastodon into four parts
Figure 2: Email-summary evidence from the documented 19 July 2026 18:00 run; all selected platforms finished successfully, including the configured Instagram and Mastodon split posting.

7. UI Evidence

The screenshots document the current main operating surface and its scheduling controls, including local scheduling, online scheduling and result sync, Instagram preparation, per-post IG Split, and platform selection.

Social Media Picker scheduling controls showing date and time selection, Instagram preparation, per-post Instagram split size, local and online scheduling actions, result sync, and platform checkboxes
Figure 3: Current scheduling controls for date and time, Instagram preparation and split size, local or online scheduling, result sync, and platform selection.

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

Captioning remains reviewable and editable before scheduling: the tool provides quality, local-draft, and improvement workflows, but it does not remove the photographer's approval step. X auto-posting remains intentionally disabled because automated posting requires paid API access.

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