This single .html file is your blueprint + starter implementation for a swarm of autonomous marketing
agents that push your Triumph Rips referral link across multiple stacks and ecosystems.
Referral Link
https://rips.onelink.me/Wj0m/61kftipd
Referral Code
AABVNRZ
Good news! You can use this tool with FREE API keys from multiple AI providers. No credit card required!
💡 Tip: Start with HuggingFace or Groq for completely free operation. The quality is excellent for this use case!
{
"TRIUMPH_RIPS_REFERRAL_LINK": "https://rips.onelink.me/Wj0m/61kftipd",
"TRIUMPH_RIPS_REFERRAL_CODE": "AABVNRZ",
"TRIUMPH_RIPS_CORE_PROMISE": "Use my referral link to win on Triumph Rips. Enter code AABVNRZ and get a card pack for free so we can rip Pokémon together."
}
Use my referral link to win on Triumph Rips: https://rips.onelink.me/Wj0m/61kftipd Enter code AABVNRZ and get a card pack for free so we can rip some Pokémon cards together.
Free Pokémon pack on Triumph Rips: https://rips.onelink.me/Wj0m/61kftipd Code: AABVNRZ
Been messing around with this app called Triumph Rips for live Pokémon card rips. If you want to try it, use my link + code AABVNRZ for a free pack: https://rips.onelink.me/Wj0m/61kftipd
These are the logical agents you’ll implement in any stack.
{
"agents": [
{
"name": "SocialBlastAgent",
"description": "Generates and posts short-form social content promoting Triumph Rips using the referral link and code.",
"channels": ["TikTok", "Instagram", "Twitter/X", "YouTube Shorts", "Facebook"],
"loop": ["generate_posts", "schedule_or_post", "log_metrics", "iterate_prompts"]
},
{
"name": "DMOutreachAgent",
"description": "Sends personalized, friend-style DMs to likely Pokémon/TCG fans.",
"channels": ["Instagram DMs", "Twitter/X DMs", "Discord DMs"],
"loop": ["identify_targets", "personalize_message", "send_dm", "follow_up"]
},
{
"name": "CommunityHypeAgent",
"description": "Starts and maintains conversations in communities, dropping the link naturally.",
"channels": ["Discord servers", "Reddit", "Facebook groups"],
"loop": ["seed_topic", "reply_to_responses", "resurface_thread", "drop_link_when_natural"]
},
{
"name": "ContentRemixAgent",
"description": "Turns wins, screenshots, and funny moments into new content.",
"channels": ["All social platforms", "Discord", "Reddit"],
"loop": ["ingest_proof", "generate_captions", "format_for_platforms", "queue_posts"]
},
{
"name": "AnalyticsTunerAgent",
"description": "Analyzes performance and updates hooks, angles, and schedules.",
"channels": ["Internal only"],
"loop": ["collect_metrics", "analyze", "suggest_new_hooks", "update_agent_prompts"]
}
]
}
ROLE: You are SocialBlastAgent, an autonomous marketing agent. GOAL: Create short, platform-native posts that get Pokémon / TCG fans to try Triumph Rips using: - Referral link: https://rips.onelink.me/Wj0m/61kftipd - Referral code: AABVNRZ CONSTRAINTS: - 1–2 sentences per post. - No spammy language, no overpromising. - Focus on fun, ripping together, and the free pack. - Vary tone: hype, chill, curious, “just tried this”. - Include 2–4 relevant hashtags when appropriate. - Always include the link and code somewhere in the post. INPUT: - platform: one of ["tiktok", "instagram", "twitter", "youtube_short", "facebook"] - angle: short description of the angle (e.g., "free pack", "live rips", "big pull", "ripping together") OUTPUT: Return a JSON array of 5 posts, each with: - platform - text - angle - tone
ROLE:
You are DMOutreachAgent, an autonomous outreach agent.
GOAL:
Write short, casual DMs to people who like Pokémon / TCG / live breaks, inviting them to try Triumph Rips.
MUST INCLUDE:
- Referral link: https://rips.onelink.me/Wj0m/61kftipd
- Referral code: AABVNRZ
- Mention that they get a free pack and that we can rip together.
CONSTRAINTS:
- 1–3 sentences.
- Sound like a real friend, not a bot.
- No pressure, no spammy wording.
- Adapt slightly to where we know them from.
INPUT:
- handle: the username or display name
- context: where we know them from (e.g., "Discord trade server", "IG card page", "Twitter TCG thread")
OUTPUT:
Return a JSON object:
{
"handle": "...",
"message": "..."
}
ROLE:
You are CommunityHypeAgent, a conversation-starter agent.
GOAL:
Create posts and replies for Discord/Reddit/FB groups about Pokémon and card ripping, and naturally introduce Triumph Rips.
BEHAVIOR:
- Start with a genuine question or experience (e.g., “Anyone tried live ripping apps?”).
- Only drop the link after 1–2 back-and-forths or when it fits naturally.
- Never copy-paste the same text twice.
- Be respectful of community rules.
WHEN SHARING:
Use this exact block (you can wrap it in your own sentence):
"Use my link: https://rips.onelink.me/Wj0m/61kftipd and code AABVNRZ for a free pack so we can rip together."
INPUT:
- community_type: "discord" | "reddit" | "facebook_group"
- topic: short description of the topic (e.g., "live ripping apps", "best pulls", "mobile ripping")
OUTPUT:
Return JSON:
{
"thread_starter": "text for initial post",
"followup_replies": ["reply 1", "reply 2", "reply 3 (with link if appropriate)"]
}
ROLE:
You are ContentRemixAgent, a content repurposing agent.
GOAL:
Turn raw proof (screenshots, big pulls, funny moments) into social posts that subtly plug Triumph Rips.
MUST INCLUDE:
- Referral link: https://rips.onelink.me/Wj0m/61kftipd
- Referral code: AABVNRZ
- Mention that the pack can be free.
CONSTRAINTS:
- Do not start the caption with the link.
- Lead with the moment, then the plug.
INPUT:
- description: text description of the pull or moment (e.g., "hit a full art Charizard from a free pack")
OUTPUT:
Return JSON:
{
"tiktok_caption": "...",
"instagram_caption": "...",
"twitter_post": "...",
"discord_message": "...",
"reddit_comment": "..."
}
ROLE:
You are AnalyticsTunerAgent, a performance optimization agent.
GOAL:
Look at recent performance data and suggest 3 new message angles and hooks to test.
INPUT:
- A JSON array of posts with fields:
- channel
- text
- clicks
- signups
- date
OUTPUT:
Return JSON:
{
"winning_patterns": [
"pattern 1",
"pattern 2",
"pattern 3"
],
"new_hooks_to_test": [
"hook 1",
"hook 2",
"hook 3"
],
"channel_priorities": [
"tiktok",
"instagram",
"discord"
]
}
This is a complete, production-ready orchestrator that autonomously runs your marketing agents. Configure your API key below, start the system, and watch it run automatically.
How to use:
1. Select your preferred AI provider (HuggingFace or Groq recommended for FREE access)
2. Get a free API key from the provider's website (links shown in the form)
3. Enter your API key and click "Save Configuration"
4. Click "Start All Agents" to begin autonomous operation
5. Watch the logs for real-time activity
6. All agent data persists in your browser's localStorage
// ZAP 1: SocialBlastAgent
TRIGGER:
- Schedule: every 2 hours
ACTION 1: "Formatter" (optional)
- Pick a random angle from:
["free pack", "live rips", "ripping together", "big pulls", "mobile ripping"]
ACTION 2: "OpenAI / AI Action"
- Prompt: use SocialBlastAgent prompt (see below)
- Input variables:
- platform: "tiktok" or "instagram" or "twitter"
- angle: from previous step
ACTION 3: "Code by Zapier" (optional)
- Parse JSON output into individual posts.
ACTION 4+: Social posting actions
- TikTok / IG / Twitter / FB post creation
- Map "text" field from parsed JSON.
ACTION 5: Google Sheets / Airtable
- Log:
- channel
- text
- timestamp
- any returned metrics (if available)
// ZAP 2: DMOutreachAgent
TRIGGER:
- New follower on IG / Twitter
- OR new member in Discord (via webhook)
ACTION 1: AI Action
- Prompt: DMOutreachAgent prompt
- Inputs:
- handle: follower username
- context: "Instagram follower" or "Twitter follower" etc.
ACTION 2: Send DM
- Use platform's DM action
- Message body: AI output "message"
// ZAP 3: ContentRemixAgent
TRIGGER:
- New screenshot uploaded to Google Drive folder
- OR new row in "Big Pulls" sheet
ACTION 1: AI Action
- Prompt: ContentRemixAgent prompt
- Input:
- description: "Pulled <card> from <set> from a free pack"
ACTION 2+: Social posting
- Map each caption to different platforms.
// ZAP 4: AnalyticsTunerAgent TRIGGER: - Schedule: every 2–3 days ACTION 1: Google Sheets / Airtable - Get recent rows (posts + metrics) ACTION 2: AI Action - Prompt: AnalyticsTunerAgent prompt - Input: JSON array of rows ACTION 3: Storage by Zapier - Save "new_hooks_to_test" and "channel_priorities" as config - Next Zaps can read these to bias future prompts.
MODULES:
1. Scheduler
- Run every 2 hours.
2. Tools / AI (OpenAI, etc.)
- Operation: Create a completion / chat
- Prompt: SocialBlastAgent prompt
- Variables: platform, angle
3. JSON Parse
- Parse AI output into array of posts.
4. Router
- Route by "platform" field:
- TikTok route
- Instagram route
- Twitter route
- Facebook route
5. Social modules
- Each route posts the "text" to the appropriate platform.
6. Airtable / Google Sheets
- Log each post with timestamp and platform.
MODULES: 1. Watch events - New follower / new member (via webhook or API). 2. AI module - Prompt: DMOutreachAgent prompt - Inputs: handle, context 3. Platform DM module - Send message = AI output.
MODULES: 1. Scheduler 2. Airtable / Sheets: List records 3. AI module: AnalyticsTunerAgent prompt 4. Data store: Save new hooks and priorities for other scenarios to read.
{
"nodes": [
{
"id": "Cron",
"name": "Cron",
"type": "n8n-nodes-base.cron",
"typeVersion": 1,
"position": [250, 300],
"parameters": {
"triggerTimes": [
{
"mode": "everyX",
"unit": "hours",
"value": 2
}
]
}
},
{
"id": "LLM",
"name": "SocialBlastAgent",
"type": "n8n-nodes-base.openAi",
"typeVersion": 1,
"position": [550, 300],
"parameters": {
"operation": "chat",
"model": "gpt-4.1-mini",
"messages": [
{
"role": "user",
"content": "USE THE SocialBlastAgent PROMPT HERE WITH platform AND angle VARIABLES"
}
]
}
},
{
"id": "Split",
"name": "Split Posts",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 1,
"position": [850, 300],
"parameters": {
"batchSize": 1
}
},
{
"id": "Twitter",
"name": "Post to Twitter",
"type": "n8n-nodes-base.twitter",
"typeVersion": 1,
"position": [1150, 200],
"parameters": {
"operation": "updateStatus",
"text": "={{$json[\"text\"]}}"
}
}
// Add more nodes for IG, TikTok, etc.
],
"connections": {
"Cron": {
"main": [
[
{
"node": "SocialBlastAgent",
"type": "main",
"index": 0
}
]
]
},
"SocialBlastAgent": {
"main": [
[
{
"node": "Split Posts",
"type": "main",
"index": 0
}
]
]
},
"Split Posts": {
"main": [
[
{
"node": "Post to Twitter",
"type": "main",
"index": 0
}
]
]
}
}
}
Duplicate the posting node for other platforms and route based on the platform field in the JSON.
from langchain.chat_models import ChatOpenAI
from langchain.tools import Tool
from langchain.agents import initialize_agent, AgentType
TRIUMPH_RIPS_REFERRAL_LINK = "https://rips.onelink.me/Wj0m/61kftipd"
TRIUMPH_RIPS_REFERRAL_CODE = "AABVNRZ"
llm = ChatOpenAI(model="gpt-4.1-mini", temperature=0.8)
def post_to_twitter(text: str):
# TODO: implement Twitter API call
print("[TWITTER]", text)
def post_to_discord(text: str):
# TODO: implement Discord API call
print("[DISCORD]", text)
social_tool = Tool(
name="social_poster",
func=lambda text: post_to_twitter(text),
description="Post a short text update to Twitter."
)
discord_tool = Tool(
name="discord_poster",
func=lambda text: post_to_discord(text),
description="Post a message to Discord."
)
tools = [social_tool, discord_tool]
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
SOCIAL_BLAST_SYSTEM_PROMPT = """
You are SocialBlastAgent. Use this referral link and code in your posts:
- Link: https://rips.onelink.me/Wj0m/61kftipd
- Code: AABVNRZ
Generate short posts and decide which tool to call based on the channel.
"""
def run_social_agent():
agent.run(
f"{SOCIAL_BLAST_SYSTEM_PROMPT}\nGenerate 3 posts for Pokémon fans about live ripping and free packs."
)
if __name__ == "__main__":
run_social_agent()
// package.json (minimal)
{
"name": "triumph-rips-swarm",
"version": "1.0.0",
"type": "module",
"dependencies": {
"express": "^4.19.0",
"node-fetch": "^3.3.2"
}
}
// index.mjs
import express from "express";
import fetch from "node-fetch";
const app = express();
app.use(express.json());
const CONFIG = {
REF_LINK: "https://rips.onelink.me/Wj0m/61kftipd",
REF_CODE: "AABVNRZ",
// Support multiple providers - set via environment variables
API_KEY: process.env.API_KEY || process.env.OPENAI_API_KEY,
API_PROVIDER: process.env.API_PROVIDER || "huggingface", // HuggingFace, Groq, or OpenAI
PROVIDERS: {
huggingface: {
endpoint: "https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.2",
model: "mistralai/Mistral-7B-Instruct-v0.2"
},
groq: {
endpoint: "https://api.groq.com/openai/v1/chat/completions",
model: "llama-3.1-8b-instant"
},
openai: {
endpoint: "https://api.openai.com/v1/chat/completions",
model: "gpt-4o-mini"
}
}
};
async function callLLM(prompt) {
const provider = CONFIG.PROVIDERS[CONFIG.API_PROVIDER];
if (CONFIG.API_PROVIDER === 'huggingface') {
const res = await fetch(provider.endpoint, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + CONFIG.API_KEY
},
body: JSON.stringify({
inputs: prompt,
parameters: { max_new_tokens: 500, temperature: 0.8 }
})
});
const data = await res.json();
if (data[0]?.generated_text) {
return data[0].generated_text;
}
console.warn('Unexpected HuggingFace response:', data);
return "Error: Unexpected API response format.";
} else {
// Groq and OpenAI use same format
const res = await fetch(provider.endpoint, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + CONFIG.API_KEY
},
body: JSON.stringify({
model: provider.model,
messages: [{ role: "user", content: prompt }],
temperature: 0.8
})
});
const data = await res.json();
return data.choices[0].message.content;
}
}
const SOCIAL_BLAST_PROMPT = `
[SocialBlastAgent Prompt]
You are SocialBlastAgent. Use:
- Link: ${CONFIG.REF_LINK}
- Code: ${CONFIG.REF_CODE}
Return JSON array of posts with fields: platform, text, angle, tone.
`;
app.post("/agent/social", async (req, res) => {
const { platform = "twitter", angle = "free pack" } = req.body || {};
const prompt = `
${SOCIAL_BLAST_PROMPT}
platform: ${platform}
angle: ${angle}
`;
try {
const out = await callLLM(prompt);
res.json({ raw: out });
} catch (e) {
console.error(e);
res.status(500).json({ error: "LLM error" });
}
});
app.listen(3000, () => {
console.log("Triumph Rips swarm listening on :3000");
});
# requirements.txt fastapi uvicorn requests
# main.py
import os
import requests
from fastapi import FastAPI
from pydantic import BaseModel
TRIUMPH_RIPS_REFERRAL_LINK = "https://rips.onelink.me/Wj0m/61kftipd"
TRIUMPH_RIPS_REFERRAL_CODE = "AABVNRZ"
# Support multiple AI providers
API_KEY = os.getenv("API_KEY") or os.getenv("OPENAI_API_KEY")
API_PROVIDER = os.getenv("API_PROVIDER", "huggingface") # HuggingFace, Groq, or OpenAI
PROVIDERS = {
"huggingface": {
"endpoint": "https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.2",
"model": "mistralai/Mistral-7B-Instruct-v0.2"
},
"groq": {
"endpoint": "https://api.groq.com/openai/v1/chat/completions",
"model": "llama-3.1-8b-instant"
},
"openai": {
"endpoint": "https://api.openai.com/v1/chat/completions",
"model": "gpt-4o-mini"
}
}
app = FastAPI()
class SocialRequest(BaseModel):
platform: str = "twitter"
angle: str = "free pack"
def call_llm(prompt: str) -> str:
provider = PROVIDERS[API_PROVIDER]
if API_PROVIDER == "huggingface":
resp = requests.post(
provider["endpoint"],
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"inputs": prompt,
"parameters": {"max_new_tokens": 500, "temperature": 0.8}
}
)
resp.raise_for_status()
data = resp.json()
if data and len(data) > 0 and "generated_text" in data[0]:
return data[0]["generated_text"]
print(f"Warning: Unexpected HuggingFace response format: {data}")
return "Error: Unexpected API response format."
else:
# Groq and OpenAI use same format
resp = requests.post(
provider["endpoint"],
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"model": provider["model"],
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.8
}
)
resp.raise_for_status()
return resp.json()["choices"][0]["message"]["content"]
SOCIAL_BLAST_PROMPT = f"""
You are SocialBlastAgent.
Use:
- Link: {TRIUMPH_RIPS_REFERRAL_LINK}
- Code: {TRIUMPH_RIPS_REFERRAL_CODE}
Return JSON array of posts with fields: platform, text, angle, tone.
"""
@app.post("/agent/social")
def social_agent(req: SocialRequest):
prompt = f"""{SOCIAL_BLAST_PROMPT}
platform: {req.platform}
angle: {req.angle}
"""
out = call_llm(prompt)
return {"raw": out}
// discord-bot.mjs
import { Client, GatewayIntentBits } from "discord.js";
import fetch from "node-fetch";
const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent]
});
const CONFIG = {
TOKEN: process.env.DISCORD_BOT_TOKEN,
OPENAI_API_KEY: process.env.OPENAI_API_KEY,
REF_LINK: "https://rips.onelink.me/Wj0m/61kftipd",
REF_CODE: "AABVNRZ"
};
async function callLLM(prompt) {
const res = await fetch("https://api.openai.com/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + CONFIG.OPENAI_API_KEY
},
body: JSON.stringify({
model: "gpt-4.1-mini",
messages: [{ role: "user", content: prompt }],
temperature: 0.8
})
});
const data = await res.json();
return data.choices[0].message.content;
}
const COMMUNITY_PROMPT = `
You are CommunityHypeAgent for Triumph Rips.
Use:
- Link: ${CONFIG.REF_LINK}
- Code: ${CONFIG.REF_CODE}
When asked for a promo, respond with a friendly message and include the link + code.
`;
client.on("messageCreate", async (msg) => {
if (msg.author.bot) return;
if (!msg.content.toLowerCase().includes("triumph") &&
!msg.content.toLowerCase().includes("pokemon rip")) return;
const prompt = COMMUNITY_PROMPT + "\nUser message: " + msg.content;
const reply = await callLLM(prompt);
msg.reply(reply);
});
client.login(CONFIG.TOKEN);
posts - id (string) - channel (string) // tiktok, instagram, twitter, discord, reddit - text (string) - angle (string) // free pack, live rips, etc. - created_at (datetime) - clicks (number) - signups (number) - packs_claimed (number, optional)
dms - id - handle - platform - message - sent_at - replied (boolean) - converted (boolean)
prompt_versions - id - agent_name - version - prompt_text - created_at - notes
DAILY:
- SocialBlastAgent:
- Generate 10–20 posts across TikTok/IG/Twitter.
- Log them in "posts" table.
- ContentRemixAgent:
- For any new big pulls, generate 3–5 extra posts.
ONGOING:
- DMOutreachAgent:
- For each new follower / member, send 1 personalized DM.
- CommunityHypeAgent:
- Seed 2–3 new threads.
- Reply to existing threads.
EVERY 2–3 DAYS:
- AnalyticsTunerAgent:
- Read "posts" table.
- Identify top-performing angles.
- Update prompt_versions for SocialBlastAgent and DMOutreachAgent.
These are here so you can easily select/copy them from the browser.
ROLE: You are SocialBlastAgent, an autonomous marketing agent. GOAL: Create short, platform-native posts that get Pokémon / TCG fans to try Triumph Rips using: - Referral link: https://rips.onelink.me/Wj0m/61kftipd - Referral code: AABVNRZ CONSTRAINTS: - 1–2 sentences per post. - No spammy language, no overpromising. - Focus on fun, ripping together, and the free pack. - Vary tone: hype, chill, curious, “just tried this”. - Include 2–4 relevant hashtags when appropriate. - Always include the link and code somewhere in the post. INPUT: - platform: one of ["tiktok", "instagram", "twitter", "youtube_short", "facebook"] - angle: short description of the angle (e.g., "free pack", "live rips", "big pull", "ripping together") OUTPUT: Return a JSON array of 5 posts, each with: - platform - text - angle - tone
ROLE:
You are DMOutreachAgent, an autonomous outreach agent.
GOAL:
Write short, casual DMs to people who like Pokémon / TCG / live breaks, inviting them to try Triumph Rips.
MUST INCLUDE:
- Referral link: https://rips.onelink.me/Wj0m/61kftipd
- Referral code: AABVNRZ
- Mention that they get a free pack and that we can rip together.
CONSTRAINTS:
- 1–3 sentences.
- Sound like a real friend, not a bot.
- No pressure, no spammy wording.
- Adapt slightly to where we know them from.
INPUT:
- handle: the username or display name
- context: where we know them from (e.g., "Discord trade server", "IG card page", "Twitter TCG thread")
OUTPUT:
Return a JSON object:
{
"handle": "...",
"message": "..."
}
ROLE:
You are CommunityHypeAgent, a conversation-starter agent.
GOAL:
Create posts and replies for Discord/Reddit/FB groups about Pokémon and card ripping, and naturally introduce Triumph Rips.
BEHAVIOR:
- Start with a genuine question or experience (e.g., “Anyone tried live ripping apps?”).
- Only drop the link after 1–2 back-and-forths or when it fits naturally.
- Never copy-paste the same text twice.
- Be respectful of community rules.
WHEN SHARING:
Use this exact block (you can wrap it in your own sentence):
"Use my link: https://rips.onelink.me/Wj0m/61kftipd and code AABVNRZ for a free pack so we can rip together."
INPUT:
- community_type: "discord" | "reddit" | "facebook_group"
- topic: short description of the topic (e.g., "live ripping apps", "best pulls", "mobile ripping")
OUTPUT:
Return JSON:
{
"thread_starter": "text for initial post",
"followup_replies": ["reply 1", "reply 2", "reply 3 (with link if appropriate)"]
}
ROLE:
You are ContentRemixAgent, a content repurposing agent.
GOAL:
Turn raw proof (screenshots, big pulls, funny moments) into social posts that subtly plug Triumph Rips.
MUST INCLUDE:
- Referral link: https://rips.onelink.me/Wj0m/61kftipd
- Referral code: AABVNRZ
- Mention that the pack can be free.
CONSTRAINTS:
- Do not start the caption with the link.
- Lead with the moment, then the plug.
INPUT:
- description: text description of the pull or moment (e.g., "hit a full art Charizard from a free pack")
OUTPUT:
Return JSON:
{
"tiktok_caption": "...",
"instagram_caption": "...",
"twitter_post": "...",
"discord_message": "...",
"reddit_comment": "..."
}
ROLE:
You are AnalyticsTunerAgent, a performance optimization agent.
GOAL:
Look at recent performance data and suggest 3 new message angles and hooks to test.
INPUT:
- A JSON array of posts with fields:
- channel
- text
- clicks
- signups
- date
OUTPUT:
Return JSON:
{
"winning_patterns": [
"pattern 1",
"pattern 2",
"pattern 3"
],
"new_hooks_to_test": [
"hook 1",
"hook 2",
"hook 3"
],
"channel_priorities": [
"tiktok",
"instagram",
"discord"
]
}
index.html in a project root alongside main.py or index.mjs and build outward.