create-image-fal
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Search for job postings across LinkedIn and Indeed. Use when users want to find open roles, monitor hiring signals, identify companies hiring for specific positions, or research competitor hiring activity. Returns job title, company, location, salary, description, seniority
$ npx -y skills add gooseworks-ai/goose-skills --skill job-scraper --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/job-scraperContext preview
The summary Claude sees to decide when to auto-load this skill.
Search for job postings across LinkedIn and Indeed. Use when users want to find open roles, monitor hiring signals, identify companies hiring for specific positions, or research competitor hiring activity. Returns job title, company, location, salary, description, seniority
name: job-scraper description: > Search for job postings across LinkedIn and Indeed. Use when users want to find open roles, monitor hiring signals, identify companies hiring for specific positions, or research competitor hiring activity. Returns job title, company, location, salary, description, seniority level, and direct apply URLs. No login or cookies required. tags: [lead-generation, research]
Search for job postings across LinkedIn and Indeed using Apify. Find open roles by keyword, location, company, or job type. Use for hiring signal detection, GTM research, or competitive intelligence.
No LinkedIn cookies. No Indeed login. Just search queries in, structured job data out.
Load this skill when:
Required for both LinkedIn and Indeed scraping. Set in `.env`:
APIFY_API_TOKEN=your_token_here
No LinkedIn cookies, Indeed login, or any platform credentials needed. That's the only setup.
---
This skill searches two job platforms via Apify actors:
| Source | Apify Actor | Best For | Cost | |--------|------------|----------|------| | **LinkedIn** | `automation-lab/linkedin-jobs-scraper` | B2B, tech, SaaS, enterprise roles. Has seniority level, job function, industries. | ~$0.002/job | | **Indeed** | `borderline/indeed-scraper` | Broadest coverage. Richest data — salary, company details, ratings, contacts, street addresses. | ~$0.004/job |
**Do NOT ask the user which source to use unless genuinely ambiguous.** Decide based on context:
1. **User specifies a source** → use that source only. 2. **Context strongly suggests one source:**
3. **No clear signal** → search **both sources**, deduplicate results by job title + company name, present combined results.
After deciding, **tell the user which source(s) you're searching and why.** Don't ask — inform.
---
Extract from the user's message:
If anything is ambiguous, pick reasonable defaults and tell the user what you chose. Do not ask clarifying questions for things you can reasonably infer.
**API call:**
curl -X POST "https://api.apify.com/v2/acts/automation-lab~linkedin-jobs-scraper/runs?token=$APIFY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQuery": "AI engineer",
"location": "San Francisco",
"maxItems": 25
}'**Input fields:** | Field | Type | Description | |-------|------|-------------| | `searchQuery` | string | Job title or keywords (required) | | `location` | string | City, state, or country (optional) | | `maxItems` | integer | Max jobs to return (default: 50) |
**Polling for results:**
# Check run status (poll every 10s)
curl "https://api.apify.com/v2/acts/automation-lab~linkedin-jobs-scraper/runs/{RUN_ID}?token=$APIFY_API_TOKEN"
# When status is SUCCEEDED, fetch results
curl "https://api.apify.com/v2/datasets/{DATASET_ID}/items?token=$APIFY_API_TOKEN"**Output fields per job:**
**API call:**
curl -X POST "https://api.apify.com/v2/acts/borderline~indeed-scraper/runs?token=$APIFY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"query": "AI engineer",
"location": "San Francisco, CA",
"country": "us",
"maxResults": 25
}'**Input fields:** | Field | Type | Description | |-------|------|-------------| | `query` | string | Job title or keywords (required) | | `location` | string | City and state (optional) | | `country` | string | Lowercase 2-letter country code (required). Common: `us`, `uk`, `ca`, `de`, `fr`, `in`, `au` | | `maxResults` | integer | Max jobs to return |
**Important:** The `country` field is required for Indeed. If the user doesn't specify a country, default to `us`. Use lowercase 2-letter codes only.
**Output fields per job:**
Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.
Repo: gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's…
Generate an instrumental music bed via ElevenLabs Music, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Trims any sparse intro, loudnorm, fades…
Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent. The…
Generate a voiceover (VO) clip via ElevenLabs text-to-speech, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Voice id + script text come from…
Scrape competitor ads from Google Ads by domain. Returns ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.