WastePickupReminder
Scanned@Apenklit
npx machina-cli add skill @Apenklit/waste-reminder --openclawWaste Reminder Skill
A flexible, token-efficient skill for automated waste container collection reminders.
Overview
This skill helps automate waste collection reminders based on user-defined schedules. It uses simple JSON configuration for maximum flexibility and minimal token usage.
How it works: The skill reads your config and schedule, determines which reminders need to be sent, and outputs them in a format that your AI assistant can process. The AI then sends the actual messages to the specified channels.
Output format:
SEND_TO:recipient_id
CHANNEL:whatsapp
Your message here
---
This approach keeps your configuration simple and token-efficient - the skill doesn't need API keys or direct network access.
Features
- Multiple container types
- Custom reminder schedules (up to 4 times per pickup)
- Flexible targeting (group, personal, escalation)
- Multi-channel support (WhatsApp, Telegram, Discord, Email) - messages sent by your AI
- Confirmation system (stops further reminders)
- Single schedule file
- Token-efficient - generates reminders without using AI tokens
Installation
clawhub install waste-reminder
Setup for Users
When you install this skill, the AI assistant will send you a config template. Reply in any language - the AI will understand and convert it to the correct format!
Example Template (Complete example with all options)
I want to set up waste reminders!
My containers:
- blue: Paper (šµ)
- gray: Residual (ā«)
- orange: Plastic (š )
- green: Garden (š¢)
Reminder times:
- 18:00: to group_whatsapp (day before, group notification)
- 22:00: to group_whatsapp (evening reminder to group)
- 06:30: to partner_whatsapp (morning, specific person)
- 09:30: to me_telegram (escalation, different channel)
My contacts:
- group_whatsapp: 123456789@g.us
- partner_whatsapp: +31600000001
- me_telegram: 222222222
Upcoming pickups:
- 2026-02-24: orange
- 2026-02-25: gray
- 2026-03-02: blue
The AI will convert this to the correct JSON format and set everything up.
Configuration
The skill stores configuration in:
/data/.openclaw/workspace/data/waste-reminder/
Files
waste-reminder/
āāā config.json # Your containers, reminder times, targets
āāā schedule.json # Your pickup dates and status
Complete config.json Example (all options shown)
{
"config_version": "1.0",
"containers": {
"blue": {"name": "Paper", "color": "blue", "emoji": "šµ"},
"gray": {"name": "Residual", "color": "gray", "emoji": "ā«"},
"orange": {"name": "Plastic", "color": "orange", "emoji": "š "},
"green": {"name": "Garden", "color": "green", "emoji": "š¢"}
},
"reminder_times": {
"18:00": {
"type": "group",
"template": "Tomorrow: {container_emoji} {container_name} will be collected!",
"target": "group_whatsapp"
},
"22:00": {
"type": "group",
"template": "Not confirmed yet - {container_emoji} needs to go out by 7am!",
"target": "group_whatsapp"
},
"06:30": {
"type": "personal",
"template": "ā ļø {container_emoji} put out NOW!",
"target": "partner_whatsapp"
},
"09:30": {
"type": "escalation",
"template": "Container still not outside!",
"target": "me_telegram"
}
},
"targets": {
"group_whatsapp": {"id": "123456789@g.us", "channel": "whatsapp"},
"partner_whatsapp": {"id": "+31600000001", "channel": "whatsapp"},
"partner_telegram": {"id": "111111111", "channel": "telegram"},
"me_whatsapp": {"id": "+31600000002", "channel": "whatsapp"},
"me_telegram": {"id": "222222222", "channel": "telegram"},
"me_discord": {"id": "https://discord.com/api/webhooks/...", "channel": "discord"}
}
}
Complete schedule.json Example
{
"2026-02-24": {
"orange": {
"confirmed": false,
"reminded_18:00": false,
"reminded_22:00": false,
"reminded_06:30": false,
"reminded_09:30": false
}
},
"2026-02-25": {
"gray": {
"confirmed": false,
"reminded_18:00": false,
"reminded_22:00": false,
"reminded_06:30": false,
"reminded_09:30": false
}
}
}
Cron Job
Add ONE cron job that runs every 15 minutes:
- Name: "Waste Reminder Check"
- Schedule: every 15 minutes
- Script:
/data/.openclaw/workspace/skills/waste-reminder/waste_cron.py
The cron script checks if any reminders need to be sent and outputs them. Your AI assistant (triggered by the cron job) reads this output and sends the actual messages to the appropriate channels.
User Commands
- Confirm: "container is out"
- View: "waste schedule" or "waste status"
- Add: "waste add [date] [container]"
- Remove: "waste remove [date] [container]"
Files
waste-reminder/
āāā SKILL.md # This file
āāā waste_reminder.py # CLI tool (manual commands)
āāā waste_cron.py # Cron script (every 15 min)
Template Placeholders
{container_emoji}- The emoji{container_name}- The name{date}- The date
Channel Support
Supported channels:
whatsapp- Use phone number or group ID as IDtelegram- Use chat IDdiscord- Use webhook URLemail- Use email address
Each target must specify both id and channel.
Target Naming Convention
Targets should be named with channel suffix:
group_whatsapp,group_telegram,group_discordme_whatsapp,me_telegram,me_discordpartner_whatsapp,partner_telegram,partner_discord
The channel is extracted from the target name automatically.
License
MIT License
Overview
WastePickupReminder automates waste container reminders using a simple JSON config and schedules. It supports multiple container types, up to four reminder times per pickup, and multi-channel delivery, all in a token-efficient flow with no API keys. The AI-generated SEND_TO payloads are delivered through your chosen channels by the assistant.
How This Skill Works
The skill reads a user-provided config.json and schedule.json, determines which reminders are due, and outputs them in a SEND_TO/CHANNEL format. The AI then delivers the messages to the specified channels (WhatsApp, Telegram, Discord, Email) without requiring direct network access or API keys.
When to Use It
- You manage multiple waste containers and want a single, scalable reminder setup (up to 4 times per pickup).
- You need reminders delivered across multiple channels (WhatsApp, Telegram, Discord, Email).
- You want an escalation and confirmation workflow to stop reminders after a recipient responds.
- You prefer a token-efficient configuration stored in a single schedule file and config.json.
- You want the AI to convert a human-friendly template into the correct JSON format for deployment.
Quick Start
- Step 1: Install the skill with clawhub install waste-reminder
- Step 2: Provide a sample or complete config.json via the AI template (containers, reminder_times, targets)
- Step 3: Let the AI generate the proper JSON, store it at /data/.openclaw/workspace/data/waste-reminder/, and deploy
Best Practices
- Define containers clearly with unique keys, names, colors, and emojis to keep messages informative.
- Use up to 4 reminder times per pickup to cover different audiences and time zones.
- Centralize targets in the targets section and keep IDs consistent across reminders.
- Test with a complete sample template before going live to ensure template messages render correctly.
- Enable the confirmation system to automatically halt further reminders after acknowledgment.
Example Use Cases
- A household uses blue (Paper), gray (Residual), orange (Plastic), and green (Garden) with 18:00 group, 22:00 group, 06:30 personal, and 09:30 escalation reminders across WhatsApp and Telegram.
- A neighborhood group sends group reminders to a WhatsApp channel for common pickups using a single config.json.
- A small business routes reminders to group WhatsApp, partner WhatsApp, and an escalation Telegram channel with tailored templates.
- If no one confirms, escalation continues until a human acknowledges, then the system stops automatically.
- One config.json manages multiple pickup dates, containers, and targets without duplicating config across dates.