Communitygithub.com

gooseworks-ai/goose-skills

Find speakers, hosts, and guest profiles at conferences and events on Luma. Two modes - free direct scrape for hosts, or Apify-powered search for full guest profiles with LinkedIn/Twitter/bio.

What is goose-skills?

goose-skills is a Claude Code agent skill that find speakers, hosts, and guest profiles at conferences and events on Luma. Two modes - free direct scrape for hosts, or Apify-powered search for full guest profiles with LinkedIn/Twitter/bio.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gooseworks-ai/goose-skills/tree/HEAD/skills/lead-generation/capabilities/luma-event-attendees

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

luma-event-attendees

Find and extract speakers, hosts, and registered guest profiles from Luma events for outreach prospecting.

Two Modes

1. Direct Scrape (free)

Scrapes Luma event pages directly. Gets event metadata + hosts. Guest profiles only if publicly embedded in the page.

python3 scripts/scrape_event.py https://lu.ma/abc123

2. Apify Search (paid, recommended for guest lists)

Uses the lexis-solutions/lu-ma-scraper Apify actor to search Luma and return full event data including featured guest profiles (name, bio, LinkedIn, Twitter, Instagram, website).

python3 scripts/scrape_event.py --search "AI San Francisco"

Cost: $29/month flat subscription on Apify. Rent: https://console.apify.com/actors/r5gMxLV2rOF3J1fxu

Setup

1. Apify API Token (required for --search mode)

  1. Create account: https://apify.com/
  2. Get API token: https://console.apify.com/account/integrations
  3. Rent the Luma scraper: https://console.apify.com/actors/r5gMxLV2rOF3J1fxu ($29/mo, 24h free trial)
  4. Set token:
export APIFY_API_TOKEN="apify_api_YOUR_TOKEN_HERE"
# Or create .env file in skill directory

2. Install Dependencies

pip3 install requests

Usage

Direct Scrape (free, hosts only)

# Single event
python3 scripts/scrape_event.py https://lu.ma/pwciozw0

# Multiple events
python3 scripts/scrape_event.py https://lu.ma/abc https://lu.ma/def

# Export to CSV
python3 scripts/scrape_event.py https://lu.ma/abc --output hosts.csv

Apify Search (guest profiles)

# Search for AI events in SF
python3 scripts/scrape_event.py --search "AI San Francisco"

# Just list events (don't extract people)
python3 scripts/scrape_event.py --search "SaaS NYC" --events-only

# Export all guests to CSV
python3 scripts/scrape_event.py --search "AI San Francisco" --output guests.csv

# Export as JSON
python3 scripts/scrape_event.py --search "AI SF" --output guests.json --json

Caching

Results cached for 24 hours by default:

# Force fresh fetch
python3 scripts/scrape_event.py --search "AI SF" --no-cache

# Custom cache duration
python3 scripts/scrape_event.py --search "AI SF" --cache-hours 12

Options Reference

Positional:
  urls                    Event URLs to scrape directly (free)

Search:
  --search, -s            Search Luma via Apify (e.g., 'AI San Francisco')
  --events-only           Only list events, don't extract people

Output:
  --output, -o            Output file path (.csv or .json)
  --json                  Output JSON format (default: CSV)

Cache:
  --no-cache              Skip cache, always fetch fresh
  --cache-hours           Cache max age in hours (default: 24)

Output Format

CSV Columns

nameevent_rolebiotitlecompanylinkedin_urltwitter_urlinstagram_urlwebsite_urlusernameevent_nameevent_dateevent_url

What You Get Per Person

  • name - Full name
  • event_role - Host, Guest, or Speaker
  • bio - Luma profile bio
  • linkedin_url - LinkedIn profile URL
  • twitter_url - Twitter/X profile URL
  • instagram_url - Instagram handle
  • website_url - Personal website
  • username - Luma username
  • event_name - Which event they're associated with
  • event_date - Event date (ISO format)
  • event_url - Link to the event

AI Agent Workflow

This skill is designed to be called by an AI agent as part of a prospecting workflow:

Step 1: Find Events

"Search Luma for AI and SaaS events in San Francisco"

python3 scripts/scrape_event.py --search "AI San Francisco" --events-only

Step 2: Extract Guest Profiles

"Get all guest profiles from those events"

python3 scripts/scrape_event.py --search "AI San Francisco" --output guests.csv

Step 3: Qualify Against ICP

Ask the agent to filter the CSV:

"From these guests, find founders/VPs at B2B SaaS companies, 20-200 employees"

Step 4: Enrich

For qualified leads:

  • Look up LinkedIn profiles for role/company details
  • Research their companies
  • Check for overlapping signals (hiring? recently funded?)

Step 5: Generate Outreach

"Draft connection requests for qualified guests. I'll be at [event]. We sell [product] at [price]. Keep it casual."

Data Access Realities

DataDirect Scrape (free)Apify Search (paid)
Event metadataYesYes
Hosts/organizersYesYes
Featured guests (public RSVPs)SometimesYes
Full attendee listNo (requires auth)Partial (public profiles only)
Guest LinkedIn/TwitterYes (if in page)Yes
Guest bioYes (if in page)Yes
Guest emailNoNo

Note: Luma events have a show_guest_list setting. When disabled, guest profiles aren't publicly accessible. The Apify scraper can still get featured_guests for events that have them.

Example Prompts

Quick search:

"Find AI events in SF this month and get me guest profiles"

Targeted:

"Search Luma for 'SaaS growth' events. Export all guest profiles to CSV. Then qualify against our ICP: VP+ at B2B SaaS, 50-500 employees."

Full workflow:

