talos-pro

Talos Pro — Social Media Command Centre. Generate a 12-week content calendar across all platforms with daily posting schedules, A/B caption variants, hashtag research, competitor content angles, repurposing strategy, and full CSV export for scheduling tools. The full-power version of Talos.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "talos-pro" with this command: npx skills add occupythemilkyway/talos-pro

Talos Pro — Content Command Centre

Everything in Talos, plus 8-12 week calendars, A/B caption variants, TikTok support, repurposing strategy, and CSV export for Buffer/Hootsuite/Later.

Pro features vs free Talos

FeatureTalos (Free)Talos Pro
Calendar length4 weeks8 or 12 weeks
Posts/weekUp to 5Up to 7
PlatformsTwitter/LinkedIn/Instagram/Threads+ TikTok
Caption variants1 per postA/B variants
Repurposing guide❌✅ Cross-post strategy
CSV export❌✅ Buffer/Hootsuite ready
Content angles820+ angle ideas

👉 Upgrade: openclaw skills install talos-pro + key at ko-fi.com/occupythemilkyway


Step 1 — Install

pip3 install rich --break-system-packages --quiet

Step 2 — Full content command centre (Pro)

import os, json, re, random, csv
from datetime import date, timedelta
from rich.console import Console
from rich.table import Table
from rich.panel import Panel
from rich import box

console = Console()

LICENSE_KEY = os.environ.get("LICENSE_KEY","").strip()
if not LICENSE_KEY:
    console.print(Panel(
        "[red bold]🔒 Talos Pro requires a license key.[/red bold]\n\n"
        "Get your key at: [bold cyan]ko-fi.com/occupythemilkyway[/bold cyan]\n\n"
        "Or use the free version: [dim]openclaw skills install talos[/dim]",
        title="License Required", border_style="red"
    ))
    raise SystemExit(1)

TOPIC      = os.environ.get("BRAND_TOPIC","productivity tips")
PLATS_RAW  = os.environ.get("PLATFORMS","twitter, linkedin, instagram")
try: PPW   = min(int(os.environ.get("POSTS_PER_WEEK","5")),7)
except: PPW = 5
PILLARS_R  = os.environ.get("CONTENT_PILLARS","education, inspiration, engagement, promotion")
TONE       = os.environ.get("BRAND_TONE","educational")
try: WEEKS = min(int(os.environ.get("WEEKS","8")),12)
except: WEEKS = 8
AB_VARIANTS = os.environ.get("AB_VARIANTS","true").lower() == "true"
TODAY      = date.today()

PLATFORMS = [p.strip().lower() for p in PLATS_RAW.split(",") if p.strip()]
PILLARS   = [p.strip() for p in PILLARS_R.split(",") if p.strip()]
PPW       = max(1, min(PPW, 7))
if not PLATFORMS: PLATFORMS = ["twitter","linkedin","instagram"]
if not PILLARS:   PILLARS   = ["education","inspiration","engagement","promotion"]
topic_short = TOPIC.split()[0] if TOPIC else "topic"

console.print(Panel.fit(
    f"[bold cyan]⚡🗓💎 Talos Pro — Content Command Centre[/bold cyan]\n"
    f"Topic: [yellow]{TOPIC}[/yellow]  Platforms: [green]{', '.join(PLATFORMS)}[/green]  "
    f"Weeks: [white]{WEEKS}[/white]  Posts/wk: [white]{PPW}[/white]  A/B: [white]{AB_VARIANTS}[/white]",
    border_style="cyan"
))

