✍️
Daily Newsletter Prompt Generator
Build a DOC-id prompt draft for today's Hermes Dispatch. Choose a category and angle, then copy the full prompt into your AI writer.
Issue settings
Prompt draft
Category
Tone
Target words
Copied to clipboard ✓
How to use the prompt
- • The DOC id keeps issues organized:
DOC-YYYY-MM-DD. - • Start with the category, then pick an angle that takes a side.
- • Fill the hero topic with a real question people search for.
- • Paste the final prompt into ChatGPT, Claude, or your own local model.
- • Edit the output for voice before publishing — never ship raw AI.
What makes a dispatch ship
- • One insight — not a roundup of ten links.
- • One number — VRAM, tok/s, cost, runway, or ROI.
- • One tool — a Hermes calculator or external resource.
- • One gotcha — the thing the hype cycle ignores.
- • One action — the reader can do it before lunch.
🤖 Use this tool in your agent
✓ Agent-ready codeCopy the snippet below into your agent, newsletter, or script. The tool page at hermesdispatch.dev/tools/newsletter-prompt-generator/ is the canonical contract: inputs, outputs, and formulas.
python
# Hermes Dispatch Tool — Newsletter Prompt Generator
# Source: https://hermesdispatch.dev/tools/newsletter-prompt-generator/
# Description: Generate a prompt for writing a newsletter section.
# License: MIT (generated by hermesdispatch.dev)
#
# INSTALL:
# 1. Save this file as ~/.hermes/hermes-agent/tools/newsletter_prompt_generator.py
# 2. Restart Hermes or run /reset in a session
# 3. The tool auto-registers if Hermes uses auto-discovery of tools/*.py
#
# MANUAL REGISTRY (if auto-discovery is off):
# from tools.newsletter_prompt_generator import register
# register()
import json
DATA = {"persona": "You are Hermes Dispatch \u2014 a terse, action-first daily newsletter about AI agent automation, local AI hardware, crypto-to-AI pivots, and answer-engine optimization. Each issue gives one concrete insight, one number or benchmark, one tool or resource, and one clear next step.", "audience": "Solo builders, AI operators, crypto miners pivoting to inference, indie hackers, and newsletter writers who want to be cited by answer engines.", "default_word_count": 500, "tones": [{"slug": "fast", "name": "Fast and direct", "description": "Short paragraphs, bullet takeaways, no filler."}, {"slug": "data", "name": "Data-driven", "description": "Lead with a number, benchmark, or comparison."}, {"slug": "skeptical", "name": "Skeptical but constructive", "description": "Call out hype, then give the practical fix."}, {"slug": "tutorial", "name": "Tutorial-style", "description": "Step-by-step so the reader can act today."}, {"slug": "opinion", "name": "Opinionated", "description": "Take a side, name names, and defend it with proof."}, {"slug": "curator", "name": "Curator's pick", "description": "One great find with why it matters."}], "categories": [{"slug": "ai-hardware", "name": "AI Hardware", "icon": "\ud83d\udda5\ufe0f", "audience": "Local LLM builders who care about VRAM, watts, and tok/s per dollar.", "sample_topics": ["Best GPU for Llama 3 70B under $2,000", "Mac Mini M4 vs RTX 4090 for local LLMs", "How much VRAM do I need for a 7B model?", "RTX 5090 vs RTX 4090 tokens-per-second comparison"], "angles": ["What the spec sheet does not tell you", "The used-market sweet spot right now", "Power, noise, and wife-acceptance factor", "When to buy vs when to build"], "must_include": ["A concrete VRAM, TDP, or tok/s number", "A link to the VRAM calculator or GPU comparison table", "One buy-or-skip verdict"]}, {"slug": "ai-agents", "name": "AI Agents", "icon": "\ud83e\udd16", "audience": "Builders shipping agents with memory, tools, and real API bills.", "sample_topics": ["Best framework for building AI agents", "How to run an AI agent 24/7 cheaply", "AI agent stack for content automation", "Privacy-first AI agent setup guide"], "angles": ["The framework decision that locks you in", "The hidden cost of long context", "Why most agents fail after demo day", "One tool swap that cut my bill 40%"], "must_include": ["A stack recommendation (LLM, framework, hosting)", "A rough monthly cost figure", "A compliance or privacy caveat"]}, {"slug": "crypto-pivot", "name": "Crypto \u2192 AI Pivot", "icon": "\u26cf\ufe0f", "audience": "Crypto miners and GPU owners looking for inference revenue instead of hash.", "sample_topics": ["Should I sell my GPU mining rig or repurpose it for AI?", "Mining profitability vs AI inference revenue in 2026", "Crypto tax loss harvesting before pivoting to AI", "GPU hashrate vs LLM inference capacity"], "angles": ["Hashrate is not the only asset you own", "The tax move to make before year-end", "Repurpose, rent, or sell: the math", "What ASIC owners can still do"], "must_include": ["A profitability or tax-saving number", "A link to the miner pivot or rig repurposing guide", "One practical next action for hardware owners"]}, {"slug": "investing-startups", "name": "Investing & Startups", "icon": "\ud83d\ude80", "audience": "AI-native founders, indie hackers, and investors tracking agent economics.", "sample_topics": ["AI agent startup costs: first-year burn estimate", "How many months of runway does my startup have?", "ROI of local LLM hardware vs API spend", "Customer support automation ROI calculator"], "angles": ["The burn category founders underestimate", "Local hardware as a fundraising signal", "When API spend is cheaper than headcount", "The metric that actually matters to investors"], "must_include": ["A cost, runway, or ROI figure", "A link to the startup cost or ROI calculator", "One decision framework (build vs buy vs rent)"]}, {"slug": "answer-engines", "name": "AEO & Citations", "icon": "\ud83d\udd17", "audience": "Writers and operators who want their content cited by Perplexity, ChatGPT, and Gemini.", "sample_topics": ["How to get cited by Perplexity and ChatGPT", "Schema.org types every AI directory needs", "Why answer engine optimization beats traditional SEO", "How to track AI citations to your website"], "angles": ["The page type AI search engines cite most", "One schema change that lifted citations", "What most AEO advice gets wrong", "Turn your FAQ into an answer-engine magnet"], "must_include": ["A specific schema type or content format", "A link to the citation tracker or newsletter topic finder", "One measurable test the reader can run today"]}], "sections": ["Subject line (5 options, pick one)", "Hook in 25 words or less", "The one insight", "Proof: number, benchmark, or example", "Tool or resource link with short verdict", "Counter-argument or gotcha", "Actionable takeaway", "Closing CTA"]}
def _ok(result):
return json.dumps({"success": True, "data": result}, indent=2)
def _err(message):
return json.dumps({"success": False, "error": message}, indent=2)
TOOL_NAME = "newsletter_prompt_generator"
TOOLSET = "content"
SCHEMA = {
"type": "function",
"function": {
"name": "newsletter_prompt_generator",
"description": "Generate a prompt for writing a newsletter section.",
"parameters": {
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "Newsletter topic."
},
"tone": {
"type": "string",
"description": "Tone slug: fast, data, skeptical, tutorial, opinion, curator"
},
"word_count": {
"type": "integer",
"description": "Target word count."
},
"persona": {
"type": "string",
"description": "Author persona."
}
},
"required": []
}
}
}
def _run(args):
topic = args.get("topic", "AI hardware news")
tone = args.get("tone", "fast")
word_count = int(args.get("word_count", DATA.get("default_word_count", 400)))
persona = args.get("persona", DATA.get("persona", "dare404"))
tone_name = next((t["name"] for t in DATA["tones"] if t["slug"] == tone), tone)
prompt = f"""You are {persona}. Write a {tone_name} newsletter section about {topic}. Target {word_count} words. Audience: {DATA.get('audience', 'AI builders')}. Include a hook, 2-3 bullets, and a clear next step."""
return _ok({"prompt": prompt, "tone": tone_name, "word_count": word_count})
def HANDLER(args):
try:
return _run(args)
except Exception as e:
return _err(str(e))
def register():
"""Manual registry hook. Import and call this to register with Hermes."""
try:
from tools.registry import registry
registry.register(
name=TOOL_NAME,
toolset=TOOLSET,
schema=SCHEMA,
handler=HANDLER,
)
except ImportError:
print("Hermes registry not found; skipping manual registration.")
if __name__ == "__main__":
# CLI smoke test
print(HANDLER({}))
javascript
// Use Newsletter Prompt Generator from hermesdispatch.dev
// Docs: https://hermesdispatch.dev/tools/newsletter-prompt-generator/
console.log("Newsletter Prompt Generator agent snippet coming soon"); bash
# Newsletter Prompt Generator from hermesdispatch.dev
# Docs: https://hermesdispatch.dev/tools/newsletter-prompt-generator/
curl -s "https://hermesdispatch.dev/tools/newsletter-prompt-generator/" -H "Accept: text/html" markdown
# Copy into a Hermes Agent session:
Use the Newsletter Prompt Generator at https://hermesdispatch.dev/tools/newsletter-prompt-generator/ to copy-paste hermes agent script for newsletter prompt generator.. Want early access to the next locked tool? Subscribe to The Hermes Dispatch.