AGENTUPDATE JOURNAL

Letting an Agent Do the Marketing: How I Promote a Website with Composio + Claude

Letting an Agent Do the Marketing: How I Promote a Website with Composio + Claude
Table of Contents

How I replaced a $2,000/month marketing stack with one MCP server and a Claude session — building backlinks, owned distribution channels, and a self-running content loop for 1000usdinchina.com on the Composio free tier.

TL;DR

  • Traditional web marketing is slow, expensive, and platform-by-platform. Composio turns 250+ apps into one MCP endpoint you can drive from Claude.
  • On the free tier you get 20,000 tool calls/month across 250+ apps (TG, FB, YouTube, Reddit, LinkedIn, Notion, X…), capped at 60 requests/minute. That's enough to run a real multi-channel campaign.
  • I wired Composio into Claude Code with one claude mcp add command, then pointed it at my site's own content API. The agent now generates, shortens, cross-posts, and tracks content across Telegram, Facebook, YouTube Shorts, Reddit, and a Notion command center — on a 5-hour durable cron loop.
  • This isn't spam. Owned outlets are fully autonomous; external communities get a 2-minute human gate. That's the line that keeps the domain off blacklists.

1. The problem with "promote your website" the old way

The standard playbook for a new website looks like this:

Channel Traditional approach Real cost Time
Backlinks / SEO Buy guest posts, do outreach, hire an agency $50–$500 per placement weeks each
Cold email Lead lists + a sending tool (Instantly, Lemlist) $50–$300/mo + domain-warmup hell ongoing
Paid ads Google/Meta CPC $0.50–$5.00 per click, burns budget when you stop ongoing
Social media One human posting to 4–5 platforms manually your evenings every day
Agency retainer Outsource all of the above $1,000–$5,000/mo monthly

Three things are broken here: every channel is a separate login, a separate tool, and a separate silo. The moment you want the same piece of content on Telegram, Facebook, YouTube, and Reddit, you're copying and pasting for 20 minutes. So you don't do it. So the site stays invisible.

Composio's pitch is small but radical: one MCP server, one conversation, every app. You stop being a human copy-paste machine and start being an editor. The agent ships; you approve.


2. What Composio actually is (and what free users get)

Composio is a hosted gateway that speaks MCP (Model Context Protocol). Instead of writing OAuth flows and API clients for Telegram, Reddit, Facebook Graph, YouTube Data, Notion, and so on, you connect each app once through Composio's dashboard. Then any MCP-aware client — Claude Code, Claude Desktop, Cursor — can call those apps' actions as tools.

The headline feature for marketing is the Tool Router: a single MCP URL that exposes 20,000 tools across 850+ apps, loaded just-in-time. The model isn't drowned in 20,000 tool definitions; it loads the ones the task needs. One endpoint, your whole distribution surface.

Free tier — what you actually get

Free (Individual)
Price $0, forever
Tool calls 20,000 / month
Apps 250+ integrations (TG, FB, YT, Reddit, LinkedIn, Notion, X, WhatsApp, Instagram, email, SEO tools…)
Rate limit 60 requests / minute / API key
Security SOC 2 Type 2, encrypted tokens at rest & in transit

For comparison, the first paid step is Growth at $29/mo (200k calls), then Scale at $229/mo (2M calls). There's also a Startups program granting up to $25,000 in credits for qualifying teams.

Is 20,000 calls enough? For a solo site, easily. A single cross-post burst — generate draft, shorten link, post to TG + FB + a YT Short + log to Notion — is ~8–12 calls. That's ~1,600 campaigns a month before you hit the ceiling. You'll run out of audience before you run out of calls.


3. Traditional vs. Composio-powered marketing

Dimension Traditional Composio + Claude
Tools needed 5–10 separate SaaS logins 1 MCP server
Setup time Days (OAuth, API keys, warmups) ~30 min (one claude mcp add)
Cost to start $50–$300/mo minimum $0
Backlinks Bought per placement ($50–$500 ea.) Earned — content at scale across owned channels drives referrals + organic links
Distribution One platform at a time, manual Fan-out in one turn — same content, every channel
Discovery You read every thread by hand Agent watches TG/Reddit for keywords, queues value-first replies
Cost when you stop Ads stop = traffic dies Owned channels (your TG/FB/YT) persist forever
Human time Hours/day ~2 min/day approving the review queue

The shift: stop renting attention (ads) and start owning channels. A Facebook Page, Telegram channel, and YouTube channel you populate for free compound forever. Composio is the engine that makes populating them cheap enough to actually do.


4. Setting up Composio in Claude (the detailed part)

There are two paths. Path A is the 90% case. Path B is for when you want programmatic control.

