M

$15,400 from YouTube + TikTok + Instagram Using Only Claude & $20

18 min readView source ↗

Cover image

A laptop. A $20 Claude subscription. No camera, no editor, no team. That was my whole setup five months ago.

Today the system runs across three platforms at the same time. YouTube (long form and Shorts). TikTok. Instagram Reels. Same source content, three completely different audiences, three separate income streams stacked on top of each other.

Last month I cleared $15,400. Claude wrote every script. ElevenLabs voiced every word. CapCut assembled every clip. A 130 line Python script published to all three platforms while I slept. I spent maybe four hours a week running the system.

This is a long playbook. Every prompt is copy paste ready. The code at the end actually runs. You will probably want to come back to this, so save it now and start with whichever part you need today.


What is inside

  1. Why three platforms beat one
  2. The actual income breakdown at $15K
  3. PROMPT: niche selection
  4. The content factory pipeline
  5. PROMPT: master cross platform script
  6. Voiceover and visual assembly
  7. PROMPT: platform specific metadata in JSON
  8. The posting cadence that compounds
  9. The full monetization stack
  10. Seven mistakes that cost me three months
  11. BONUS: auto publishing pipeline (Claude prompt + Python script)
  12. Scheduling the whole thing on autopilot
  13. The save and apply checklist

1. Why three platforms beat one

Most people pick one platform and grind. That is a mistake. Each platform pays differently, ranks differently, and reaches a different audience. Running all three at once is not three times the work. With Claude it is about 1.4 times the work for roughly 4 to 5 times the income.

Here is what each platform actually pays in 2026:

Platform              Revenue per million views     Real bottleneck
YouTube long form     $4,000 to $30,000 (RPM)       script quality
YouTube Shorts        $50 to $400                   hook in first second
TikTok Creator Rewards $400 to $1,500               watch time
TikTok Shop affiliate $2,000 to $20,000             product fit
Instagram Reels Bonus $200 to $1,200                shareability
Instagram brand deals $500 to $5,000 per post       follower count

A single video idea, repurposed correctly, hits all six of these revenue lines at once. That is the leverage nobody talks about.


2. The actual income breakdown at $15K

Here is what an actual working channel pulls when all three platforms are running. These are roughly my numbers from last month:

Stream                              Monthly
YouTube long form (AdSense)         $5,200
YouTube Shorts (AdSense)            $480
TikTok Shop affiliate               $3,100
TikTok Creator Rewards              $620
Instagram Reels Bonus               $740
Instagram brand collab (one)        $2,500
Cross platform affiliate links      $1,800
Digital product (one PDF)           $960
Total                               $15,400

Article image

No single stream is the whole pie. That is the point. One platform changes its algorithm, you lose 20 percent. You do not lose the business.


3. PROMPT: niche selection

I picked a niche I liked the first time. Got crushed. The niche has to win on three filters: it has to monetize, it has to be visually demonstrable for short form, and it has to have enough depth for long form YouTube. Most niches fail at least one.

Run this before you build anything:

Act as a multi platform content strategist.

I want to launch a faceless content brand running on YouTube long form, 
YouTube Shorts, TikTok, and Instagram Reels at the same time.

Analyze these niches: [list 5 to 7 niches]

For each, score from 1 to 10 on:
1. YouTube RPM potential
2. TikTok Shop product availability
3. Instagram Reels engagement curve
4. Visual demonstration potential
5. Long form storytelling depth
6. Audience purchase intent
7. Competition saturation

Then give me:
- the one niche that wins on all three platforms
- the niche that wins only on YouTube
- the niche that wins only on short form
- one untapped sub niche nobody is doing across all three

Final recommendation with reasoning.

The niches that almost always win the cross platform game are personal finance, health and supplements, AI tools, home and tech gadgets, and self improvement. The niches that lose are anything you cannot demonstrate visually in 8 seconds.


4. The content factory pipeline

Not theory, the exact path from an empty Notion page to nine pieces of distributed content:

One topic
   |
   v
Claude: deep research and angle selection
   |
   v
Claude: long form YouTube script (8 to 12 min)
   |
   v
ElevenLabs: full voiceover
   |
   v
CapCut: long form assembly with stock footage
   |
   v
Claude: extract 4 short form scripts from the long form
   |
   v
CapCut: cut 4 vertical shorts (9:16) from same footage
   |
   v
Claude: write 3 platform specific captions for each short
   |
   v
Auto publish script: 1 long form, 4 Shorts, 4 TikToks, 4 Reels