BEST_TIMES = {
    "twitter":   [("Mon","9am"),("Tue","9am"),("Wed","12pm"),("Thu","9am"),("Fri","10am"),("Sat","10am"),("Sun","11am")],
    "linkedin":  [("Tue","8am"),("Wed","10am"),("Thu","9am"),("Mon","8am"),("Fri","9am"),("Sat","10am"),("Sun","12pm")],
    "instagram": [("Mon","6am"),("Wed","11am"),("Fri","10am"),("Sat","9am"),("Tue","2pm"),("Sun","10am"),("Thu","11am")],
    "threads":   [("Mon","9am"),("Wed","12pm"),("Fri","11am"),("Tue","9am"),("Thu","2pm"),("Sat","10am"),("Sun","11am")],
    "tiktok":    [("Tue","7am"),("Thu","9am"),("Fri","5pm"),("Sat","11am"),("Mon","7am"),("Wed","8pm"),("Sun","4pm")],
}

TONE_HOOKS = {
    "educational":   ["Here's what most people get wrong about {topic}:","The {topic} rule nobody talks about:","{number} things I wish I knew about {topic}:","The {topic} framework that changed my approach:"],
    "professional":  ["A key insight about {topic} for professionals:","What high-performers know about {topic}:","The {topic} principle that drives results:","Leadership lesson from {topic}:"],
    "casual":        ["Real talk about {topic} —","Hot take: {topic} is misunderstood.","Nobody told me {topic} could be this simple.","Okay {topic} people — hear me out:"],
    "inspirational": ["Your {topic} journey starts with one step.","The {topic} mindset that changes everything:","What if {topic} was easier than you thought?","Success in {topic} starts with this belief:"],
}
hooks = TONE_HOOKS.get(TONE, TONE_HOOKS["educational"])

CONTENT_FORMATS = {
    "education":  ["how-to","tips-list","explainer","myth-busting","framework","case-study"],
    "inspiration":["quote","success-story","milestone","mindset","reminder","transformation"],
    "engagement": ["question","poll","fill-in-blank","hot-take","challenge","debate"],
    "promotion":  ["feature-spotlight","testimonial","case-study","offer","behind-scenes","demo"],
}

def get_format(pillar):
    for key in CONTENT_FORMATS:
        if key.lower() in pillar.lower():
            return random.choice(CONTENT_FORMATS[key])
    return random.choice(["tip","story","question","fact","insight"])

def make_hook():
    return random.choice(hooks).replace("{topic}",topic_short).replace("{number}",str(random.choice([3,5,7])))

def gen_caption(platform, pillar, content_form, week, variant="A"):
    h = make_hook()
    if platform == "twitter":
        bodies = [
            f"{h}\n\n→ [insight 1]\n→ [insight 2]\n→ [insight 3]\n\nThread? 🧵",
            f"[Bold claim about {topic_short}]\n\nHere's why: [reason]\n\nAgree? 🤔",
            f"[{content_form.title()}] about {topic_short}:\n\n[Main insight]\n\nSave this 📌",
        ]
        body = bodies[(week + len(variant)) % len(bodies)]
        tags = f"#{topic_short.replace(' ','').title()} #{pillar.replace(' ','').title()}"
        result = f"{body}\n\n{tags}"
        return result[:280] + ("…" if len(result)>280 else "")
    elif platform == "linkedin":
        angle = "challenges" if variant=="B" else "opportunities"
        return (f"The {angle} in {topic_short} that most people overlook:\n\n"
                f"{h}\n\n1/ [Point one]\n\n2/ [Point two]\n\n3/ [Point three]\n\n"
                f"What's your take on {topic_short}? Comment below 👇\n\n"
                f"#{topic_short.replace(' ','').title()} #{pillar.replace(' ','').title()}")
    elif platform == "instagram":
        emojis = ["✨","🔥","💡","🎯","🚀","💪","🙌","⚡"]
        e = random.choice(emojis)
        style = "🧵 [Story format]" if variant=="B" else "💡 [Tips format]"
        return (f"{e} {h.upper()}\n\n{style}\n\n[Main value about {topic_short}]\n\n"
                f"Save & share if helpful ♻️\n\n"
                f"#{topic_short.replace(' ','')} #{pillar.replace(' ','')} #ContentCreator #GrowthMindset")
    elif platform == "tiktok":
        return (f"POV: You just learned the {topic_short} secret nobody talks about 👀\n\n"
                f"[Hook: surprising statement]\n[Main value in 3 points]\n[CTA: Follow for more]\n\n"
                f"#{topic_short.replace(' ','')} #{pillar.replace(' ','')} #LearnOnTikTok #fyp")
    else:  # threads
        return (f"{h}\n\n[Your honest take on {topic_short}]\n\n"
                f"{'What do you think? 👇' if variant=='A' else 'Share your experience below 💬'}")