Prerequisites

  • A Composio account + API key (dashboard → API Keys)
  • Claude Code installed (or Claude Desktop)
  • The apps you want to drive already connected in your Composio dashboard (TG, FB, YT, Reddit, Notion — click Connect, do the OAuth once)

Path A — Composio Connect (easiest)

  1. Install Claude Code, then start it in your project folder:
    cd your-project-folder
    claude
    
  2. On composio.dev, open the Composio MCP page → choose Claude Code → copy the install command. It looks like:
    claude mcp add --transport http composio-composio "YOUR_MCP_URL" --headers "X-API-Key:YOUR_COMPOSIO_API_KEY"
    
  3. Restart Claude Code so it picks up the server:
    exit
    claude
    
  4. Verify it registered:
    claude mcp list
    # you should see: composio-composio  ✓ connected
    
  5. On first use, Claude hands you an auth link. Open it, approve, done. From here on you talk in plain English: "Post a draft to my Telegram channel and my Facebook Page."

That single MCP URL is the Tool Router — it dynamically surfaces Telegram, Facebook, YouTube, Reddit, Notion, and 845 other apps as the task requires. You never configure them individually inside Claude.

Path B — Generate the MCP URL yourself (SDK)

Use this if you want the URL pinned to specific toolkits or spun up per-session:

pip install composio-core python-dotenv
# generate_mcp_url.py
import os
from composio import Composio
from dotenv import load_dotenv

load_dotenv()
client = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))

session = client.create(
    user_id=os.getenv("USER_ID"),
    toolkits=["composio"],          # add more: "telegram","reddit",...
)
print(session.mcp.url)
python generate_mcp_url.py
# copy the printed command:
claude mcp add --transport http composio-composio "<MCP_URL>" --headers "X-API-Key:<COMPOSIO_API_KEY>"

A `.env` you'll want

COMPOSIO_API_KEY=your_composio_api_key_here
USER_ID=any_unique_identifier

My actual permission posture

Wiring an agent to your social accounts is powerful and a little scary. Two guardrails I keep on:

  • dry_run_default: true — nothing ships until I explicitly say post.
  • human_gate_external_replies: true — agent can post to my own outlets freely, but replies in other people's communities sit in a review queue first. Mass-posting into subreddits/Telegram groups you don't own gets your domain blacklisted fast. Don't.

"Promotion" decomposes into three loops. Composio is what makes each one cheap enough to actually run.

Loop 1 — Owned channels (100% autonomous, this is your backbone)

The durable asset isn't a backlink; it's distribution you control. Create each outlet once (5 min each), then let the agent feed them:

  • Telegram channel — daily tip / route spotlight / cost breakdown
  • Facebook Page — trip showcases, "How much does China cost?" posts
  • YouTube Shorts — auto-rendered vertical clips from route data
  • LinkedIn page — long-form travel-budget analysis (good for B2B/affiliate credibility)
  • Notion dashboard — your command center: scheduled drafts, posted log, per-post metrics

Once these exist, every piece of content your engine produces fans out to all of them in a single turn. This is the part that replaces "one human posting to 4 platforms every evening."

