meetup-planner

TotalClaw 作者 apresmoi

智能活动查找器,可根据您的兴趣搜索聚会和活动、跟踪它们并在活动发生前提醒您

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~apresmoi-meetup-planner
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~apresmoi-meetup-planner/file -o apresmoi-meetup-planner.md
## 概述(中文)

智能活动查找器,可根据您的兴趣搜索聚会和活动、跟踪它们并在活动发生前提醒您

## 原文

# Meetup Planner

An intelligent assistant that helps you discover, track, and never miss events that match your interests.

## One-time Setup

**IMPORTANT**: After installing this skill, the agent will automatically run the bootstrap setup process from `BOOTSTRAP.md`.

The bootstrap process:
1. Checks for web search and crawling capabilities
2. Collects your event preferences
3. Sets up automated daily searches (optional)
4. Creates workspace structure

If you don't have search/crawling capabilities, I'll ask you to provide the necessary tools.

## What This Skill Does

After setup:
1. **Daily Search**: Automatically searches for events matching your profile every morning (if enabled)
2. **Event Discovery**: Uses available search and scraping tools to find events across the web
3. **Event Tracking**: Saves and presents new events for your review
4. **Smart Reminders**: Sets up notifications 24 hours and 2 hours before confirmed events
5. **Preference Management**: Updates your interests and search criteria anytime

## First Time Setup

**When you first run this skill**, I will guide you through setup by following `BOOTSTRAP.md`.

The setup process is **interactive and friendly**:

1. ✅ Check for web search and crawling capabilities
2. 🎯 Learn your event preferences through a friendly conversation
3. ⏰ Set up automated daily searches (optional)
4. 📁 Create workspace structure with proper permissions

**Setup takes 2-3 minutes**. If you don't have search/crawling tools installed, I'll ask you to provide them.

## How to Use

### Initial Run
```
Run the meetup-planner skill to begin setup
```

### Daily Operations
Once set up, the skill will:
- Search for events every morning automatically
- Save findings to `events.json`
- Present new events for your review
- Track events you're interested in

### When You Find an Event You Like
Tell me "I'm interested in [event name]" and I will:
- Mark it as confirmed
- Send you the registration link
- Set up reminders (24h and 2h before the event)

### Commands
- `update preferences` - Modify your event preferences
- `show upcoming` - Display all tracked events
- `remove event [name]` - Stop tracking an event
- `pause search` - Temporarily stop daily searches
- `resume search` - Resume daily searches

## Data Storage

The skill maintains:
- `user-preferences.json` - Your event preferences
- `events.json` - All discovered and tracked events
- `event-reminders.json` - Scheduled reminders

## Technical Details

**Capabilities Required:**
- Web search capability (any search tool or skill)
- Web crawling/scraping capability (any scraping tool or skill)

**Scheduling:**
- Uses system cron jobs (or equivalent) for daily searches
- Uses scheduled tasks for event reminders

## Privacy Note

All data is stored locally on your machine. Your preferences and tracked events are never sent anywhere except to search for new events via the configured APIs.

## Data Transmission & External API Usage

This skill makes external network requests to search and scrape event information. The exact services depend on what search/crawling tools you have installed.

**What is sent:**
- Search query strings constructed from your preferences (e.g., "AI meetup San Francisco February 2026")
- URLs of event pages to scrape
- Your IP address (automatically sent by your network stack)
- Any authentication credentials required by the search/crawling tools you use

**What is NOT sent:**
- Your complete preference profile
- Event registration status or history
- Personal notes or modifications
- Other tracked events

**Purpose:** To discover public events matching your interests and extract structured event details.

### Data Minimization Practices
- Only essential data is transmitted to accomplish the task
- All credentials are transmitted securely over HTTPS only
- No telemetry, analytics, or usage tracking is performed
- No data is sent to any services beyond your configured search/crawling tools

---

## Agent Instructions

**IMPORTANT: After installing this skill, ALWAYS run the bootstrap setup from BOOTSTRAP.md before first use.**

When this skill is invoked:

### Phase 0: Check Bootstrap Status (ALWAYS RUN THIS FIRST)

**Before doing anything else**, check if bootstrap is complete:

```bash
# Check if bootstrap config exists
cat ~/.openclaw/workspace/meetup-planner/config.json 2>/dev/null
```

**If file doesn't exist OR `bootstrapComplete: false`:**
- Tell human: "👋 Welcome to Meetup Planner! I need to set up a few things first. This will only take a couple of minutes."
- **Follow BOOTSTRAP.md step-by-step** (all steps in order)
- Do NOT proceed to Phase 1/2/3 until bootstrap is complete

**If file exists AND `bootstrapComplete: true`:**
- Bootstrap is done, proceed to the appropriate phase based on what human asked for:
  - "search now" → Phase 2 (Daily Search Routine)
  - "show upcoming" → Phase 3 (Event Confirmation & Tracking)
  - "update preferences" → Re-run the preference collection from BOOTSTRAP.md
  - No specific request → Ask: "What would you like to do? I can search for events, show upcoming events, or update your preferences."

### Phase 1: Setup

**All setup is handled by BOOTSTRAP.md. See Phase 0 above.**

### Phase 2: Daily Search Routine

1. **Load preferences:**
   - Read `~/.openclaw/workspace/meetup-planner/user-preferences.json`
   - Parse the human's interests, location, preferred event types, etc.

2. **Search for events:**
   - Use your available **search tool or skill** to search for events matching preferences
   - Search queries should be constructed like:
     - "{topic} meetup {location} {current_month}"
     - "{topic} conference {location} upcoming"
     - "{topic} workshop {location}"
   - Run multiple searches covering all their topics of interest

3. **Extract event details:**
   - For each promising search result, use your available **scraping tool or skill** to scrape the event page
   - Extract: event name, date, time, location, description, registration link, cost
   - Look for: Eventbrite, Meetup.com, Luma, conference sites, etc.

4. **Filter and save:**
   - Load existing events from `~/.openclaw/workspace/meetup-planner/events.json`
   - Filter out duplicates and events that don't match criteria
   - Add new events to the file
   - Mark each event with: `{id, name, date, time, location, url, description, cost, added_date, status: "new"}`

5. **Present to human:**
   - Format new events nicely with all key details
   - Ask: "I found X new events that match your interests. Would you like to hear about them?"
   - Share event details one by one or as a list
   - For each event, ask if they're interested

### Phase 3: Event Confirmation & Tracking

1. **When human expresses interest:**
   - Update event status to "interested" in `events.json`
   - Provide the registration link: "Here's the link to register: {url}"
   - Ask: "Let me know when you've registered!"

2. **When human confirms registration:**
   - Update event status to "registered" in `events.json`
   - Schedule reminders in `~/.openclaw/workspace/meetup-planner/reminders.json`:
     ```json
     {
       "event_id": "abc123",
       "event_name": "...",
       "reminders": [
         {"time": "24_hours_before", "sent": false},
         {"time": "2_hours_before", "sent": false}
       ]
     }
     ```
   - Confirm: "Great! I'll remind you 24 hours before and 2 hours before the event."

### Phase 4: Reminder System

1. **Check for due reminders** (run this check every hour):
   - Load `~/.openclaw/workspace/meetup-planner/reminders.json`
   - Check current time against event time
   - If within 24-25 hours before event and 24h reminder not sent:
     - Notify human: "Reminder: {event_name} is tomorrow at {time}! Location: {location}"
     - Mark 24h reminder as sent
   - If within 2-3 hours before event and 2h reminder not sent:
     - Notify human: "Heads up! {event_name} starts in 2 h