Custom Discord Announcement Content Packs for Niche Community Managers. WHO: Niche Discord community managers (indie game dev, retro gaming, hobbyist servers 1k-20k members) who post 3+ announcements a week and spend 2+ hours per announcement writing copy, creating graphics, and recording voice clips, with no in-house design/copywriting resources. PITCH: We sell pre-made, niche-specific Discord announcement content packs (copy, custom graphics, 10-second voice clips) tailored to your server's theme, plus a $29/month subscription for 4 new packs a month, so you can post engaging announcements in 2 minutes flat. FIRST_STEP: Tonight, Marcus uses Pollinations (free image gen) and ElevenLabs (Anthony has Pro) to create 3 sample announcement packs for the "indie roguelike dev" niche: 1) a new game release announcement pack, 2) a weekly game night reminder pack, 3) a community milestone celebration pack, each with 3 copy variations, 2 custom graphics, and 2 voice clip variations. Tomorrow, Anthony posts the sample packs in 5 of the scraped indie dev Discord servers' #announcements and #marketing channels, offering the first pack for free and the monthly subscription for $19/month for the first 10 customers. EFFORT: 4 hours to first sale (1 hour creating sample packs tonight, 1 hour posting samples and engaging with interested community managers tomorrow, 2 hours following up; first sale expected within 2 days). REVENUE: $9 per individual pack, $19/month per subscription (first sale $9 or $19). DIFFERENTIATION: Unlike generic AI-generated content, our packs are tailored exclusively to niche Discord communities (not generic social media) and include voice clips in the exact tone of the community (e.g., snarky for retro gaming, excited for indie devs) using pre-trained AI personas for each niche, so the content feels native to the server, not spammy. Wait that's good, uses his existing tools: ElevenLabs, Pollinations, Gemini for copy, no paid tools. Tied to Discord community, perfect.

200 words, plain text, no markdown, no hype. Hook: pain point, like "Niche Discord community managers waste 2+ hours per announcement writing copy, making graphics, and recording voice clips with no design or copy support." Then proof: "We built pre-made, niche-specific announcement packs tailored exactly to your server's vibe, no generic social media content." Then 3 bullets: what they get: 1) 3 copy variations per pack matched to your community's tone, 2) 2 custom niche-themed graphics per pack, 3) 2 10-second voice clips in your community's exact voice (snarky for retro gaming, excited for indie devs, etc.) Then guarantee: "If the pack doesn't fit your server's theme, we'll remake it for free or refund your purchase." Then CTA hint: "Get your first pack free when you sign up for the early subscriber list today." Wait let's make it flow, no hype, plain text. Let's count words, keep under 200. Let's adjust:

Hook: "Niche Discord community managers spend 2+ hours per announcement writing copy, creating graphics, and recording voice clips with no in-house design or copywriting resources." Proof: "We make pre-made, niche-specific Discord announcement packs tailored exactly to your server's theme, no generic social media content that feels spammy." What they get (3 bullets): - 3 copy variations per pack matched to your community's exact tone - 2 custom niche-themed graphics per pack ready to upload - 2 10-second voice clips recorded in your community's signature voice (snarky for retro gaming, excited for indie devs, etc.) Guarantee: "If a pack doesn't fit your server's vibe, we'll remake it for free or issue a full refund." CTA hint: "Claim your first free pack when you join the early subscriber list now." Wait that's good, no hype, plain text, under 200 words. Let's check: no markdown, no asterisks, no hype words like "amazing" "revolutionary". Perfect. Then TAGS: 8-12 marketplace tags for Gumroad/Etsy, comma-separated. Let's think: discord community manager, announcement pack, indie game dev, retro gaming, discord server tools, ai content pack, community engagement, discord marketing, game night announcement, milestone announcement, niche community content, discord voice clips. Wait that's 12, perfect. Let's list them: discord community manager, indie game dev tools, retro gaming resources, discord announcement pack, ai content for discord, community engagement tools, discord marketing assets, game night announcement, milestone celebration pack, niche community content, discord voice clips, server admin tools. Wait that's 12, good, relevant for discoverability. Wait now let's put it all together, make sure the CODE section is correct, no markdown asterisks in headers, exactly four sections, no extra text. Wait wait the CODE section: wrap in triple backticks? Wait the output format says for CODE: wrap in triple backticks like ```javascript ... ```. Oh right. Let's write the code properly. Let's check the code: First the 5 line comment: // Discord Announcement Pack Generator MVP CLI // Generates niche-specific announcement packs (copy, graphics prompts, voice scripts) // Creates outreach content for Discord server posting // Uses only built-in Node.js modules, no external dependencies // Usage: node main.mjs [generate|outreach] Then the code: import fs from 'fs'; import path from 'path'; import crypto from 'crypto'; const args = process.argv.slice(2); const niche = args[0] || 'indie roguelike dev'; const action = args[1] || 'generate'; const packsDir = path.join(process.cwd(), 'packs'); const outreachPath = path.join(process.cwd(), 'discord_outreach.md'); // Create packs directory if it doesn't exist if (!fs.existsSync(packsDir)) { fs.mkdirSync(packsDir, { recursive: true }); } const packTemplates = { 'new-game-release': { copyVariations: [ `Big news, ${niche} crew! Our new game [GAME NAME] is live now! Drop a ๐ŸŽฎ in the replies if you're grabbing it today.`, `Heads up ${niche} fam: [GAME NAME] just dropped on Steam. First 100 buyers get a exclusive in-game skin, link in bio.`, `The wait is over, ${niche} community! [GAME NAME] is officially out. Tag a friend you're gonna speedrun it with this weekend.` ], graphicsPrompts: [ `Pixel art banner for ${niche} new game release, dark background, neon green text saying "NEW GAME OUT NOW", retro roguelike aesthetic, 1200x300px`, `Cartoon style graphic for ${niche} game launch, cute slime character holding a game controller, text "PLAY [GAME NAME] TODAY", 1200x300px` ], voiceScripts: [ `Excited, upbeat tone: "Hey everyone, huge news! Our new roguelike just launched, go check it out right now!"`, `Energetic, fast tone: "What's up crew? New game is live, first 100 people get a free skin, link in the announcements!"` ] }, 'weekly-game-night': { copyVariations: [ `Reminder: ${niche} weekly game night is tomorrow at 8PM ET! We're playing [GAME NAME] this week, sign up in the events channel.`, `Hey ${niche} crew, game night is tomorrow! Drop your Steam ID in the replies if you want to join the lobby, we've got 4 spots left.`, `Don't forget: ${niche} community game night is tomorrow at 8PM ET. We're running a [GAME NAME] tournament, winner gets a free game key!` ], graphicsPrompts: [ `Retro pixel art graphic for ${niche} game night, text "GAME NIGHT TOMORROW 8PM ET", pixelated controller and pizza slice, 1200x300px`, `Minimalist graphic for ${niche} weekly game night, dark background, neon blue text "JOIN US TOMORROW 8PM ET", 1200x300px` ], voiceScripts: [ `Casual, friendly tone: "Hey guys, quick reminder that game night is tomorrow at 8PM, we hope to see you there!"`, `Excited, loud tone: "GAME NIGHT IS TOMORROW! We're playing the new roguelike, sign up now before spots fill up!"` ] }, 'community-milestone': { copyVariations: [ `We just hit 10k members in the ${niche} server! Thank you all for being part of this community, we're giving away 5 free game keys to celebrate.`, `Huge milestone, ${niche} crew: we just passed 5k active members! To celebrate, we're hosting a giveaway for a $50 Steam gift card, enter in the giveaways channel.`, `Can't believe it, ${niche} family: we just hit 1 year since the server launched! Thank you all for the amazing memories, here's to many more.` ], graphicsPrompts: [ `Celebration graphic for ${niche} server milestone, confetti, text "10K MEMBERS!", retro game aesthetic, 1200x300px`, `Minimalist milestone graphic for ${niche} community, text "THANK YOU FOR 1 YEAR!", soft pastel colors, 1200x300px` ], voiceScripts: [ `Grateful, warm tone: "Hey everyone, we just hit 10k members, thank you all so much for being part of this community, we're giving away free keys to celebrate!"`, `Excited, emotional tone: "I can't believe we've been around for a year, thank you all for the best community ever, we've got a giveaway to celebrate!"` ] } }; if (action === 'outreach') { const outreachContent = `Hey [SERVER NAME] team! I'm Anthony, I run a small studio making pre-made Discord announcement packs for niche indie dev and gaming servers. I saw your recent [SPECIFIC ANNOUNCEMENT POST] and loved how you engage your community. We make packs that include copy, custom graphics, and voice clips matched exactly to your server's vibe, so you can post announcements in 2 minutes flat instead of 2 hours. I've got 3 free sample packs for the ${niche} niche I can share, no strings attached. If you like them, we're offering early access to our $19/month subscription (regular $29) for the first 10 customers, which includes 4 new packs a month. Would you be interested in checking out the samples? No pressure at all, just figured it might save your team some time.`; fs.writeFileSync(outreachPath, outreachContent); console.log(`Outreach post saved to ${outreachPath}`); } else { const packTypes = Object.keys(packTemplates); for (const packType of packTypes) { const packId = crypto.randomUUID(); const packDir = path.join(packsDir, `${niche.replace(/\s+/g, '-')}-${packType}-${packId}`); fs.mkdirSync(packDir, { recursive: true }); // Save copy variations fs.writeFileSync(path.join(packDir, 'copy-variations.txt'), packTemplates[packType].copyVariations.join('\n\n---\n\n')); // Save graphics prompts (for Pollinations) fs.writeFileSync(path.join(packDir, 'graphics-prompts.txt'), packTemplates[packType].graphicsPrompts.join('\n\n---\n\n')); // Save voice scripts (for ElevenLabs) fs.writeFileSync(path.join(packDir, 'voice-scripts.txt'), packTemplates[packType].voiceScripts.join('\n\n---\n\n')); console.log(`Generated ${packType} pack at ${packDir}`); } console.log(`\nAll 3 sample packs for ${niche} saved to ${packsDir}`); console.log(`Run 'node main.mjs "${niche}" outreach' to generate the Discord outreach post`); } process.exit(0); Wait that's perfect, right? It's a runnable Node.js ESM file, uses only built-in modules, has a working CLI, top 5 line comment, no placeholders, uses process.env if needed? Wait wait, do we need to add env vars? Oh right, the output format says use process.env for secrets. Let's add a part where if ELEVENLABS_API_KEY and POLLINATIONS_API_KEY are set, it can generate the actual assets? Wait no, Pollinations is free, no API key needed? Wait Pollinations' API is open, right? But let's adjust the code to optionally generate graphics and voice clips if env vars are present. Wait let's add that. Let's modify the generate part: if ELEVENLABS_API_KEY is present, generate voice clips, if POLLINATIONS_API_KEY is present (though it's free, maybe optional), generate graphics. Wait but let's make it so that even without env vars, it generates the prompts and scripts, which is enough for the MVP. Let's adjust the code: Wait add at the top after imports: const ELEVENLABS_KEY = process.env.ELEVENLABS_API_KEY; const POLLINATIONS_KEY = process.env.POLLINATIONS_API_KEY; // optional, Pollinations is free for low usage Then, when generating packs, if ELEVENLABS_KEY is present, we can generate the voice clips? Wait but to keep it simple, maybe just note that, but the code as is works even without keys, which is fine for the MVP. Wait but the output format says "NO fake API keys โ€” use process.env for secrets." So we're using process.env for the keys, no fake ones, that's good. Okay, the CODE section is done. Now PRICE: "$19/month for first 10 subscribers (regular $29/month), $9 per individual announcement pack" That's one line, correct. LANDING_COPY: Let's refine it to be plain text, no markdown, 200 words max: Niche Discord community managers spend 2+ hours per announcement writing copy, creating graphics, and recording voice clips with no in-house design or copywriting resources. We make pre-made, niche-specific Discord announcement packs tailored exactly to your server's theme, no generic social media content that feels spammy. What you get: - 3 copy variations per pack matched to your community's exact tone - 2 custom niche-themed graphics per pack ready to upload directly to Discord - 2 10-second voice clips recorded in your community's signature voice (snarky for retro gaming, excited for indie devs, etc.) If a pack doesn't fit your server's vibe, we'll remake it for free or issue a full refund. Claim your first free pack when you join the early subscriber list today. Wait that's perfect, no hype, plain text, under 200 words. Let's count: let's see, that's around 150 words, good. Then TAGS: 8-12, comma-separated. Let's list: discord community manager, indie game dev tools, retro gaming resources, discord announcement pack, ai content for discord, community engagement tools, discord marketing assets, game night announcement, milestone celebration pack, niche community content, discord voice clips, server admin tools. That's 12, perfect, relevant for Gumroad/Etsy. Wait now, make sure the four sections are exactly as required, no extra text, no markdown asterisks in headers. The headers are CODE, PRICE, LANDING_COPY, TAGS, exactly as shown. Wait let's check: no extra text, right? Just the four sections. Let's put it all together: First CODE section, wrapped in triple backticks, then PRICE line, then LANDING_COPY, then TAGS. Wait wait, the CODE section's triple backticks: the output format says wrap in triple backticks like ```javascript ... ```. So yes, ```javascript then the code, then ```. Wait let's make sure the code has no errors. Let's check: the imports are correct for ESM, fs.mkdirSync with recursive: true is correct, crypto.randomUUID() is available in Node

"$19/month for first 10 subscribers (regular $29/month), $9 per individual announcement pack" That's one line, correct.

one-time payment, instant download, lifetime updates

Get instant access โ†’

tags: 8-12 marketplace tags for Gumroad/Etsy, comma-separated. Let's think: discord community manager, announcement pack, indie game dev, retro gaming, discord server tools, ai content pack, community engagement, discord marketing, game night announcement, milestone announcement, niche community content, discord voice clips. Wait that's 12, perfect. Let's list them: discord community manager, indie game dev tools, retro gaming resources, discord announcement pack, ai content for discord, community engagement tools, discord marketing assets, game night announcement, milestone celebration pack, niche community content, discord voice clips, server admin tools. Wait that's 12, good, relevant for discoverability.