Conference Intern
Discover, curate, and auto-register for crypto conference side events. Fetches events from Luma pages and community-curated Google Sheets, filters them using your preferences with LLM intelligence, and handles Luma RSVP via browser automation.
Quick Start
CODEBLOCK0
Commands
| Command | Script | Description |
|---|
| setup | INLINECODE0 | Interactive config — walks you through preferences, URLs, auth |
| discover |
bash scripts/discover.sh <id> | Fetch events from Luma + Google Sheets →
events.json |
| curate |
bash scripts/curate.sh <id> | LLM-driven filtering and ranking →
curated.md |
| register |
bash scripts/register.sh <id> | Auto-RSVP on Luma for recommended events |
| monitor |
bash scripts/monitor.sh <id> | Re-discover + re-curate, flag new events |
File Locations
Per-conference data lives in conferences/{conference-id}/:
- -
config.json — user preferences, URLs, strategy, user info - INLINECODE9 — all discovered events (normalized schema)
- INLINECODE10 — snapshot from last run (for monitoring diff)
- INLINECODE11 — the curated schedule output (grouped by day, tiered)
- INLINECODE12 — persisted Luma browser session cookies
- INLINECODE13 — user answers to custom RSVP fields (reused across registrations)
Skill-level shared files:
- -
luma-knowledge.md — shared Luma page patterns (learned by agent, speeds up registration)
Agent Instructions
CRITICAL: Always Use the Scripts
You MUST run the bash scripts for every pipeline stage. Do NOT attempt to perform discovery, curation, or registration yourself by browsing pages directly. The scripts handle looping, error recovery, state tracking, and tab cleanup that you cannot reliably do in a single agent turn.
When the user asks you to:
- - Set up a conference → run INLINECODE15
- Find/discover events → run INLINECODE16
- Curate/filter events → run INLINECODE17
- Register for events → run
bash scripts/register.sh <conference-id> (processes 10 events per batch) - Retry events needing input → run INLINECODE19
- Check for new events → run INLINECODE20
- Run the full pipeline → run each script in sequence: discover → curate → register
The scripts will invoke you for individual tasks (one event at a time for registration). Follow the prompts they give you. Never try to loop through events yourself — the scripts control the loop to ensure every event is attempted.
Browser Usage
When the scripts invoke you for browser tasks, use your browser capability to interact with pages. Do not hardcode CSS selectors or DOM paths. Instead:
- - Navigate to URLs and read the page content
- Interpret the page like a human — find event listings, registration forms, buttons
- This approach is evergreen — it works regardless of Luma UI changes
Registration (batch flow)
Registration processes events in batches of 10. You MUST follow this loop until all events are processed:
- 1. Run INLINECODE21
- IMMEDIATELY tell the user the batch results (registered/failed/needs-input/remaining counts)
- Read INLINECODE22
- If
new_fields is not empty: ask the user for answers, write them to INLINECODE24 - If
done is false: run register.sh again immediately for the next batch — do NOT wait for the user to ask - When
done is true and there are ⏳ Needs input events: run INLINECODE29 - Read
registration-status.json — if manual_registration is not empty, present the list to the user:
"These events need manual registration (not on Luma):"
-
Event Name for each entry
- 8. Report final results to the user
CRITICAL: After each batch completes, you MUST either run the next batch or tell the user why you stopped. Never silently stop between batches.
When invoked by the script for individual events:
- - Fill only mandatory/required fields on RSVP forms. Leave optional fields blank.
- If you encounter required fields you cannot fill, return
needs-input status with the field labels. - Never guess answers for custom fields — always defer to the user.
- If the user is already registered, return
registered status without touching the form. - Close the browser tab after each event — unless CAPTCHA is detected (keep that tab open).
Error Handling
The scripts handle most error recovery automatically. When invoked for a single event:
- - Page fails to load → return
failed status - CAPTCHA detected → return
captcha status (script will stop the loop) - Event full/closed → return
closed status - Session expired → return
session-expired status (script will stop the loop)
Stop Conditions
The registration script (register.sh) automatically stops and asks the user when:
- - CAPTCHA is detected (Luma likely flagged the session)
- Session expires mid-run
- Custom fields need answers (collects all unique fields, asks once per field)
Other pipeline stop conditions:
- - Zero events discovered → skip curate and register
- Zero events curated → skip register
会议实习生
发现、筛选并自动注册加密货币会议的周边活动。从Luma页面和社区整理的Google Sheets中获取活动,利用LLM智能根据您的偏好进行过滤,并通过浏览器自动化处理Luma的RSVP。
快速开始
bash
首次使用:交互式设置
bash scripts/setup.sh my-conference
运行完整流程
bash scripts/discover.sh my-conference
bash scripts/curate.sh my-conference
bash scripts/register.sh my-conference
或一次性完成
bash scripts/discover.sh my-conference && bash scripts/curate.sh my-conference && bash scripts/register.sh my-conference
监控新活动
bash scripts/monitor.sh my-conference
命令
| 命令 | 脚本 | 描述 |
|---|
| setup | bash scripts/setup.sh <名称> | 交互式配置 — 引导您设置偏好、URL、认证信息 |
| discover |
bash scripts/discover.sh
| 从Luma + Google Sheets获取活动 → events.json |
| curate | bash scripts/curate.sh | LLM驱动的筛选和排序 → curated.md |
| register | bash scripts/register.sh | 自动在Luma上RSVP推荐活动 |
| monitor | bash scripts/monitor.sh | 重新发现+重新筛选,标记新活动 |
文件位置
每个会议的数据存储在 conferences/{会议ID}/ 目录下:
- - config.json — 用户偏好、URL、策略、用户信息
- events.json — 所有发现的活动(标准化模式)
- events-previous.json — 上次运行的快照(用于监控差异)
- curated.md — 筛选后的日程输出(按天分组,分层级)
- luma-session.json — 持久化的Luma浏览器会话Cookie
- custom-answers.json — 用户对自定义RSVP字段的答案(跨注册复用)
技能级别共享文件:
- - luma-knowledge.md — 共享的Luma页面模式(由代理学习,加速注册)
代理指令
关键:始终使用脚本
您必须为每个流程阶段运行bash脚本。不要尝试通过直接浏览页面自行完成发现、筛选或注册。 脚本处理循环、错误恢复、状态跟踪和标签清理,这些您无法在单次代理操作中可靠完成。
当用户要求您:
- - 设置会议 → 运行 bash scripts/setup.sh <会议ID>
- 查找/发现活动 → 运行 bash scripts/discover.sh <会议ID>
- 筛选/过滤活动 → 运行 bash scripts/curate.sh <会议ID>
- 注册活动 → 运行 bash scripts/register.sh <会议ID>(每批处理10个活动)
- 重试需要输入的活动 → 运行 bash scripts/register.sh <会议ID> --retry-pending
- 检查新活动 → 运行 bash scripts/monitor.sh <会议ID>
- 运行完整流程 → 按顺序运行每个脚本:discover → curate → register
脚本会为单个任务调用您(注册时一次一个活动)。遵循它们给出的提示。永远不要自行循环处理活动 — 脚本控制循环以确保每个活动都被尝试。
浏览器使用
当脚本调用您执行浏览器任务时,使用您的浏览器能力与页面交互。不要硬编码CSS选择器或DOM路径。 相反:
- - 导航到URL并读取页面内容
- 像人类一样解读页面 — 查找活动列表、注册表单、按钮
- 这种方法永不过时 — 无论Luma UI如何变化都能工作
注册(批量流程)
注册以每批10个活动的方式处理。您必须遵循此循环直到所有活动处理完毕:
- 1. 运行 bash scripts/register.sh <会议ID>
- 立即告知用户 批次结果(已注册/失败/需要输入/剩余数量)
- 读取 conferences//registration-status.json
- 如果 newfields 不为空:询问用户答案,写入 conferences//custom-answers.json
- 如果 done 为false:立即再次运行 register.sh 处理下一批 — 不要等待用户询问
- 当 done 为true且有 ⏳ 需要输入 的活动时:运行 register.sh --retry-pending
- 读取 registration-status.json — 如果 manualregistration 不为空,向用户展示列表:
这些活动需要手动注册(不在Luma上):
- 每个条目的 活动名称
- 8. 向用户报告最终结果
关键: 每批完成后,您必须运行下一批或告知用户停止的原因。绝不要在批次之间无声停止。
当脚本为单个活动调用您时:
- - 仅在RSVP表单上填写必填/必需字段。可选字段留空。
- 如果遇到无法填写的必填字段,返回 needs-input 状态并附上字段标签。
- 永远不要猜测自定义字段的答案 — 始终交由用户决定。
- 如果用户已注册,返回 registered 状态,不触碰表单。
- 每个活动后关闭浏览器标签 — 除非检测到CAPTCHA(保持该标签页打开)。
错误处理
脚本会自动处理大多数错误恢复。当为单个活动调用时:
- - 页面加载失败 → 返回 failed 状态
- 检测到CAPTCHA → 返回 captcha 状态(脚本将停止循环)
- 活动已满/已关闭 → 返回 closed 状态
- 会话过期 → 返回 session-expired 状态(脚本将停止循环)
停止条件
注册脚本(register.sh)在以下情况自动停止并询问用户:
- - 检测到CAPTCHA(Luma可能标记了会话)
- 会话在运行中过期
- 自定义字段需要答案(收集所有唯一字段,每个字段询问一次)
其他流程停止条件:
- - 发现零个活动 → 跳过筛选和注册
- 筛选后零个活动 → 跳过注册