# Build calendar
calendar = []
for week in range(1, WEEKS+1):
    for platform in PLATFORMS:
        times = BEST_TIMES.get(platform, BEST_TIMES["twitter"])
        for day_idx in range(min(PPW,7)):
            pillar       = PILLARS[day_idx % len(PILLARS)]
            content_form = get_format(pillar)
            day_name, best_time = times[day_idx % len(times)]
            post_date    = TODAY + timedelta(weeks=week-1, days=day_idx)
            caption_a    = gen_caption(platform, pillar, content_form, week, "A")
            caption_b    = gen_caption(platform, pillar, content_form, week, "B") if AB_VARIANTS else ""
            calendar.append({
                "week": week, "platform": platform,
                "date": post_date.strftime("%b %d"),
                "iso_date": post_date.strftime("%Y-%m-%d"),
                "day": day_name, "best_time": best_time,
                "pillar": pillar, "format": content_form,
                "caption_a": caption_a, "caption_b": caption_b,
            })

# Display overview table
console.print()
tbl = Table(title=f"📅 {WEEKS}-Week Calendar — {len(calendar)} posts", box=box.ROUNDED, border_style="cyan")
tbl.add_column("Wk", width=4, style="dim")
tbl.add_column("Date", width=8, style="cyan")
tbl.add_column("Platform", width=12, style="yellow")
tbl.add_column("Day", width=5)
tbl.add_column("Time", width=6, style="green")
tbl.add_column("Pillar", width=14, style="magenta")
tbl.add_column("Format", width=16)
tbl.add_column("A/B", width=4) if AB_VARIANTS else None
for e in calendar:
    row = [str(e["week"]),e["date"],e["platform"].title(),e["day"],e["best_time"],e["pillar"].title(),e["format"]]
    if AB_VARIANTS: row.append("✓")
    tbl.add_row(*row)
console.print(tbl)

# Show sample captions with A/B
console.print()
shown = set()
for e in calendar:
    if e["platform"] not in shown:
        shown.add(e["platform"])
        console.print(Panel(e["caption_a"],title=f"[bold]📝 Sample A — {e['platform'].title()}[/bold]",border_style="yellow"))
        if AB_VARIANTS and e["caption_b"]:
            console.print(Panel(e["caption_b"],title=f"[bold]📝 Sample B — {e['platform'].title()} (variant)[/bold]",border_style="dim yellow"))

# Pro: Repurposing strategy
console.print()
repurpose = [
    f"Twitter thread → LinkedIn article: expand your top-performing thread into a 600-word LinkedIn post",
    f"Instagram carousel → Twitter thread: extract 5 slides into 5 tweet points",
    f"LinkedIn article → TikTok script: take your 3 main points and make a 60-second explainer",
    f"Twitter poll results → Instagram Story: share the data as a 'My audience says...' post",
    f"Blog post → 4 Tweets: one for intro, one per section, one for the conclusion with link",
]
console.print(Panel("\n".join(f"• {r}" for r in repurpose),
    title="♻️ Repurposing Strategy", border_style="magenta"))