"Search Luma for AI and developer events in SF. Get all guest profiles. For each person with a LinkedIn, check if they match our ICP (founders/VPs at B2B SaaS, 20-200 employees, Series A-C). Draft pre-event connection requests for the ones I'll see at [event name]. We sell GTM engineering at $10K/month. Output qualified leads to CSV."

Troubleshooting

"APIFY_API_TOKEN not set"

export APIFY_API_TOKEN="your_token_here"

"Apify actor not rented"

Rent the Luma scraper at: https://console.apify.com/actors/r5gMxLV2rOF3J1fxu

No guests found for an event

  • The event may have show_guest_list disabled
  • Try the --search mode which can access featured_guests
  • Some events simply don't have public guest profiles

"ModuleNotFoundError: requests"

pip3 install requests

Metadata

metadata:
  clawdbot:
    emoji: "🎤"
    requires:
      env: ["APIFY_API_TOKEN"]
      bins: ["python3"]
      packages: ["requests"]

Built by Goose - Powered by Apify (lexis-solutions/lu-ma-scraper)

Individual skills in this repo

This repo contains 10 individual skills — each has its own dedicated page.

gooseworks-ai/goose-skills

Burned-in captions for a finished vertical video, three kinds. transcribe.py gets word timings from the video's own audio through the GooseWorks proxy (fal Whisper, bills the Ads agent, cents); captions.py burns one to three words at a time with Pillow + ffmpeg (no libass needed), either pinned to a split-screen seam (plate 25% above / 75% below) or at a fixed height, in a plate, outline or one-word serif style, with an optional red hook card; plates.py burns per-beat caption blocks (black, one union silhouette, placed in the emptiest band) for formats with no voice. The last caption (the CTA) holds to the final frame. Use as the last step of any video ad.

gooseworks-ai/goose-skills

Assemble a cartoon / animated / hand-crafted music-video ad from a config — a sung song carries the whole narrative while N per-bar i2v clips (one recurring animated character, one look pack) are each cut to their BAR window from librosa beat-tracking and hard-concatenated on the bar, VEED-whisper white bold-sans captions in the BOTTOM third (Alignment 2, above the logo bug, no pill) burned from the song's word timings re-spelled against the locked lyrics, a persistent brand logo bug held over the body (suppressed on the end card), and closed on a solid-brand-color PIL end card with the song still playing under it — never AI-rendered text. This is the FREE deterministic assembly stage (cut-to-bar + hard concat + logo bug + captions + end card + song mux); the song, character, keyframes, and clips come from create-music-elevenlabs / create-image-fal / create-video-fal. Use for the cartoon-music-video format.

gooseworks-ai/goose-skills

Assemble a cinematic live-action-style music-video ad from a config — an original sung anthem carries the whole narrative while N 35mm-film-look i2v clips are each cut to their lyric window and hard-concatenated on the beat as a 3-act arc, the anthem muxed at loudnorm I=-14, cinematic lower-third serif captions built from the song's OWN word timings (never Whisper) with the hook line landing on the chorus drop, and closed on a brand end card composited from the real asset — never AI-rendered text. This is the FREE deterministic assembly stage (cut-to-window + hard concat + anthem mux + captions + end card); the anthem, keyframes, and clips come from create-music-elevenlabs / create-image-gpt-image-fal / create-video-fal. Use for the cinematic-music-video format.

gooseworks-ai/goose-skills

Assemble an editorial-motion podcast-clip ad from a config — a real clipped podcast MP3 carries the narrative while N flat limited-palette editorial-illustration keyframes (one look pack) are animated NOT by generative i2v but by DETERMINISTIC ffmpeg ken-burns (zoompan) + hard cuts (no crossfades, which expose geometric drift), each beat snapped to its spoken line, the real audio muxed, Whisper-driven captions burned only mid-sentence, and closed on a PIL brand end card — never AI-rendered text. This is the FREE deterministic assembly stage (ffmpeg ken-burns + hard concat + audio mux + captions + end card); the real audio is clipped from source and the keyframes come from create-image-fal. Use for the editorial-motion-podcast format.

gooseworks-ai/goose-skills

Analyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.

gooseworks-ai/goose-skills

Generate a single 4-15s vertical video clip with ByteDance Seedance 2.0 reference-to-video via fal.ai. Multi-image reference (avatar + product + setting), native lip-synced VO + ambient audio (generate-audio on by default), internal multi-cut handling within one render. Routes through the GooseWorks FAL proxy (bills the Ads agent). The default clip atom for AI-creator UGC ads built on the NB2 + Seedance architecture. Validated on beauty-by-earth/video-01.

gooseworks-ai/goose-skills

Mandatory pre-publish review gate for a UGC video render. Transcribes the finished render's AUDIO with Whisper and word-diffs it against the approved spoken script, then gates set_final_render — blocking a render whose generated audio mis-voices a word (e.g. the approved "human-vetted" spoken as "human witted"), drops an approved phrase, or comes back silent. Runnable, gating counterpart to content-goose's review-transcript-integrity atom. Every ugc-video-formats recipe runs this after render and BEFORE set_final_render.

gooseworks-ai/goose-skills

Render pixel-accurate Apple Notes (iPhone, light mode) screenshot mockups from a JSON note spec. Outputs HTML + PNG at the iPhone 16/15 Pro native 1180×2556. Supports paragraphs, images, checklists, dividers, autocorrect underline, smart quotes, and an optional iOS keyboard chrome overlay used by the parent video-ad molecule.

gooseworks-ai/goose-skills

Extract competitor and customer intelligence from any company's landing page HTML. Discovers tech stack, analytics tools, ad pixels, customer logos, SEO metadata, CTAs, hidden elements, and more. No API keys required.

gooseworks-ai/goose-skills

Find Twitter/X influencers to promote a product or brand. Use when asked to find influencers, discover Twitter accounts for partnerships, identify creators in a niche, or build an influencer outreach list.

Related Skills