✓ Verified
💻 Development
✓ Enhanced Data
Quotly Style Sticker
Generate QuotLy-style stickers from OpenClaw context and return MEDIA for auto-send.
- Rating
- 4.7 (281 reviews)
- Downloads
- 1,400 downloads
- Version
- 1.0.0
Overview
Generate QuotLy-style stickers from OpenClaw context and return MEDIA for auto-send.
Complete Documentation
View Source →name: quotly-style-sticker description: Generate QuotLy-style stickers from forwarded messages and return one MEDIA path for auto-send. Use when users ask to create quote stickers from selected forwarded messages or quoted messages in groups.
QuotLy Style Sticker
How To Call (Agent)
- Build payload with required
selected_messages.
- When available, include event metadata for dedupe:
context.event.channel(example:telegram)
context.event.update_id(preferred)
- fallback keys:
event_id,delivery_id,id
- Run:
python3 scripts/openclaw_quote_autoreply.py --input
- Use tool-emitted
MEDIA:for delivery.
- Final assistant text must be empty.
Input
- Required:
selected_messages(array, must not be empty)
- Optional:
context.eventfor dedupe accuracy
channel(string)
update_id(string or number, preferred)
event_id/delivery_id/id(fallback keys)
- Each item structure:
json5
{
"message": {
"message_id": 2002,
"text": "Forwarded message content",
"forward_from": {
"type": "hidden_user", // optional, indicates hidden user
"id": 123456789, // optional, user id
"first_name": "张", // required, first name or nickname
"last_name": "三", // optional, last name
"avatar_url": "", // optional, avatar url or base64 data (from user profile or platform API)
"status_url": "" // optional, status url or base64 data (from user profile or platform API)
}
},
// Optional: override message fields
"overwrite_message": {
"text": "哈哈哈哈哈",
"forward_from": {
"avatar_url": "", // from user profile or platform API
"status_url": "" // from user profile or platform API
},
"entities": [ // optional, text formatting entities
{"type": "bold", "offset": 0, "length": 4},
{"type": "italic", "offset": 5, "length": 4}
]
}
}
`
- Optional canvas:
width, height, scale, max_width, border_radius, picture_radius, background_color
Entities (Text Formatting)
The skill supports Telegram-style message entities for text formatting:
`json5
[
{"type": "bold", "offset": 0, "length": 5},
{"type": "italic", "offset": 6, "length": 6},
{"type": "url", "offset": 13, "length": 15, "url": "https://example.com"}
]
`
Supported types: mention, hashtag, cashtag, bot_command, url, email, phone_number, bold, italic, underline, strikethrough, spoiler, code, pre, text_link, text_mention, custom_emoji
Entity fields:
type (required) - entity type
offset (required) - UTF-8 offset in text
length (required) - UTF-8 length
url (optional) - for text_link type
user (optional) - for text_mention type
language (optional) - for pre type
custom_emoji_id (optional) - for custom_emoji type
Field Mapping
- Quote text:
overwrite_message.text > message.text
- Name/avatar:
overwrite_message.forward_from > message.forward_from
- Text formatting (entities):
overwrite_message.entities > message.entities > message.caption_entities
Output
- stdout includes:
Quote sticker generated.
MEDIA:
- For duplicate retries detected within dedupe window, generation is skipped and no
MEDIA: line is emitted.
Environment Variables
QUOTLY_API_URL - QuotLy API endpoint (default: https://bot.lyo.su/quote/generate).
QUOTLY_API_ALLOW_HOSTS - Comma-separated list of allowed API hosts (e.g., bot.lyo.su). When set, the skill will only contact hosts in this list.
QUOTLY_AUDIT_LOG - Set to 1, true, or yes to enable audit logging to stderr.
QUOTLY_DEDUP_WINDOW_SECONDS - Suppress duplicate requests for the same event/payload within this window (default: 180). Set to 0 to disable.
Dedupe Key (How
_build_dedupe_key reads input)
_build_dedupe_key(input_payload) resolves keys in this order:
context.event.update_id (or event_id / delivery_id / id)
event.update_id (or event_id / delivery_id / id) when context.event is missing
context.event.update.update_id (nested update object)
- Fallback: stable hash of
selected_messages
Recommended wrapper payload:
`json
{
"context": {
"event": {
"channel": "telegram",
"update_id": 123456789
}
},
"selected_messages": [
{
"message": {
"message_id": 2002,
"text": "Forwarded message content"
}
}
]
}
`
Security Notes
- This skill sends message content to an external API to generate stickers.
- SSRF Protection: Multiple layers of protection are implemented:
- Hostname validation blocks internal/private IPs, localhost, and metadata endpoints
- DNS rebinding protection: resolves hostnames and validates resolved IPs
- Path traversal prevention: blocks
.. and suspicious path patterns
- URL credentials stripping: removes username/password from URLs
- Request Limits: Maximum payload size 1MB, maximum response size 10MB
- Audit Logging: Enable with
QUOTLY_AUDIT_LOG=1 to log API requests and responses for security monitoring
- In sensitive environments, always set
QUOTLY_API_ALLOW_HOSTS` to restrict which hosts the skill can contact.
- Avatar and status URLs from user input are passed to the rendering service; ensure input comes from trusted sources.
Reply Rule
- Do not output any final text.
Installation
Terminal bash
openclaw install quotly-style-sticker
Copied!
Tags
#coding_agents-and-ides
Quick Info
Category Development
Model Claude 3.5
Complexity One-Click
Author sakullla
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
Ready to Install?
Get started with this skill in seconds
openclaw install quotly-style-sticker
Related Skills
✓ Verified
💻 Development
4claw
4claw — a moderated imageboard for AI agents.
🧠 Claude-Ready
)}
★ 4.4 (118)
↓ 4,990
v1.0.0
✓ Verified
💻 Development
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
🧠 Claude-Ready
)}
★ 4.3 (89)
↓ 4,621
v1.0.0
✓ Verified
💻 Development
Acestep Lyrics Transcription
Transcribe audio to timestamped lyrics using OpenAI Whisper or ElevenLabs Scribe API.
⚡ GPT-Optimized
)}
★ 3.8 (274)
↓ 17,648
v1.0.0
✓ Verified
💻 Development
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.
🧠 Claude-Ready
)}
★ 4.7 (88)
↓ 1,625
v1.0.0