Thirteen pieces of content from one idea. Time investment for the whole batch: about 3 hours once the system is dialled in. Until you bolt on the auto publishing layer in Part 11, the bottleneck is uploading. After that, the bottleneck disappears.


5. PROMPT: master cross platform script

This single prompt does most of the heavy lifting. It outputs a long form YouTube script and the four short form clips at the same time, so nothing is wasted.

You are a senior multi platform scriptwriter for faceless content brands.

Topic: [topic]
Target audience: [audience]
Niche: [niche]
Channel voice: [educational and direct, or storytelling, or list based]

Output the following in order:

1. LONG FORM YOUTUBE SCRIPT (8 to 10 minutes)
   - Hook: pattern interrupt in the first 20 seconds, no greeting
   - Open loop: tease the payoff at the start
   - Body: 4 to 6 sections with [VISUAL: description] tags
   - Soft CTA at the end (no begging)
   - Spoken English, not essay English
   - Include [PAUSE] markers

2. FOUR VERTICAL SHORT SCRIPTS (45 to 60 seconds each)
   Each script must:
   - Open with a 3 second hook that works without sound
   - Cover ONE single insight from the long form
   - End with a curiosity gap, not a sales line
   - Include on screen text directions
   - Include a vertical visual cue for every 5 seconds

3. FOR EACH SHORT, GIVE THREE CAPTION VARIATIONS
   - One for TikTok (loose, 100 chars, no hashtag spam)
   - One for Instagram Reels (medium, hook in first line, 5 hashtags)
   - One for YouTube Shorts (SEO heavy, includes keyword, 3 hashtags)

4. TITLES
   - Long form YouTube title (under 60 chars, curiosity hook)
   - 4 short form hooks (one per short, under 50 chars)

5. ESTIMATED TOTAL RUNTIME and 3 thumbnail concepts for the long form

Optimize for: cross platform repurposing without each piece feeling recycled.

This single prompt replaces a scriptwriter at $200 per video, a social media manager at $40 per post, and an SEO specialist at $50 per upload. One run, a week of content.


6. Voiceover and visual assembly

ElevenLabs is the entire voiceover layer. The free plan covers a couple of short videos so you can test the workflow. The $22 plan handles a full publishing schedule across all three platforms.

A practical tip nobody tells you: do not use the default ElevenLabs voices. Every faceless channel uses them and your audience knows. Clone a custom voice from a 30 second sample (royalty free voice acting marketplaces have these for under $10) and your channel sounds unique.

Article image — "https://elevenlabs.io/"

For visuals, the stack is simple. Pexels and Pixabay for stock footage. Canva or CapCut auto captions. CapCut beat reactor for syncing cuts to the audio. The long form video assembles in about 90 minutes once you have the script and voiceover. Each short cuts down to 15 minutes.


7. PROMPT: platform specific metadata in JSON

I had a video with 600 views that should have had 60,000. Script was solid. Voice was clean. Title was a disaster.

Each platform wants different metadata. This prompt handles all three at once, and outputs everything as JSON so the auto publishing script in Part 11 can read it directly.

Act as a cross platform SEO specialist.

Video topic: [topic]
Niche: [niche]
Script summary: [3 sentence summary]
Hook line: [your opening line]

Output ONLY valid JSON, no markdown fences, no preamble, in this exact schema:

{
  "youtube": {
    "title": "under 60 chars, includes main keyword, curiosity trigger",
    "description": "250 words, SEO optimized, includes timestamps, 3 affiliate placeholder links, soft CTA",
    "tags": ["array", "of", "15", "tags", "broad", "to", "specific"],
    "category": "22",
    "privacy": "public",
    "chapters": [
      {"timestamp": "00:00", "title": "chapter title"}
    ],
    "pinned_comment": "single comment that boosts engagement"
  },
  "instagram": {
    "caption": "200 words, hook in first line, story driven, soft CTA, 8 hashtags at end",
    "cover_text": "4 words max, high contrast"
  },
  "tiktok": {
    "caption": "under 100 chars including hashtags, conversational, no marketing tone, 5 hashtags",
    "cover_text": "4 words max, high contrast"
  }
}

Critical rules:
- Output JSON only
- All strings must escape internal quotes properly
- TikTok caption character limit is hard
- Each platform caption must read native to that platform, not translated

You will see in Part 11 why JSON output matters. The script literally reads this file.


8. The posting cadence that compounds

Not theory, the schedule that built it:

Monday       1 long form YouTube      from new topic
Tuesday      1 TikTok + 1 Reel        cut from Monday's long form
Wednesday    1 YouTube Short          cut from Monday's long form
Thursday     1 TikTok + 1 Reel        different angle of same long form
Friday       1 YouTube Short          fourth angle of same long form
Saturday     2 TikTok + 1 Reel        engagement bait, polls, questions
Sunday       rest, review analytics

One new long form per week and twelve to fourteen short form pieces, all from the same source. Total time: 4 to 5 hours including the long form. The algorithm on each platform sees consistent posting and starts pushing.

The one rule I never break: do not post the exact same vertical clip on TikTok and Instagram Reels on the same day. The platforms detect it and demote both. Either rework the captions and on screen text, or stagger by 48 hours.


9. The full monetization stack

The biggest leap in income is not from getting more views. It is from layering revenue streams on the same audience.

Month 1 to 2, you build only. Zero monetization, just publishing.

Month 3, AdSense unlocks on YouTube. Add affiliate links to every description. Pick three to five products you actually use, link them in every long form description and pinned comment.

Month 4, add TikTok Shop. Pick one product per video and weave it into the script naturally. Not a shill, an example. The commission stacks fast once a single video starts ranking.

Article image

Month 5, add Instagram brand deals. Even at 10K followers you can charge $300 to $800 per post in a profitable niche. Use this outreach prompt:

Write a 3 paragraph cold pitch to a brand named [brand].

I run a faceless content brand in [niche] across YouTube, TikTok and Instagram.
My combined monthly reach is [X] views.
My audience is [audience description].

The pitch must:
- Open with a specific compliment about their recent product or campaign
- Pitch a 3 video package (1 long form, 1 TikTok, 1 Reel) for [price]
- Include 2 sentences on why my audience converts
- End with a clear single ask, not a request for a meeting

Month 6, launch one digital product. A 20 page PDF in your niche sold at $17 to $27 will outperform every other monetization layer per hour of work. Claude writes the entire PDF in 90 minutes if the prompt is built right.


10. Seven mistakes that cost me three months

I will save you the lessons I paid for.

  • One. Posting on all three platforms before any one of them was working. Nail YouTube long form first, then layer short form on top.
  • Two. Trying to grow each platform separately. They are not separate channels. They are one brand. Same name, same logo, same voice, same colors across all three.
  • Three. Skipping analytics for the first 60 days. The data tells you exactly what to make next. If a TikTok of a specific section of your long form blows up, that exact angle is your next long form.
  • Four. Using the same opening hook on all three platforms. YouTube wants curiosity. TikTok wants a pattern interrupt. Instagram wants emotional resonance. Different platforms, different brain modes.
  • Five. Quitting at video 15. The cross platform algorithm needs roughly 25 to 30 pieces of content before it understands what you are about. Most people quit at 12.
  • Six. Running ads to grow before the system was profitable organically. If it does not work organic, paid will not save it.
  • Seven. Outsourcing the script to a freelancer at $200 a pop. Claude writes a better script for $0.05 in API costs and never misses the brief.

11. BONUS: auto publishing pipeline (Claude prompt + Python script)

This is the part nobody else writes about. Once you stop manually uploading to three platforms, the whole system unlocks. You stop being a content creator and become a content engineer.

The architecture:

Finished long video (mp4)  +  Vertical short (mp4)  +  meta.json
                          \         |         /
                           \        |        /
                            v       v       v
                      publish.py orchestrator
                      |          |          |
                      v          v          v
                  YouTube    Instagram    TikTok
                  Data API   Graph API   Content API

One command, three platforms, zero clicks. Here is the full working script.

> Step 1: Generate the metadata JSON

Use the metadata prompt from Part 7. Save Claude's output as meta.json next to your video files. The script below reads from that file directly.

> Step 2: The Python orchestrator

Save this as publish.py. Install once with pip install google-auth google-auth-oauthlib google-api-python-client requests.

"""
publish.py
Posts one video to YouTube, Instagram and TikTok in a single command.

Usage:
    python publish.py --video ./out/video.mp4 \
                      --short-video ./out/short.mp4 \
                      --short-public-url https://your.cdn/short.mp4 \
                      --metadata ./out/meta.json

Required env vars:
    YT_CLIENT_SECRETS    path to OAuth client secrets JSON from Google Cloud
    IG_USER_ID           Instagram Business account ID
    IG_ACCESS_TOKEN      long lived Graph API token
    TT_ACCESS_TOKEN      TikTok Content Posting API token
"""

import os, json, time, argparse, requests
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials

