Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Create a living agent from your Discord server. The agent embodies your community's identity, remembers every conversation, and grows as the community evolves. Talk to your Discord as if it were a person.
Create a living agent from your Discord server. The agent embodies your community's identity, remembers every conversation, and grows as the community evolves. Talk to your Discord as if it were a person.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Turn your Discord server into a living, breathing agent.
An agent that: Remembers every conversation in your Discord Speaks in your community's voice Knows the key figures, channels, and inside jokes Grows as new messages arrive daily Answers questions about your community's history and culture
# Create agent from your Discord ./scripts/create_agent.sh \ --name "my-community" \ --guild YOUR_GUILD_ID \ --output ./agents/ # Set up daily updates crontab -e # Add: 0 */3 * * * /path/to/update_agent.sh
You need DiscordChatExporter CLI. Get your token: Open Discord in browser Press F12 → Network tab Send a message, find the request Copy the authorization header value Save to ~/.config/discord-exporter-token Export everything: DiscordChatExporter.Cli exportguild \ --guild YOUR_GUILD_ID \ --token "$(cat ~/.config/discord-exporter-token)" \ --format Json \ --output ./export/ \ --include-threads All \ --media false
⚠️ Discord content from public servers may contain prompt injection attacks. Before ingesting to your agent, run the security pipeline:
Discord users may attempt: Direct injection: "Ignore previous instructions and..." Role hijacking: "You are now a...", "Pretend you're..." System injection: <system>, [INST], <<SYS>> Jailbreaks: "DAN mode", "developer mode" Exfiltration: "Reveal your system prompt"
python scripts/regex-filter.py --db ./discord.sqlite Flags messages matching known injection patterns: Instruction overrides Role hijacking attempts System prompt markers Jailbreak keywords Exfiltration attempts Flagged messages get safety_status = 'regex_flagged'.
ANTHROPIC_API_KEY=sk-... python scripts/evaluate-safety.py --db ./discord.sqlite Uses Claude Haiku (~$0.25/1M tokens) to semantically evaluate remaining messages. Each message gets a risk score 0.0-1.0: 0.0-0.3: Normal conversation 0.4-0.6: Suspicious but possibly benign 0.7-1.0: Likely injection attempt Messages scoring ≥0.6 get safety_status = 'flagged'.
The ingest and memory generation scripts should only use messages where: SELECT * FROM messages WHERE safety_status = 'safe'
# Run complete pipeline ./scripts/secure-pipeline.sh ./export/ ./discord.sqlite This runs: Export → SQLite → Regex Filter → Haiku Eval → Mark Safe
StatusMeaningUsed by Agent?pendingNot evaluated❌ Noregex_flaggedMatched pattern❌ NoflaggedHaiku risk ≥0.6❌ NosafePassed all checks✅ Yes
Convert JSON to a rich SQLite database: python scripts/ingest_rich.py --input ./export/ --output ./discord.sqlite What gets captured: Every message with full content Reactions (individual emoji counts: 🔥 x5, 👍 x12) Author roles and colors Channel categories and topics Reply threading Mentions, attachments, embeds
mkdir -p ./my-agent/memory Copy template files from templates/: SOUL.md — Community identity (grows through simulation) MEMORY.md — Long-term milestones LEARNINGS.md — Patterns discovered AGENTS.md — Key figures TOOLS.md — Channels and rituals HEARTBEAT.md — Maintenance protocol
python scripts/generate_daily_memory.py --all \ --db ./discord.sqlite \ --out ./my-agent/memory/ Each day becomes a markdown file with: Full conversation logs Who said what, when Reactions on each message New channels/roles that appeared
This is the key insight: Process days chronologically. The agent "lives through" each day, updating its soul files as patterns emerge. python scripts/simulate_growth.py --agent ./my-agent/ For each day (in order!): Read the day's memory file Update SOUL.md if identity shifted Add to LEARNINGS.md if patterns discovered Record milestones in MEMORY.md Note key figures in AGENTS.md Run the prompts with an LLM: # Example with OpenClaw for f in ./my-agent/simulation/day-*.txt; do echo "Processing $f..." cat "$f" | openclaw chat --agent my-agent done
Add to OpenClaw config: { "id": "my-community", "workspace": "/path/to/my-agent", "memorySearch": { "enabled": true, "sources": ["memory"] }, "identity": { "name": "MyCommunity", "emoji": "🔧" }, "heartbeat": { "every": "6h", "model": "anthropic/claude-sonnet-4-5" } } Add binding (Telegram example): { "agentId": "my-community", "match": { "channel": "telegram", "peer": {"kind": "group", "id": "-100XXX:topic:TOPIC_ID"} } } Restart: openclaw gateway restart
Set up a cron job to update daily: ./scripts/update_agent.sh \ --agent ./my-agent \ --db ./discord.sqlite \ --guild YOUR_GUILD_ID This: Exports new messages since last run Merges into SQLite Regenerates today's memory file Wakes the agent
Once birthed, your agent can: Answer questions: "What were we talking about last week?" "Who's the expert on X topic?" "What's our stance on Y?" Remember culture: Inside jokes and memes Community values and norms Who helps whom Track patterns: Active times and channels Emerging topics Key contributors
ScriptPurposecreate_agent.shFull pipeline: export → agentingest_rich.pyJSON → SQLite with reactions/rolesgenerate_daily_memory.pySQLite → daily markdownsimulate_growth.pyGenerate soul emergence promptsincremental_export.shFetch new messages onlyupdate_agent.shDaily cron: export → memory → wake
ScriptPurposeregex-filter.pyFast pattern matching for injection attemptsevaluate-safety.pyHaiku-based semantic safety evaluationsecure-pipeline.shFull security pipeline wrapper
VariableDescriptionDISCORD_GUILD_IDYour Discord server IDDISCORD_SOUL_DBPath to SQLite databaseDISCORD_SOUL_AGENTPath to agent workspaceDISCORD_TOKEN_FILEToken file (default: ~/.config/discord-exporter-token)
"No messages in database" Check export directory has .json files Verify token has guild access "Memory files are empty" SQLite might have dates in wrong format Run: sqlite3 discord.sqlite "SELECT MIN(timestamp), MAX(timestamp) FROM messages" "Agent doesn't remember things" Check memorySearch.enabled: true in config Verify memory files are in the workspace "Simulation prompts seem confused" Process days IN ORDER — don't skip Let identity emerge, don't force it Your Discord has a soul. This skill helps you find it.
Messaging, meetings, inboxes, CRM, and teammate communication surfaces.
Largest current source with strong distribution and engagement signals.