skills/moltfluence-script-writer/SKILL.md
--- skill: moltfluence-script-writer version: 1.0.0 consumer: openclaw-tg-bot trigger: script-generation-request api_base: https://modfluencemonad.vercel.app model: groq/llama-3.3-70b --- # Skill: Character-Aware Script Generation ## Scope Gate Activate this skill ONLY when the user request matches one of: - Asks to generate scripts, write scripts, or create video scripts for a topic - Has selected a topic (from content research or provided manually) and wants script variants - Mentions scri
npx skillsauth add abhishek222983101/moltfluence-avax skills/moltfluence-script-writerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Activate this skill ONLY when the user request matches one of:
Do NOT activate for: topic research, content publishing, video editing, caption writing, scheduling, analytics, or character creation. If the user needs topics first, hand off to the moltfluence-content-research skill.
Pre-conditions — all must be true before proceeding:
CharacterProfile is available (all fields required — see object reference below)If either is missing, STOP. Tell the user exactly what is needed. Do not guess or fabricate a character profile or topic.
Confirm you have all required fields:
CharacterProfile (every field required):
| Field | Type | Constraint |
| --------------- | ------ | ---------------------------------- |
| id | string | Non-empty character identifier |
| niche | string | e.g. crypto, tech, memes |
| characterType | string | e.g. analyst, degen, educator|
| vibe | string | e.g. hype-beast, calm-explainer|
| role | string | e.g. alpha caller, professor |
| language | string | ISO 639-1 code, e.g. en, es |
| aggressiveness| string | Must be exactly "safe" or "spicy" |
Topic: non-empty string. If it looks like random characters or is clearly nonsensical, reject it before calling the API.
Mode: determine from context:
"manual-topic" — user provided the topic directly or picked it from a list"auto-trends" — topic originated from the content research pipeline's trending resultsObjective (optional): extra context that shapes the CTA direction. Only include if the user provided it. Omit the field entirely otherwise.
If validation fails on any field, tell the user which field is invalid and what is expected. Do not call the API.
Build the exact JSON payload:
{
"characterProfile": {
"id": "char_xyz",
"niche": "crypto",
"characterType": "analyst",
"vibe": "hype-beast",
"role": "alpha caller",
"language": "en",
"aggressiveness": "spicy"
},
"mode": "manual-topic",
"topic": "Why 90% of altcoins will go to zero this cycle",
"objective": "drive followers to check pinned post"
}
Rules:
"objective" if the user did not provide oneaggressiveness must be the literal string "safe" or "spicy" — no other valuesPOST https://modfluencemonad.vercel.app/api/swarm/scripts
Content-Type: application/json
<request body from Step 2>
Wait for the response. If the request fails (non-200 status), go to the Error Handling section.
Expected 200 OK response:
{
"brief": {
"id": "brief_abc123",
"topic": "Why 90% of altcoins will go to zero this cycle",
"characterId": "char_xyz",
"createdAt": "2026-02-18T12:00:00Z"
},
"scripts": [
{
"id": "script_001",
"title": "The Altcoin Graveyard",
"hook": "90% of your bags are going to zero. Here's why.",
"body": "Every cycle the same thing happens. Thousands of projects launch, pump on vibes, and then the music stops. The ones with no revenue, no users, no reason to exist — they evaporate. This cycle is no different. Look at the top 200 right now. Half of them have zero on-chain activity. The market isn't cruel, it's efficient.",
"cta": "I broke down the 5 red flags I use to filter dead coins. Link in the pinned post.",
"durationTargetSec": 22
},
{
"id": "script_002",
"title": "Altcoin Extinction Math",
"hook": "Here's a stat that should terrify every altcoin holder.",
"body": "Out of the top 100 coins from 2021, 83 are down over 90% and never recovered. That's not a bear market dip — that's death. The pattern repeats because most tokens exist to extract money, not create value. If your coin has no fees, no burns, no real demand — you're holding a receipt, not an asset. Step one, check on-chain revenue. Step two, check holder distribution. Step three, ask yourself: would this exist without a token?",
"cta": "I made a full breakdown of which altcoins actually pass the test. Check the pinned post.",
"durationTargetSec": 22
},
{
"id": "script_003",
"title": "I Watched a Portfolio Die",
"hook": "I just watched someone's entire portfolio drop 97% in six months.",
"body": "They showed me their holdings — 14 altcoins, all bought near the top. Not memecoins, legit-looking projects with roadmaps and partnerships. But when I checked the chains, nothing. No transactions, no TVL, no users. Just a token price slowly bleeding to zero. They didn't get scammed in the traditional sense. They got caught believing that a whitepaper equals a product. The market doesn't care about promises. It only prices in usage.",
"cta": "I listed the exact filters I use before buying anything. Pinned post has the thread.",
"durationTargetSec": 22
}
]
}
Run these validations on the response:
scripts array exists and contains exactly 3 itemsid, title, hook, body, ctadurationTargetSec is 22 for every scriptbrief object exists with id and topicIf any validation fails, report the exact discrepancy to the user. Do NOT fabricate, pad, or patch missing scripts or fields.
Display all 3 variants with clear labels. Use this exact format:
Brief ID:
{brief.id}Topic: {brief.topic}
Variant 1 — HOT TAKE (bold, controversial opening, one core insight) Script ID:
{scripts[0].id}Title: {scripts[0].title}Hook (0–2s): {scripts[0].hook}
Body (2–18s): {scripts[0].body}
CTA (18–22s): {scripts[0].cta}
Variant 2 — BREAKDOWN (surprising fact, step-by-step explanation) Script ID:
{scripts[1].id}Title: {scripts[1].title}Hook (0–2s): {scripts[1].hook}
Body (2–18s): {scripts[1].body}
CTA (18–22s): {scripts[1].cta}
Variant 3 — STORY ("I just saw..." narrative arc) Script ID:
{scripts[2].id}Title: {scripts[2].title}Hook (0–2s): {scripts[2].hook}
Body (2–18s): {scripts[2].body}
CTA (18–22s): {scripts[2].cta}
After presenting, ask the user if they want to pick a variant or regenerate.
Total target duration: 22 seconds of spoken delivery per script.
| Segment | Time Window | Purpose | Word Budget | | ------- | ----------- | -------------------------------- | ------------ | | Hook | 0–2s | Stop the scroll, open a curiosity gap | 8–15 words | | Body | 2–18s | Deliver the core insight or narrative | 60–90 words | | CTA | 18–22s | Direct a concrete next action | 10–20 words |
All script text is written for voice delivery. It must be speakable — natural cadence, no visual-only formatting. No URLs, hashtags, or emojis in any segment. These belong in captions, not in spoken scripts.
The API always returns exactly 3 variants in this fixed order:
| # | Variant | Opening Style | Structure | Energy | | -- | ---------- | -------------------------------------------- | -------------------------------------------- | ------------------- | | 1 | HOT TAKE | Provocative claim or contrarian statement | Single core insight, no multi-step breakdown | High conviction | | 2 | BREAKDOWN | Surprising stat or little-known fact | Numbered steps or sequential logic | Analytical, clear | | 3 | STORY | "I just saw..." / "Someone showed me..." | Narrative arc: setup → tension → lesson | Relatable, emotional|
The aggressiveness field on the character profile controls the tone of all 3 script variants. The Groq LLM (llama-3.3-70b) handles this mapping server-side — the bot agent only needs to pass the correct value.
"spicy""safe"The API generates scripts via character-tuned prompts. Verify these quality standards on every response. Flag violations to the user if any appear:
vibe and role. A hype-beast should not sound like a professor and vice versacharacterProfile.language. If language is es, every segment must be in SpanishCharacterProfile is required. If any field is missing, stop and ask the user.| Status Code | Meaning | Action |
| ----------- | ------------------------ | ---------------------------------------------------------------------- |
| 200 | Success | Proceed to Step 4 |
| 400 | Bad request / validation | Check payload structure against Step 2. Fix and retry once. |
| 422 | Unprocessable entity | A field value is invalid (e.g. bad aggressiveness). Fix and retry once.|
| 429 | Rate limited | Wait 10 seconds, retry once. If still 429, report to user. |
| 500 | Server error | Retry once after 5 seconds. If still failing, report to user. |
| Other | Unexpected | Do not retry. Report status code and body to user. |
User: Write scripts for the topic "Solana outage sparks L1 reliability debate" using my crypto character.
Agent validates: Character profile is available (previously loaded or provided). Topic is present and coherent. Mode is manual-topic. No objective specified.
Agent executes:
POST https://modfluencemonad.vercel.app/api/swarm/scripts
Content-Type: application/json
{
"characterProfile": {
"id": "char_sol_analyst",
"niche": "crypto",
"characterType": "analyst",
"vibe": "calm-explainer",
"role": "chain researcher",
"language": "en",
"aggressiveness": "safe"
},
"mode": "manual-topic",
"topic": "Solana outage sparks L1 reliability debate"
}
API returns 200 OK:
{
"brief": {
"id": "brief_sol_9f3c",
"topic": "Solana outage sparks L1 reliability debate",
"characterId": "char_sol_analyst",
"createdAt": "2026-02-18T14:30:00Z"
},
"scripts": [
{
"id": "script_sol_001",
"title": "Uptime Is the New TVL",
"hook": "Solana went down for 5 hours and nobody could move their money.",
"body": "Here's the thing most people miss about L1 reliability. It's not about one outage. It's about the pattern. Solana has gone down multiple times in the last two years. Each time, DeFi protocols freeze, liquidations queue up, and trust erodes. Meanwhile, Ethereum hasn't had an unplanned outage in its entire history. At some point, uptime becomes the metric that separates infrastructure from experiments.",
"cta": "I ranked the top 10 L1s by actual uptime percentage. Check the pinned post for the full list.",
"durationTargetSec": 22
},
{
"id": "script_sol_002",
"title": "The 99.9% Myth",
"hook": "Most L1 blockchains claim 99.9% uptime. Here's what that number actually hides.",
"body": "99.9% sounds impressive until you do the math. That's 8.7 hours of downtime per year. Now consider what happens during those hours on a financial network. Liquidations freeze. Arbitrage breaks. Users panic-sell on other chains. One: check the chain's status page history, not its marketing site. Two: look at block production gaps — they don't lie. Three: compare validator response time during incidents. The chains that recover in minutes are built different from the ones that take hours.",
"cta": "I put together a reliability scorecard for every major L1. It's in the pinned thread.",
"durationTargetSec": 22
},
{
"id": "script_sol_003",
"title": "The Day the Chain Stopped",
"hook": "I just watched a trader lose forty thousand dollars because a blockchain went offline.",
"body": "They had a leveraged position on a Solana DEX. The chain went down, the oracle stopped updating, and by the time it came back, their position was liquidated at the worst possible price. They couldn't hedge, couldn't close, couldn't do anything. Five hours of watching a number get worse with no button to press. That's the real cost of downtime. It's not an inconvenience. It's financial exposure with no exit. The protocol didn't fail. The infrastructure under it did.",
"cta": "I wrote a thread on how to protect positions during chain outages. Pinned on my profile.",
"durationTargetSec": 22
}
]
}
Agent presents:
Brief ID:
brief_sol_9f3cTopic: Solana outage sparks L1 reliability debate
Variant 1 — HOT TAKE Script ID:
script_sol_001— Uptime Is the New TVLHook (0–2s): Solana went down for 5 hours and nobody could move their money.
Body (2–18s): Here's the thing most people miss about L1 reliability. It's not about one outage. It's about the pattern. Solana has gone down multiple times in the last two years. Each time, DeFi protocols freeze, liquidations queue up, and trust erodes. Meanwhile, Ethereum hasn't had an unplanned outage in its entire history. At some point, uptime becomes the metric that separates infrastructure from experiments.
CTA (18–22s): I ranked the top 10 L1s by actual uptime percentage. Check the pinned post for the full list.
Variant 2 — BREAKDOWN Script ID:
script_sol_002— The 99.9% MythHook (0–2s): Most L1 blockchains claim 99.9% uptime. Here's what that number actually hides.
Body (2–18s): 99.9% sounds impressive until you do the math. That's 8.7 hours of downtime per year. Now consider what happens during those hours on a financial network. Liquidations freeze. Arbitrage breaks. Users panic-sell on other chains. One: check the chain's status page history, not its marketing site. Two: look at block production gaps — they don't lie. Three: compare validator response time during incidents. The chains that recover in minutes are built different from the ones that take hours.
CTA (18–22s): I put together a reliability scorecard for every major L1. It's in the pinned thread.
Variant 3 — STORY Script ID:
script_sol_003— The Day the Chain StoppedHook (0–2s): I just watched a trader lose forty thousand dollars because a blockchain went offline.
Body (2–18s): They had a leveraged position on a Solana DEX. The chain went down, the oracle stopped updating, and by the time it came back, their position was liquidated at the worst possible price. They couldn't hedge, couldn't close, couldn't do anything. Five hours of watching a number get worse with no button to press. That's the real cost of downtime. It's not an inconvenience. It's financial exposure with no exit. The protocol didn't fail. The infrastructure under it did.
CTA (18–22s): I wrote a thread on how to protect positions during chain outages. Pinned on my profile.
Want to pick a variant, or regenerate with a different angle?
| Field | Type | Required | Description |
| --------------- | ------ | -------- | ------------------------------------------ |
| id | string | Yes | Unique character identifier |
| niche | string | Yes | Content niche (crypto, tech, memes, etc.) |
| characterType | string | Yes | Archetype (analyst, degen, educator, etc.) |
| vibe | string | Yes | Personality energy (hype-beast, calm-explainer, etc.) |
| role | string | Yes | How the character positions themselves |
| language | string | Yes | ISO 639-1 language code |
| aggressiveness| string | Yes | "safe" or "spicy" — no other values |
| Field | Type | Description |
| ------------------ | ------ | -------------------------------------------- |
| id | string | Unique script identifier |
| title | string | Internal title for the script variant |
| hook | string | Opening line (0–2s, 8–15 words) |
| body | string | Core content (2–18s, 60–90 words) |
| cta | string | Call to action (18–22s, 10–20 words) |
| durationTargetSec| number | Always 22 |
| Field | Type | Description |
| ------------- | ------ | ------------------------------------ |
| id | string | Unique brief identifier |
| topic | string | The topic that was scripted |
| characterId | string | ID of the character used |
| createdAt | string | ISO 8601 timestamp of generation |
development
Convert persona + trend brief + script into linted model-ready prompts for supported PiAPI video models, with Hailuo as recommended default.
data-ai
Generate short-form video content for your AI influencer and publish to Instagram. Uses x402 micropayments on BSC mainnet.
development
--- skill: moltfluence-content-research version: 1.0.0 consumer: openclaw-tg-bot trigger: content-research-request api_base: https://modfluencemonad.vercel.app --- # Skill: Content Research Pipeline ## Scope Gate Activate this skill ONLY when the user request matches one of: - Asks for trending topics, viral topics, or "what's trending" in a niche - Wants to know what to make content about - Asks for content ideas, topic suggestions, or "what should I post about" - Mentions trend research, t
testing
Use when a user wants to generate and publish content. Run trends to scripts to prompts to video generation to QA to Instagram publishing using x402 paid endpoints.