flabee/social-post-agent2026

social-post-agent

An AI agent that drafts a brand’s weekly social posts in Google Chat — a human always in the loop.

RoleDesign engineer — vibecoded
ClientPersonal project
Timeline2026
View repository

Most “AI content” tools publish on their own and hope for the best. This one drafts the week’s post inside the team’s chat, renders the image, writes the captions — then stops and waits for a human to say go.

RoleDesign engineer — vibecoded
ClientPersonal project
What I ownedDesign · Backend · AI
Timeline2026
StackApps Script · Gemini · Vertex AI · Cloud Run · Puppeteer
OutcomeA reusable agent engine — swap the brand, keep the human in the loop.
Problem

Social content is either a chore or a runaway robot.

Doing it by hand is relentless; handing it to a fully autonomous bot is risky. The useful middle — an agent that proposes and prepares but never publishes alone — barely exists.

How it works

An agent loop with a human gate.

  1. 01
    Weekly nudge

    A Monday trigger drops a fresh post idea into a chat space.

  2. 02
    Chat, naturally

    The team refines it in plain language — “punchier title”, “other news”, “ok, generate”.

  3. 03
    Gemini drafts

    An agent loop calls Gemini through Vertex AI with a set of typed tools.

  4. 04
    Rendered

    A Cloud Run service turns the post into a ready-to-share PNG.

  5. 05
    Human approves

    The agent posts a draft and waits — it never publishes on its own.

The whole interaction lives in Google Chat — the agent proposes a draft and waits for a human. The post image is rendered by the engine from a template.
What I builtDeep dive

Tools, a queue, and a renderer.

  • Chat as I/O

    Google Chat is the whole interface — people talk, the agent replies.

  • Fast webhook

    doPost acks instantly and enqueues; a per-minute worker drains the queue and runs the loop.

  • Typed tools

    Gemini calls plain, swappable tools (search_news, generate_post_*) — prompts and tools are data, not code.

  • Rendered images

    A headless-Chromium renderer on Cloud Run turns post data into slides.

  • Config, not secrets

    Everything brand-specific lives in Script Properties — the repo is a reusable engine.

Why it matters

A vendor-neutral engine, not a one-off.

The model sits behind a thin interface, so swapping it is a config change, not a rewrite — built to be cloned and rebranded.

More Building©2026