Agent skill
discord-webhook
Discord Webhook API for sending messages. Use when user says "send Discord message", "Discord webhook", or "post to Discord".
Install this agent skill to your Project
npx add-skill https://github.com/vm0-ai/vm0-skills/tree/main/discord-webhook
SKILL.md
Discord Webhook
Use Discord Webhooks via direct curl calls to send messages to Discord channels without setting up a bot.
Official docs:
https://discord.com/developers/docs/resources/webhook
When to Use
Use this skill when you need to:
- Send notifications to Discord channels
- Post alerts from CI/CD pipelines
- Share updates with rich embeds
- Upload files to channels
- Simple integrations without bot complexity
Prerequisites
- In Discord, go to Server Settings → Integrations → Webhooks
- Click "New Webhook"
- Choose a name and target channel
- Click "Copy Webhook URL"
export DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/1234567890/abcdefg..."
Security: Never expose webhook URLs publicly - they require no authentication.
How to Use
All examples below assume you have DISCORD_WEBHOOK_URL set.
1. Send Simple Message
Write to /tmp/discord_webhook_request.json:
{
"content": "Hello from webhook!"
}
Then run:
curl -s -X POST "$(printenv DISCORD_WEBHOOK_URL)" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
2. Send with Custom Username and Avatar
Write to /tmp/discord_webhook_request.json:
{
"content": "Alert!",
"username": "Alert Bot",
"avatar_url": "https://i.imgur.com/4M34hi2.png"
}
Then run:
curl -s -X POST "$(printenv DISCORD_WEBHOOK_URL)" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
3. Send Rich Embed
Write to /tmp/discord_webhook_request.json:
{
"embeds": [
{
"title": "Deployment Complete",
"description": "Version 1.2.3 deployed to production",
"color": 5763719,
"fields": [
{
"name": "Environment",
"value": "Production",
"inline": true
},
{
"name": "Status",
"value": "Success",
"inline": true
}
],
"timestamp": "2025-01-01T12:00:00.000Z"
}
]
}
Then run:
curl -s -X POST "$(printenv DISCORD_WEBHOOK_URL)" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
Common colors (decimal):
- Green:
5763719 - Red:
15548997 - Blue:
5793266 - Yellow:
16776960 - Orange:
16744192
4. Send Error Alert
Write to /tmp/discord_webhook_request.json:
{
"embeds": [
{
"title": "Error Alert",
"description": "Database connection failed",
"color": 15548997,
"fields": [
{
"name": "Service",
"value": "api-server"
},
{
"name": "Error",
"value": "Connection timeout"
}
],
"footer": {
"text": "Monitor"
}
}
]
}
Then run:
curl -s -X POST "$(printenv DISCORD_WEBHOOK_URL)" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
5. Send File Attachment
Write to /tmp/discord_webhook_payload.json:
{
"content": "Screenshot attached"
}
Then run:
curl -s -X POST "$(printenv DISCORD_WEBHOOK_URL)" -F "file1=@screenshot.png" -F 'payload_json=@/tmp/discord_webhook_payload.json'
6. Send Multiple Files
Write to /tmp/discord_webhook_payload.json:
{
"content": "Log files attached"
}
Then run:
curl -s -X POST "$(printenv DISCORD_WEBHOOK_URL)" -F "file1=@error.log" -F "file2=@debug.log" -F 'payload_json=@/tmp/discord_webhook_payload.json'
7. Send Multiple Embeds
Write to /tmp/discord_webhook_request.json:
{
"embeds": [
{
"title": "Build Started",
"color": 16776960
},
{
"title": "Tests Passed",
"color": 5763719
},
{
"title": "Deployed",
"color": 5793266
}
]
}
Then run:
curl -s -X POST "$(printenv DISCORD_WEBHOOK_URL)" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
8. Send with Mention
Write to /tmp/discord_webhook_request.json:
{
"content": "<@<your-user-id>> Check this out!",
"allowed_mentions": {
"users": ["<your-user-id>"]
}
}
Then run:
curl -s -X POST "$(printenv DISCORD_WEBHOOK_URL)" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
Replace <your-user-id> with the actual Discord user ID.
9. Send Silent Message (No Notification)
Write to /tmp/discord_webhook_request.json:
{
"content": "Silent update",
"flags": 4096
}
Then run:
curl -s -X POST "$(printenv DISCORD_WEBHOOK_URL)" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
10. CI/CD Pipeline Notification
Write to /tmp/discord_webhook_request.json:
{
"username": "GitHub Actions",
"embeds": [
{
"title": "Pipeline Status",
"color": 5763719,
"fields": [
{
"name": "Repository",
"value": "myorg/myrepo",
"inline": true
},
{
"name": "Branch",
"value": "main",
"inline": true
},
{
"name": "Commit",
"value": "abc1234",
"inline": true
},
{
"name": "Status",
"value": "Success"
}
],
"timestamp": "2025-01-01T12:00:00.000Z"
}
]
}
Then run:
curl -s -X POST "$(printenv DISCORD_WEBHOOK_URL)" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
Embed Structure
{
"title": "Title text",
"description": "Description text",
"url": "https://example.com",
"color": 5763719,
"fields": [
{"name": "Field 1", "value": "Value 1", "inline": true}
],
"author": {"name": "Author", "icon_url": "https://..."},
"footer": {"text": "Footer text"},
"thumbnail": {"url": "https://..."},
"image": {"url": "https://..."},
"timestamp": "2025-01-01T12:00:00.000Z"
}
Guidelines
- Rate limits: 30 requests per 60 seconds per webhook
- Message limit: 2000 characters for content
- Embed limits: Max 10 embeds, 6000 total characters
- File limits: Max 8MB per file (50MB with Nitro boost)
- Security: Treat webhook URLs like passwords
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
brave-search
Brave Search API for web search. Use when user says "search web", "Brave search", or asks to "find on web" without specifying Google.
supadata
Supadata API for YouTube/web data. Use when user mentions "Supadata", "YouTube data", "channel stats", or web scraping data.
roadmap-planning
Build and prioritize product roadmaps using scoring models like RICE, ICE, and value-effort matrices. Activate when creating a product roadmap, prioritizing features, sequencing initiatives, mapping dependencies, balancing team capacity, choosing between Now/Next/Later or quarterly planning, or communicating roadmap tradeoffs to executives and stakeholders.
qdrant
Qdrant API for vector search. Use when user mentions "Qdrant", "vector database", "semantic search", or embeddings storage.
calendly
Calendly scheduling API. Use when user mentions "Calendly", "calendly.com", "schedule a meeting", "booking link", "event types", or asks about interview scheduling.
stripe
Stripe API for payments. Use when user mentions "Stripe", "payment", "subscription", "billing", "invoice", or asks about payment processing.
Didn't find tool you were looking for?