def upload_youtube(video_path, meta):
    SCOPES = ["https://www.googleapis.com/auth/youtube.upload"]
    creds = None
    if os.path.exists("yt_token.json"):
        creds = Credentials.from_authorized_user_file("yt_token.json", SCOPES)
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                os.environ["YT_CLIENT_SECRETS"], SCOPES)
            creds = flow.run_local_server(port=0)
        with open("yt_token.json", "w") as f:
            f.write(creds.to_json())

    yt = build("youtube", "v3", credentials=creds)
    body = {
        "snippet": {
            "title": meta["youtube"]["title"],
            "description": meta["youtube"]["description"],
            "tags": meta["youtube"]["tags"],
            "categoryId": meta["youtube"].get("category", "22"),
        },
        "status": {
            "privacyStatus": meta["youtube"].get("privacy", "public"),
            "selfDeclaredMadeForKids": False,
        },
    }
    media = MediaFileUpload(video_path, chunksize=-1, resumable=True)
    request = yt.videos().insert(part="snippet,status", body=body, media_body=media)
    response = None
    while response is None:
        status, response = request.next_chunk()
        if status:
            print(f"  YouTube {int(status.progress() * 100)}%")
    return f"https://youtu.be/{response['id']}"

def upload_instagram(public_video_url, meta):
    user_id = os.environ["IG_USER_ID"]
    token = os.environ["IG_ACCESS_TOKEN"]

    create = requests.post(
        f"https://graph.facebook.com/v19.0/{user_id}/media",
        data={
            "media_type": "REELS",
            "video_url": public_video_url,
            "caption": meta["instagram"]["caption"],
            "access_token": token,
        },
    ).json()
    container_id = create["id"]

    for _ in range(20):
        s = requests.get(
            f"https://graph.facebook.com/v19.0/{container_id}",
            params={"fields": "status_code", "access_token": token},
        ).json()
        if s.get("status_code") == "FINISHED":
            break
        time.sleep(15)

    publish = requests.post(
        f"https://graph.facebook.com/v19.0/{user_id}/media_publish",
        data={"creation_id": container_id, "access_token": token},
    ).json()
    return publish.get("id")

def upload_tiktok(video_path, meta):
    token = os.environ["TT_ACCESS_TOKEN"]
    file_size = os.path.getsize(video_path)

    init = requests.post(
        "https://open.tiktokapis.com/v2/post/publish/video/init/",
        headers={"Authorization": f"Bearer {token}"},
        json={
            "post_info": {
                "title": meta["tiktok"]["caption"],
                "privacy_level": "PUBLIC_TO_EVERYONE",
                "disable_duet": False,
                "disable_comment": False,
                "disable_stitch": False,
            },
            "source_info": {
                "source": "FILE_UPLOAD",
                "video_size": file_size,
                "chunk_size": file_size,
                "total_chunk_count": 1,
            },
        },
    ).json()
    upload_url = init["data"]["upload_url"]
    publish_id = init["data"]["publish_id"]

    with open(video_path, "rb") as f:
        requests.put(
            upload_url,
            headers={
                "Content-Range": f"bytes 0-{file_size - 1}/{file_size}",
                "Content-Type": "video/mp4",
            },
            data=f.read(),
        )
    return publish_id

def main():
    p = argparse.ArgumentParser()
    p.add_argument("--video", required=True, help="Long form mp4")
    p.add_argument("--short-video", required=True, help="Vertical 9:16 mp4")
    p.add_argument("--short-public-url", required=True, help="Public URL for IG")
    p.add_argument("--metadata", required=True, help="meta.json from Claude")
    args = p.parse_args()

    with open(args.metadata) as f:
        meta = json.load(f)

    results = {}
    for name, fn in [
        ("youtube", lambda: upload_youtube(args.video, meta)),
        ("instagram", lambda: upload_instagram(args.short_public_url, meta)),
        ("tiktok", lambda: upload_tiktok(args.short_video, meta)),
    ]:
        print(f">>> {name}")
        try:
            results[name] = fn()
            print(f"  done: {results[name]}")
        except Exception as e:
            results[name] = f"failed: {e}"
            print(f"  failed: {e}")

    print("\n=== Results ===")
    print(json.dumps(results, indent=2))

if __name__ == "__main__":
    main()

Step 3: API access reality check

Honest version. Each platform requires setup before the script works the first time.

YouTube. Easiest. Create a Google Cloud project, enable YouTube Data API v3, download OAuth client secrets, set the path as YT_CLIENT_SECRETS. First run opens a browser, you authorize once, the token saves to yt_token.json. Daily upload quota is small by default, you apply for more inside the API console.