Composio doesn't buy backlinks — and you shouldn't either (Google penalizes bought links, and they're $50–$500 a pop). What it does is make earning them cheap:

  • Volume + consistency across channels → topical authority → people quote you → organic links.
  • Cross-posted data assets ("Here's the real cost of 7 days in Beijing") get picked up by travel blogs and Reddit wikis.
  • Short links + tracking → every outbound piece is measurable, so you double down on what converts.

The honest framing: Composio makes link-worthy content production free, so backlinks become a byproduct of doing a lot of good work, not a line item.

Loop 3 — Discovery & value-first replies (human-gated)

This is where the real growth is — answering questions in communities where your audience already lives. The agent watches Telegram and Reddit for trigger keywords (e.g. "1000 usd china", "how much does china cost", "中国 旅游 费用"), drafts a genuinely useful reply using your site's data, and queues it. You approve in batches (~2 min/day). The reply links back to a relevant deep page or a shortened trip link.

This loop is gated on purpose. Unattended mass-replies = ban + domain blacklist. A thin human gate = trust + compounding presence.


6. Case study: marketing 1000usdinchina.com

This is where I stop being abstract. 1000usdinchina.com is a travel-budget estimator for foreign tourists visiting China: enter budget, days, entry/exit cities, month, party size → it returns a recommended multi-city route with a full cost breakdown (stay / food / transport / sights / local transit). 67 cities covered, 4 locales (en/ja/ko/ru), all running on Cloudflare Workers + D1 + Workers AI.

What I built with Composio

The site already had two endpoints begging to be a content engine:

  • /api/ai/chat (SSE) — emits a structured {draft, totalUsd, breakdown, routeNames} payload for any trip scenario.
  • /api/shorten — mint a trackable short link per trip.

I bolted Composio on as the distribution layer. The architecture is a two-layer loop:

graph TD
    A["Use-case Seed"] -->|"Offline Script Generation"| B["Ready-to-post Draft"]
    B --> C["Local Drafts Pool"]
    C -->|"Durable Cron Loop every 5h"| D{"Composio Distribution Layer"}
    D -->|Telegram| E["Telegram Channel"]
    D -->|Facebook| F["Facebook Page"]
    D -->|YouTube| G["YouTube Shorts Auto Upload"]
    D -->|Notion| H["Notion Dashboard"]
    E --> I["Published Logs and Metrics"]
    F --> I
    G --> I
    H --> I
    I -->|"Data Feedback"| A

The owned outlets (real IDs from my config)

{
  "telegram_channel": "@www1000usdinchinacom",
  "facebook_page":     "1000usdinchina",
  "youtube_channel":   "Ec W (@ecw8504)",
  "reddit_account":    "connected",
  "notion_account":    "ACTIVE — notion task & metrics dashboard"
}

The safety config that keeps me sane

{
  "rate_limits": {
    "telegram_self_post_per_day": 4,
    "facebook_self_post_per_day": 3,
    "youtube_self_post_per_day": 1,
    "reddit_self_post_per_day": 2,
    "external_reply_per_day": 5,
    "min_gap_minutes_between_external": 30
  },
  "safety": {
    "no_autonomous_mass_post_to_external": true,
    "human_gate_external_replies": true,
    "dry_run_default": true
  }
}

Conservative ceilings on my own outlets; a hard stop on autonomous posting into other communities.

The YouTube Shorts pipeline (my favorite part)

This is the thing I could never justify doing by hand. The flow:

  1. promo/scripts/render_short.sh renders a vertical clip from route data into a tmpfile.
  2. The clip is uploaded to a Composio workbench S3 key.
  3. The agent calls the YOUTUBE upload action with that key.

Result: a weekly Short, generated and uploaded while I sleep. Manually this would be an hour of editing + the YouTube Studio UI every single time. I'd never do it. So it never happened. Now it does.

What's gated on me (irreducible, ~2 min/day)

  1. Composio MCP auth — one browser click, done once.
  2. Outlet creation — the TG/FB/YT/LinkedIn accounts themselves, ~5 min each, once.
  3. Approve the review queue — batch value-first replies before they ship.

Everything else is the loop.


7. Costs, limits, and gotchas

What 20k free calls buys me: a 5-hour cron loop posting to 4 owned outlets + logging to Notion, plus a discovery pass, plus a review queue. I am nowhere near the ceiling. The day I am, Growth is $29/mo — still cheaper than a single guest-post placement.

Gotchas I hit so you don't:

  • Reddit blocks anonymous API access. You must go through an authenticated path (Composio handles this) — direct anon calls return nothing useful.
  • Your own app may rate-limit you too. My site's /api/ai/chat enforces a 10-request anonymous limit. The fix: build an offline estimator that mirrors the API logic (gen_drafts_offline.ts) so draft generation is unlimited and not bottlenecked on your edge. Don't hammer your own production endpoint for content.
  • Free tier = 60 req/min. Fine for a solo loop. If you fan out to 15 platforms at once you may bump it — stagger, or use the bulk Multi Execute tool.
  • OAuth is the boring 80%. Connecting each app in the Composio dashboard is unglamorous but it's the work that would have taken you a week of API docs. Do it once, forget it.

8. The takeaway

The old marketing stack asks you to rent attention forever — pay for ads, pay for links, pay an agency, pay per click, and the moment you stop paying, the traffic dies.

The Composio + Claude stack asks you to own distribution outright: build channels you control, populate them at the cost of free tool calls, and let an agent do the copy-pasting nobody actually enjoys. Backlinks stop being something you buy and start being a byproduct of showing up everywhere, consistently, for free.

I'm running this right now for 1000usdinchina.com on the free tier: a Telegram channel, a Facebook Page, a YouTube Shorts pipeline, a Notion command center, and a human-gated discovery loop — all driven from one MCP URL in a Claude session. Total monthly marketing spend: $0. Time per day: ~2 minutes.

If you've got a website sitting invisible because promotion felt too expensive or too tedious, this is the cheapest credible marketing department you'll ever hire.


Sources

This post documents the author's actual Composio setup for 1000usdinchina.com. Tool counts and tier limits reflect Composio's published pricing as of June 2026 — verify current numbers before launch.