Can CeylanVienna-based, globally curious.
Learn/Product Thinking

Manual means manual posting, not manual preparation

In multi-platform publishing workflows, 'manual' platforms are often under-served because automation feels unnecessary. But manual posting and manual preparation are different things. Automating the preparation — content, assets, copy — is always worth doing, even when the final post is made by hand.

2026-04-25·3 min read·beginner

The false equivalence

When designing a content publishing workflow, platforms get sorted into two buckets: automated (the system posts for you) and manual (you post yourself).

The manual bucket is often treated as "not worth automating." If you are going to post by hand anyway, why build generation pipelines for it?

This conflates two separate steps:

  1. Preparation — generating the content, copy, and assets for a platform
  2. Posting — actually publishing to that platform

Automation applies to both independently. A platform can have fully automated preparation and fully manual posting. These are not the same axis.

What manual actually means

Manual posting means: the system cannot publish to this platform automatically. Either the API does not exist, it is too expensive, it requires human judgment, or the platform simply does not support programmatic posting.

Manual posting does not mean:

  • The content should be written by hand
  • The assets should be created by hand
  • The copy should be improvised at posting time

If you post to a platform manually three times a week, spending 20 minutes writing the post each time, the problem is not the posting — it is the preparation. The posting takes 30 seconds. The writing takes 20 minutes.

Automated preparation for manual platforms

Every platform in a manual workflow should still get automated content generation:

const PLATFORM_REQUIREMENTS = {
  linkedin: {
    deliveryMode: "manual_assisted",       // you post, system prepares
    requiredTextFields: ["body"],           // generate this automatically
    requiredAssets: [],                     // no assets needed
    automationLevel: "prep_automated_publish_manual",
  },
  instagram: {
    deliveryMode: "manual_assisted",
    requiredTextFields: ["caption"],        // generate automatically
    requiredAssets: ["carousel"],           // render automatically
    automationLevel: "prep_automated_publish_manual",
  },
  pinterest: {
    deliveryMode: "manual_assisted",
    requiredTextFields: ["body", "title", "board"],  // generate all three
    requiredAssets: ["pin"],                          // render automatically
    automationLevel: "prep_automated_publish_manual",
  },
};

The manual_assisted mode means: generate and render everything automatically, then hand the prepared package to the user for posting.

The admin surface implication

For manual platforms, the admin surface should show:

  • Whether the content is ready (text generated, assets rendered)
  • The generated copy, ready to copy-paste
  • A direct link to the platform's posting interface
  • A "Mark as posted" button to track completion
LinkedIn — Ready to post
──────────────────────────────────────
Copy: "Here is your generated LinkedIn post..."
[Copy to clipboard]  [Open LinkedIn →]  [Mark as posted ✓]

The workflow becomes: open admin, copy the generated post, open the platform, paste, post, click "Mark as posted." Three minutes instead of twenty.

Why this matters for tracking

If manual platforms are excluded from the generation pipeline, their status is always "unknown." The system cannot tell you which platforms are ready to post and which are not, because it never generated their content.

With automated preparation for all platforms, the workflow state is complete:

Article: "My latest post"
├── devto      ✓ Published
├── linkedin   ✓ Ready — awaiting manual post
├── instagram  ✓ Ready — carousel rendered, awaiting manual post
└── reddit     ✗ Missing — text not yet generated

This is a usable operational view. The version without automated preparation for manual platforms looks like:

Article: "My latest post"
├── devto      ✓ Published
├── linkedin   — (no data)
├── instagram  — (no data)
└── reddit     — (no data)

No actionable signal. You have to remember what you posted manually and what you did not.

The rule

Automate preparation for every platform, regardless of delivery mode. Reserve the manual/auto distinction for the final posting step only.

Manual platforms are not second-class platforms. They are platforms where the last meter is walked by a human — but everything before that last meter should be as automated as any other platform in the workflow.

More like this, straight to your inbox.

I write about Product Thinking and a handful of other things I actually care about. No schedule, no filler — just when I have something worth saying.

More on Product Thinking

Two AI agents need one live memory file

If two AI coding agents share a repo but not a single mutable memory layer, the user becomes the message bus. Here is the failure mode, why it happens, and the operating model that fixes it.

The distribution map pattern: one config that drives all publishing outputs

Multi-platform publishing workflows accumulate per-platform hacks over time. The distribution map pattern replaces them with a single declarative config: topic → platform list, which becomes the source of truth for what gets generated and where it goes.

Read the broader essay

Article

The Silence of Good People: Black Emancipation, European Assimilation, and Why Raising Your Voice Still Costs Something

Austria just cut funding to ZARA, one of the only organisations consistently documenting racism in the country — and the silence from good people is exactly the problem.

Article

The 'Foreigners and Crime' Argument Is Designed to Fail You

When a chancellor says 'little pashas' out loud, the debate isn't really about crime — it's about who gets to be seen as human first.

If this raised a question, I'd be happy to talk about it.

Find me →
← Back to Learn