Automate 7 Projects Marketing with AI for $40

apsquared1 pts0 comments

How We Automate Marketing for 7 Projects on $40/Month โ€” Claude + CodexBlogToggle mode

How We Automate Marketing for 7 Projects on $40/Month โ€” Claude + Codex<br>Inside APSquared's two-assistant marketing machine. Each project gets its own self-contained AI marketing agent, split between Claude and Codex, and the whole operation runs on two $20 subscriptions.

Running a portfolio of small products has one brutal, recurring cost that never shows up on a server bill: marketing every one of them, forever.

At APSquared we ship a lot of little bets โ€” BarGPT, TVFoodMaps, Legally Vibing, Idea Launch, FindMyBnB, WordSmash, and this site itself. Seven products. Each one needs social posts, SEO pages, directory submissions, and someone paying attention to what's working. That's a full-time marketing job I don't have time to do and can't afford to hire for.

So I automated it. The entire marketing operation for all seven projects runs on two AI coding assistants and a combined $40/month โ€” a $20 Claude plan and a $20 Codex plan. No agency, no marketing SaaS stack, no per-seat automation platform.

Here's how it actually works.

๐Ÿง  The core idea: one self-contained agent per repo

The mistake most people make with "AI marketing automation" is building one giant brain that tries to know everything about every product. It hallucinates, it mixes up your projects, and it drifts.

We do the opposite. Every project carries its own marketing agent inside its own repo. Nothing is centralized. A project's agent is just two things living next to the code:

marketing/AGENT.md โ€” the brain. Product facts, brand voice, target channels, budgets, seasonal hooks, and the social account IDs for that specific product. This is the only source of truth the agent is allowed to use.

marketing/logs/ โ€” the memory. What's been posted, which keywords have been used, which directories have been submitted, and a running activity log.

Plus a marketing/TASKS.md file โ€” the human queue, for anything that needs me (more on that below).

The rule that makes it work: an agent never reads outside its own repo at runtime. BarGPT's agent knows nothing about TVFoodMaps. It can't invent a metric, borrow another product's voice, or post to the wrong account, because it literally can't see them. Account IDs and directory seeds get copied in once at setup time, and after that the agent is sealed in its own world.

๐Ÿ” One run = one activity

Each marketing run does exactly one thing. Not "do marketing" โ€” one specific activity type:

social โ€” write 2โ€“3 posts and schedule them for tomorrow via Post Bridge, never same-day, so there's always a review window.

pseo โ€” generate a batch of 3โ€“5 programmatic-SEO pages, each targeting a distinct keyword, through the repo's real content system.

blog โ€” write one substantive article (like this one).

directory โ€” prepare a full submission package for a high-value directory.

engagement โ€” sweep Reddit/X for genuinely relevant threads and draft helpful, non-promotional replies.

The agent picks the activity with the longest gap since it last ran โ€” a dead-simple rotation that keeps every channel warm without me scheduling anything. Then it applies don't-repeat rules against its own logs: no topic from the last 20 posts, no keyword already in the content ledger, no directory already prepared. The memory files aren't decoration โ€” they're what stops the agent from posting the same thing twice.

Every run ends the same way: log it, commit content and marketing-state changes separately, and push.

๐Ÿ“ก How the posts actually go out: Post Bridge

Writing a good post is only half the job โ€” the other half is getting it onto X, Instagram, TikTok, and Facebook without me touching four different apps. That's where Post Bridge does the heavy lifting.

Post Bridge is a single API/CLI that fans one post out to every connected account. We connected each product's social accounts once, and the agent references them by numeric account ID โ€” every project's AGENT.md holds its own list, so BarGPT's agent posts to BarGPT's X, Instagram, and Facebook, and nothing else. When a social run finishes, it schedules each post with a one-liner:

npx postbridge-cli post --caption "" --accounts --schedule ""

A few details that make this reliable instead of chaotic:

Always scheduled, never blasted. Posts go out for tomorrow at roughly 9am / 1pm / 6pm Eastern (converted to UTC, with a little jitter so they don't look robotic). That built-in delay is my review window โ€” I can kill or edit anything before it publishes.

Platform-aware media. Instagram and Facebook refuse text-only posts, so the agent feeds them an image โ€” usually one of the site's own dynamic OG-image routes as the media URL. X can go text-only. If an image can't be produced, it posts the text-only channels and files a task instead of failing the whole run.

Every post is logged with its Post Bridge ID. The response ID goes straight into post-log.md, which is also what the don't-repeat rules read from...

marketing agent post posts projects social

Related Articles