Luma Events Enhanced
by @firefrog-pepe
Fetch upcoming events from Luma (lu.ma) for any city. Use when the user asks about tech events, startup meetups, networking events, conferences, or things ha...
clawhub install luma-enhancedπ About This Skill
name: Luma Events Enhanced description: Fetch upcoming events from Luma (lu.ma) for any city. Use when the user asks about tech events, startup meetups, networking events, conferences, or things happening in cities around the world. Returns events with details including venue, date, hosts, ticket status, and links. version: 1.1.1 author: Clawd (forked and enhanced by Pepe) metadata: { "openclaw": { "emoji": "π ", "requires": { "bins": ["python3"] }, }, }
Luma Events Enhanced Skill
This skill allows the agent to fetch upcoming events from Luma (lu.ma) without authentication. It supports multiple cities, date filtering, and JSON output. Events are automatically persisted to ~/.openclaw/workspace/memory/luma-events.json and old events are pruned (>24h past start) to keep storage manageable.
Capabilities
fetch_events(city, days=30, max_events=20, json=False) β Fetch events for a city (or list of cities). Returns human-readable text or JSON.get_persisted_events() β Read stored events from memory file (useful for follow-up questions).prune_old_events(hours=24) β Remove events that ended more than N hours ago.Usage
The agent typically runs the CLI:
python3 scripts/fetch_events.py [cities...] [--days N] [--max N] [--json]
Parameters
city: City slug (lowercase, hyphenated), e.g., bengaluru, mumbai, san-francisco, new-york, lisbon, porto.--days N: Only include events occurring within the next N days (default: 30).--max N: Maximum number of events to return per city (default: 20).--json: Output raw JSON instead of formatted text.Output
Human-readable output prints each event with:
JSON output includes an array of event objects with fields:
city, name, start, end, url, venue, hosts[], guestCount, ticketStatus (free/paid/sold_out), spotsRemaining, isFree, lastFetchedPersistence
After fetching, events are merged into ~/.openclaw/workspace/memory/luma-events.json by event URL. On each run, the file is pruned to remove events older than 24 hours past their start time. This allows the agent to maintain context without re-fetching.
Examples
Find tech events this week
python3 scripts/fetch_events.py bengaluru --days 7
Check multiple cities for AI events
python3 scripts/fetch_events.py bengaluru mumbai san-francisco --days 14 --json | jq '.[] | .events[] | select(.event.name | contains("AI"))'
Get next 5 events in a city
python3 scripts/fetch_events.py new-york --max 5
Check if events are selling out
python3 ~/clawd/skills/luma/scripts/fetch_events.py mumbai --json | jq '.[] | .events[] | select(.ticket_info.is_near_capacity)'
Example Queries
User: "What tech events are happening in Bangalore this weekend?" β Fetch Bengaluru events for next 7 days, save to memory
User: "Any AI meetups in Mumbai next month?" β Fetch Mumbai events for next 30 days, filter for AI-related, save to memory
User: "Compare startup events in SF vs NYC" β Fetch both cities, compare, save both to memory
Notes
__NEXT_DATA__ script tag; no API key required.events array (e.g., Porto), the skill returns an empty result.Troubleshooting
Dependencies
urllib, json, re, argparse, datetime, os, sys)Changelog
v1.1.1 (2026-03-08)
regalstreak/luma on ClawHub.v1.1.0 (2026-02-20)
~/.openclaw/workspace/memory/luma-events.json.README.md; consolidated docs in SKILL.md.v1.0.0 (2026-01-29)
π‘ Examples
Find tech events this week
python3 scripts/fetch_events.py bengaluru --days 7
Check multiple cities for AI events
python3 scripts/fetch_events.py bengaluru mumbai san-francisco --days 14 --json | jq '.[] | .events[] | select(.event.name | contains("AI"))'
Get next 5 events in a city
python3 scripts/fetch_events.py new-york --max 5
Check if events are selling out
python3 ~/clawd/skills/luma/scripts/fetch_events.py mumbai --json | jq '.[] | .events[] | select(.ticket_info.is_near_capacity)'
π Tips & Best Practices
__NEXT_DATA__ script tag; no API key required.events array (e.g., Porto), the skill returns an empty result.