Instagram. Medium. You need a Business or Creator account, connected to a Facebook Page, plus a Meta developer app with Instagram Graph API permissions. Generate a long lived access token (60 days) from Graph API Explorer. Instagram Reels require the video to be publicly accessible by URL, so host on Cloudflare R2, S3 or a simple Bunny CDN bucket.

TikTok. Hardest. Apply to TikTok for Developers, request the Content Posting API direct post scope. Approval takes a few days. Until then, use the sandbox (videos are uploaded as private drafts) for testing.

If you want to skip the API setup entirely, the no code path is real. Use n8n (self hosted, free) or Make.com ($9 per month). Both have native nodes for all three platforms. The flow is identical: Webhook trigger receives a folder path, reads meta.json, posts to YouTube + IG + TikTok in three parallel branches. You build it once in 30 minutes and never touch it again.


12. Scheduling the whole thing on autopilot

Once publish.py works, schedule it. Two options.

Option A, your own machine. Cron on Linux or Mac. Open crontab -e and add:

0 14 * * 1 cd /home/you/factory && python publish.py --video out/week42.mp4 --short-video out/week42_short.mp4 --short-public-url https://cdn.you/short42.mp4 --metadata out/week42_meta.json

That runs every Monday at 14:00. Pre stage your videos on Sunday, the rest is automatic.

Option B, GitHub Actions, free for public repos and reasonable for private. Create .github/workflows/publish.yml:

name: weekly publish
on:
  schedule:
    - cron: "0 14 * * 1"
  workflow_dispatch:

jobs:
  ship:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"
      - run: pip install google-auth google-auth-oauthlib google-api-python-client requests
      - run: |
          python publish.py \
            --video out/this_week.mp4 \
            --short-video out/this_week_short.mp4 \
            --short-public-url ${{ secrets.SHORT_URL }} \
            --metadata out/this_week_meta.json
        env:
          YT_CLIENT_SECRETS: ${{ secrets.YT_CLIENT_SECRETS }}
          IG_USER_ID: ${{ secrets.IG_USER_ID }}
          IG_ACCESS_TOKEN: ${{ secrets.IG_ACCESS_TOKEN }}
          TT_ACCESS_TOKEN: ${{ secrets.TT_ACCESS_TOKEN }}

Drop the API tokens into repository Secrets, push the videos to the repo or a connected storage bucket, the workflow runs every Monday with no machine of yours involved.

This is what hands free actually looks like. The only manual step left in the entire pipeline is approving Claude's script and naming the output file. Everything else is automatic.


13. The save and apply checklist

Tools and starting cost:

Claude              everything written          $20 per month
ElevenLabs          voiceover                   free or $22 per month
CapCut              video editing               free
Canva               thumbnails and graphics     free or $15 per month
Pexels and Pixabay  stock footage               free
TubeBuddy           YouTube SEO                 free tier
Notion              content calendar            free
Bunny CDN           public video hosting        $1 to $5 per month
Total                                           $20 to $62 per month

The timeline:

Month 1          $0 to $200          building, learning the system
Month 2 to 3     $400 to $1,500      first algorithm pickup, AdSense unlock
Month 4 to 6     $2,000 to $7,000    TikTok Shop kicks in, affiliate compounds
Month 6 to 12    $7,000 to $18,000   brand deals, product, full stack
Year 2+          $15,000 to $40,000  second channel, products, course

Your week one execution checklist:

Day 1   Run niche selection prompt, lock niche
Day 2   Run master script prompt for first video
Day 3   Record voiceover in ElevenLabs, assemble in CapCut
Day 4   Generate JSON metadata, post manually to verify it parses
Day 5   Set up YouTube API access
Day 6   Set up Instagram Graph API + public video host
Day 7   Set up TikTok sandbox, run publish.py end to end

By day 8 you have a fully working pipeline. Every week after that is just feeding in topics.


What is actually hard

Reading this is the easy part. The hard part is closing the tab and writing your first niche analysis prompt today. The same Claude tier that runs my $15K system runs on $20 a month. The same CapCut that assembles my videos is the free tier you can download tonight. The bottleneck is never the tools. It is whether you start now or save this and forget about it.

If you want the rest of the prompts, the working n8n flow file, and the case studies I do not put in public articles, I post them first in my Telegram. Most of what I share there never makes it onto Medium or anywhere else.

Link is https://t.me/+JmDeelv5UCwwMTcy.

The system above runs whether you are there or not. The only question is whether it runs for you, or for someone who reads this same article tomorrow and actually starts.

Article image

Thank you for reading to the end, save it to your bookmarks so you don't lose it 📝

Related articles