social_generate_tweet
Generate high-engagement tweets in tech/crypto voice for topics using data-driven, contrarian, breaking, thread-opener, or punchline styles.
Instructions
Generate a high-engagement tweet in tech/crypto voice (no emojis, no hashtags)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Topic for the tweet | |
| style | No | Tweet style | data-driven |
Implementation Reference
- src/modules/social.ts:7-19 (handler)Tool handler implementation for social_generate_tweet.
server.tool("social_generate_tweet", "Generate a high-engagement tweet in tech/crypto voice (no emojis, no hashtags)", { topic: z.string().describe("Topic for the tweet"), style: z.enum(["data-driven", "contrarian", "breaking", "thread-opener", "punchline"]).default("data-driven").describe("Tweet style") }, async ({ topic, style }) => { const templates: Record<string, string> = { "data-driven": `${topic} is moving faster than most realize\n\n- [data point 1]\n- [data point 2]\n- [data point 3]\n\nThe numbers don't lie`, "contrarian": `Everyone is talking about ${topic}\n\nAlmost nobody understands why it actually matters\n\nHere's what they're missing`, "breaking": `${topic} just changed everything\n\nWhile most were sleeping, this happened\n\nAnd it's only the beginning`, "thread-opener": `I spent 100 hours studying ${topic}\n\nHere's everything I learned (thread)`, "punchline": `${topic}\n\nNo marketing budget\nNo VC funding\nNo team of 50\n\nJust one builder and an AI agent\n\nThis is what the future looks like` }; return { content: [{ type: "text", text: `**Generated Tweet (${style})**\n\n${templates[style]}\n\n---\n*Customize the [bracketed] parts with real data. Keep under 280 chars. No emojis, no hashtags, no period at end.*` }] }; }); - src/modules/social.ts:7-19 (registration)Registration of the social_generate_tweet tool.
server.tool("social_generate_tweet", "Generate a high-engagement tweet in tech/crypto voice (no emojis, no hashtags)", { topic: z.string().describe("Topic for the tweet"), style: z.enum(["data-driven", "contrarian", "breaking", "thread-opener", "punchline"]).default("data-driven").describe("Tweet style") }, async ({ topic, style }) => { const templates: Record<string, string> = { "data-driven": `${topic} is moving faster than most realize\n\n- [data point 1]\n- [data point 2]\n- [data point 3]\n\nThe numbers don't lie`, "contrarian": `Everyone is talking about ${topic}\n\nAlmost nobody understands why it actually matters\n\nHere's what they're missing`, "breaking": `${topic} just changed everything\n\nWhile most were sleeping, this happened\n\nAnd it's only the beginning`, "thread-opener": `I spent 100 hours studying ${topic}\n\nHere's everything I learned (thread)`, "punchline": `${topic}\n\nNo marketing budget\nNo VC funding\nNo team of 50\n\nJust one builder and an AI agent\n\nThis is what the future looks like` }; return { content: [{ type: "text", text: `**Generated Tweet (${style})**\n\n${templates[style]}\n\n---\n*Customize the [bracketed] parts with real data. Keep under 280 chars. No emojis, no hashtags, no period at end.*` }] }; });