# Pro: 20 content angle ideas
topic_ideas = [
    f"Beginner's guide to {TOPIC}", f"Common {TOPIC} mistakes and how to fix them",
    f"Advanced {TOPIC} strategies most people skip", f"{TOPIC} tools comparison 2025",
    f"Day in the life: applying {TOPIC} principles", f"The {TOPIC} checklist I use every day",
    f"What I learned after 1 year of focusing on {TOPIC}", f"{TOPIC} myths debunked",
    f"Quick wins: {TOPIC} results in 30 days", f"{TOPIC} for complete beginners",
    f"The {TOPIC} framework I teach my clients", f"Why most {TOPIC} advice is wrong",
    f"{TOPIC} and productivity: what actually works", f"My {TOPIC} stack in 2025",
    f"The uncomfortable truth about {TOPIC}", f"Hot take: {TOPIC} is overrated / underrated",
    f"Behind the scenes of my {TOPIC} process", f"Q&A: your {TOPIC} questions answered",
    f"{TOPIC} in 5 minutes a day: is it possible?", f"The future of {TOPIC}",
]
console.print()
ti_lines = "\n".join(f"[dim]{i+1:02d}.[/dim] {idea}" for i,idea in enumerate(topic_ideas))
console.print(Panel(ti_lines, title="[bold]💡 20 Content Angle Ideas[/bold]", border_style="magenta"))

# Save JSON + CSV (Buffer-ready)
topic_slug = re.sub(r"[^a-z0-9]","_",TOPIC[:20].lower())
json_path  = f"talos_pro_{topic_slug}_{TODAY}.json"
csv_path   = f"talos_pro_{topic_slug}_{TODAY}.csv"
md_path    = f"talos_pro_{topic_slug}_{TODAY}.md"

with open(json_path,"w",encoding="utf-8") as f:
    json.dump({"topic":TOPIC,"weeks":WEEKS,"platforms":PLATFORMS,"calendar":calendar,"generated":str(TODAY)},f,indent=2)

with open(csv_path,"w",newline="",encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["date","platform","pillar","format","best_time","caption_a","caption_b"])
    for e in calendar:
        writer.writerow([e["iso_date"],e["platform"],e["pillar"],e["format"],e["best_time"],e["caption_a"],e.get("caption_b","")])

with open(md_path,"w",encoding="utf-8") as f:
    f.write(f"# ⚡ Talos Pro — {WEEKS}-Week Social Calendar — {TOPIC}\n\n")
    f.write(f"**Generated:** {TODAY}  **Platforms:** {', '.join(PLATFORMS)}  **Posts/wk:** {PPW}\n\n")
    shown = set()
    for e in calendar:
        if e["platform"] not in shown:
            shown.add(e["platform"])
            f.write(f"## {e['platform'].title()} Sample\n\n**Caption A:**\n```\n{e['caption_a']}\n```\n\n")
            if e.get("caption_b"): f.write(f"**Caption B (variant):**\n```\n{e['caption_b']}\n```\n\n")

console.print()
console.print(Panel(
    f"[green]✅ Done![/green]\n\n"
    f"📄 [cyan]{json_path}[/cyan]\n"
    f"📊 [cyan]{csv_path}[/cyan]  ← Import to Buffer/Hootsuite/Later directly\n"
    f"📝 [cyan]{md_path}[/cyan]",
    title="Exports", border_style="green"
))

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

Social Media Automator

Automatically generate social media posts from articles. Supports Twitter, LinkedIn, Instagram, TikTok, YouTube Shorts, Threads, and Bluesky. Perfect for con...

Registry SourceRecently Updated
9822Profile unavailable
General

Content Repurposer Pro

Repurpose long-form content (blog posts, articles, YouTube transcripts) into multiple formats automatically — Twitter/X threads, LinkedIn posts, email newsle...

Registry SourceRecently Updated
4410Profile unavailable
General

Social Media Content Engine

Complete social media strategy, content creation, scheduling, analytics, and growth system. Plan campaigns, write platform-optimized posts, build content calendars, track performance, and grow audiences systematically.

Registry SourceRecently Updated
1.8K2Profile unavailable
Automation

Promarkia – AI Marketing Automation API

Run Promarkia AI squads via the Promarkia API — social media posts, copywriting, SEO, ads, lead generation, image/video creation, campaign planning, and more...

Registry SourceRecently Updated
3350Profile unavailable