Linkedin Thread Monitor
sergebulaev/linkedin-skills
Track which of your LinkedIn comments earned author replies.
Extract clean, de-noised job-posting data from LinkedIn, Indeed, Glassdoor, and 20+ boards in one Apify run — deduplicated across boards, with likely ghost jobs and reposts flagged (heuristic, not…
$ npx skills add apify/awesome-skills --skill apify-jobs-data -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install apify/awesome-skills apify-jobs-data --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/apify/awesome-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/apify-jobs-data .claude/skills/apify-jobs-data && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "apify-jobs-data" agent skill from https://github.com/apify/awesome-skills/tree/main/skills/apify-jobs-data into .claude/skills/apify-jobs-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apify-jobs-data", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/apify/awesome-skills/tree/main/skills/apify-jobs-dataType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add apify/awesome-skills --skill apify-jobs-data -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install apify/awesome-skills apify-jobs-data --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/apify/awesome-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/apify-jobs-data .agents/skills/apify-jobs-data && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "apify-jobs-data" agent skill from https://github.com/apify/awesome-skills/tree/main/skills/apify-jobs-data into .agents/skills/apify-jobs-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apify-jobs-data", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add apify/awesome-skills --skill apify-jobs-data -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install apify/awesome-skills apify-jobs-data --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/apify/awesome-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/apify-jobs-data .cursor/skills/apify-jobs-data && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "apify-jobs-data" agent skill from https://github.com/apify/awesome-skills/tree/main/skills/apify-jobs-data into .cursor/skills/apify-jobs-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apify-jobs-data", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/apify/awesome-skills.git --path skills/apify-jobs-data--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add apify/awesome-skills --skill apify-jobs-data -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install apify/awesome-skills apify-jobs-data --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/apify/awesome-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/apify-jobs-data .gemini/skills/apify-jobs-data && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "apify-jobs-data" agent skill from https://github.com/apify/awesome-skills/tree/main/skills/apify-jobs-data into .gemini/skills/apify-jobs-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apify-jobs-data", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install apify/awesome-skills apify-jobs-dataInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add apify/awesome-skills --skill apify-jobs-data -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/apify/awesome-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/apify-jobs-data .github/skills/apify-jobs-data && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "apify-jobs-data" agent skill from https://github.com/apify/awesome-skills/tree/main/skills/apify-jobs-data into .github/skills/apify-jobs-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apify-jobs-data", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add apify/awesome-skills --skill apify-jobs-data -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install apify/awesome-skills apify-jobs-data --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/apify/awesome-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/apify-jobs-data .opencode/skills/apify-jobs-data && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "apify-jobs-data" agent skill from https://github.com/apify/awesome-skills/tree/main/skills/apify-jobs-data into .opencode/skills/apify-jobs-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apify-jobs-data", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
apify-jobs-dataExtract clean, de-noised job-posting data from LinkedIn, Indeed, Glassdoor, and 20+ boards in one Apify run — deduplicated across boards, with likely ghost jobs and reposts flagged (heuristic, not…
Apify Jobs Data is an agent skill from apify/awesome-skills, published by the product's own GitHub organization. Extract clean, de-noised job-posting data from LinkedIn, Indeed, Glassdoor, and 20+ boards in one Apify run — deduplicated across boards, with likely ghost jobs and reposts flagged (heuristic, not verified) and fields normalized — then analyze it (deduped hiring demand, in-demand skills, coverage-labeled salary distribution), export it (CSV / JSON / Apify dataset) for dashboards and BI, or rank it against a résumé. Use when the user asks to scrape job postings, build a job dataset, analyze hiring demand or…
Its SKILL.md is about 5.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files (for example `examples/example-market-analysis.md`, `examples/example-resume-fit.md` and `reference/actor-index.md`).
It sits in Data & Analytics, covering Web scraping. It works with Apify and LinkedIn. The repository describes itself as: Community collection of Apify agent skills for AI coding assistants. The licence is Apache-2.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1eb0cd0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curljqFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.apify.comAlso links to:
docs.apify.comconsole.apify.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
APIFY_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Apify Jobs Data loads about 5.5k tokens when it runs. Until then it costs about 235 tokens; SKILL.md has 2,559 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from apify/awesome-skills at commit 1eb0cd0, republished under its Apache-2.0 licence (© apify). 2,559 words, ~5,509 tokens.
.claude/skills/apify-jobs-data/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.Extract clean, structured job-posting data from 20+ boards in one Apify run, then put it to use. The pipeline is the same regardless of purpose:
acquire → de-noise → normalize → { analyze | export | rank by résumé }
The reusable value is the cleaned dataset: postings deduplicated across boards, cross-board reposts merged, likely ghost jobs flagged, and fields normalized to a consistent schema. Ghost-job and repost pollution corrupts demand counts, salary statistics, and dashboards just as much as it wastes a job seeker's time — so de-noise is the shared core, and every output mode runs on top of it.
Never invent a posting, a salary, a count, or a keyword. Everything is scraped live from a named Apify Actor and carries its source; missing fields stay blank, and every statistic reports the share of postings it is computed from — see Quality rules.
Ghost-job detection is heuristic and single-run: it compares the same (company, title, location) across boards for conflicting posted dates and reads the JD for pipeline language. The data carries no first-seen or edit history, so a flag is a suspicion, never a verdict. The Actors do the data work; the agent routes, de-noises, aggregates, and grounds:
| Step | Apify Actor | Agent |
|---|---|---|
| Acquire across 20+ boards | agentx/all-jobs-scraper | routes the query |
| De-noise ghost jobs / reposts | cross-board scraped fields — conflicting posted_date across boards, JD-body match across "company" names (no first-seen / edit-history field exists) | applies the rule |
| Salary benchmark (optional) | memo23/glassdoor-scraper-ppr | aggregates, labels coverage |
A more analysis-first skill may also answer "hiring demand / in-demand skills / salary" questions. This skill's center of gravity is the cleaned dataset — cross-board duplicates and reposts merged, likely ghost jobs flagged, and fields normalized — which every mode then runs on. If you only need a quick market read, an analysis-only skill is lighter. Reach for this one when data quality matters (deduped demand counts, coverage-labeled salary stats), when you need the raw rows exported to CSV / an Apify dataset for a dashboard, or when you need a résumé ranked against live postings — none of which an analysis-only skill produces.
The shared core (Steps 1–5) is identical; Step 6 produces whichever mode(s) the user wants. Default to whatever the request implies; if unclear, ask.
| Mode | Produces | Reference |
|---|---|---|
| Market & salary analysis | hiring demand on deduped counts (by company / location / seniority), in-demand skills, remote-hybrid mix, and coverage-labeled salary distribution | reference/analysis.md |
| Structured export | the normalized rows as CSV / JSON, or the raw Apify dataset ID for direct BI / dashboard ingestion | reference/output-formats.md |
| Résumé-fit | postings ranked against a résumé, with ATS-keyword gaps and apply-ready briefs | reference/fit-scoring.md |
This is a design goal, not an afterthought — keep every run as cheap as it can be while still answering the question:
reference/gotchas.md / the Apify console before quoting a number). A
typical run is cents to a few dollars.max_results is per platform (× every
platform the Actor supports for the country unless platforms is pinned), so pin
platforms and start small — a quick scan needs ~10–15/platform; a market analysis
~25–50/platform — and scale only if the result is too thin. Always estimate, and
confirm before a big run.memo23/glassdoor-scraper-ppr call per
company with maxItems ≤ 50 (its default is 20,000 rows per URL) gives a
better signal for less.(No need to check this upfront.)
Two execution paths — pick the one that matches your environment.
MCP path (default in an agent session with MCP, recommended). If the Apify MCP
server is connected, no setup is needed — auth runs through the user's Apify account.
Use the call-actor, get-actor-run, and get-dataset-items MCP tools.
CLI path (scripted / non-interactive execution). Requires the
Apify CLI v1.5.0+ and auth via apify login or an
APIFY_TOKEN env var (get a token).
Every CLI call in this skill carries three flags — --json,
--user-agent apify-awesome-skills/apify-jobs-data, and 2>/dev/null (apify api
prints JSON by itself and rejects --json — give it the other two).
Responsible use. These Actors scrape third-party boards (LinkedIn, Glassdoor, Indeed, ZipRecruiter and others) against those sites' Terms of Service — the user's call to make. All routes run on Apify's infrastructure (no user login), so they never put the user's own board accounts at risk.
Copy this checklist and track progress.
Task Progress:
- [ ] Step 0: Pick the output mode(s)
- [ ] Step 1: Collect the query anchors (one block)
- [ ] Step 2: Route to the right board Actor(s) (primary + fallback)
- [ ] Step 3: Build the input, estimate cost, confirm if over threshold
- [ ] Step 4: Run, wait, pull the dataset
- [ ] Step 5: De-noise + normalize into clean rows
- [ ] Step 6: Produce the selected mode(s) — analysis / export / résumé-fit
- [ ] Step 7: Deliver, with provenance and coverageDecide what the user wants done with the data — it changes only Step 6, not the shared core. Infer from the request; confirm if ambiguous:
Ask these as one block before any Actor call. Defaults shown — always surface
them so the user can override. (Anchor-block pattern from apify-verified-email-finder.)
senior backend engineer. Required.remote. Required. remote flips the remote-only filter on.auto (default → aggregator, all boards the Actor supports for the country) or a named subset passed as the aggregator's platforms array (exact enum values from the live schema — e.g. LinkedIn, Indeed, Glassdoor; Google Jobs is not in the enum). Drives Step 2 and cost (Step 3).max_results: 25 ≈ 25 × the platforms hit — every platform the Actor supports for the country unless platforms is pinned), minimum 1. Start small (10–15 for a quick scan, 25–50 for analysis) and scale only if the sample is too thin — together with platforms it's the main cost lever, so budget max_results × platforms (Cost discipline, Step 3). Maps to each Actor's own field (max_results for the aggregator / maxItemsPerSearch for Indeed / maxItems for Glassdoor — actor-index.md).2 weeks. The aggregator takes this as a natural-language string ("2 weeks", "1 month"), not a day count.salary_floor, remote_only, job_type (fulltime / contract / internship — no hyphen). Collect what the user volunteers.Fit (partial).Ambiguity rule: if role or location is missing or vague, ask one clarifying question before running. Never burn Actor compute on a guessed query.
Default to the aggregator — one run, 20+ boards (LinkedIn, Indeed, Glassdoor, ZipRecruiter, and more; not Google Jobs), country-aware routing, cheapest per-result. Every Actor here is pay-per-result — no subscriptions. The aggregator already covers LinkedIn cheaply, so there is no need for a per-board LinkedIn subscription Actor. If the user asks for Google Jobs specifically, say this skill does not cover it.
| User wants | Actor | Notes |
|---|---|---|
| All boards (default) | agentx/all-jobs-scraper | One query → LinkedIn, Indeed, Glassdoor, ZipRecruiter + 38 more in the live platforms enum (no Google Jobs). Pay-per-result (≈ $0.0035/job + $0.01 start, free tier, 2026-09-16). |
| Indeed only (cheap, focused) | misceres/indeed-scraper | Community, pay-per-result (≈ $0.006/job, free tier, 2026-09-16). |
| Glassdoor salary benchmark | memo23/glassdoor-scraper-ppr | Pay-per-result; analysis mode only, to cross-check posted salaries (analysis.md). |
Start with the aggregator unless the user explicitly wants a single board.
Named boards stay in one run: if the user names one or more boards, pass them in
the aggregator's platforms array (anchor #3) — a single run whatever the number of
boards, never one Actor per board. The only standalone route chosen up front is
misceres/indeed-scraper, and only when the user wants Indeed exclusively.
Per-board fallback rule: after the run, count rows per requested board that
match anchor #2 (location). A board the user named that comes back with zero (or
near-zero) in-area rows — blocked, or the Actor ignored the location, as Indeed's
path does — gets one fallback run with its standalone Actor from the table
(misceres/indeed-scraper for Indeed, capped with maxItemsPerSearch), if budget
and run count allow; its rows carry their own Source board and are deduped against
the aggregator's in Step 5. Only if budget or the run count is gone do you report the
board as a coverage gap instead — a board the user asked for is worth that one capped
run. The fallback is conditional on a measured zero: outside it, never run two
Actors against the same query. Never a second aggregator retry for the same board —
whatever the cause (blocked, location ignored, or TIMED-OUT before the board was
reached); do the per-board in-area count first, and if the aggregator timed out,
narrow platforms/max_results only in the first run's design, never in a rerun.
Full schemas and field mappings:
reference/actor-index.md.
Map anchors → the chosen Actor's field names (per-Actor table in reference/actor-index.md). Aggregator example:
{ "keyword": "senior backend engineer", "location": "Berlin",
"country": "Germany", "max_results": 50, "posted_since": "2 weeks", "remote_only": false }Verified-from-live-schema notes for the aggregator: country is a full country
name (Germany, United States), not an ISO-2 code; posted_since is a
natural-language string ("2 weeks"), not a number of days; job_type is
fulltime / parttime / contract / internship / all (no hyphen); and
max_results is per platform — with platforms empty the actor fans out to
every platform it supports for the country, so max_results: 50 can return several
hundred rows; pin platforms to bound it. Other Actors use their own field names
(actor-index.md).
Estimate before running. Formula and live rates in reference/gotchas.md. Guardrails:
max_results × boards. Keep
max_results modest to keep runs in the cents.MCP path: call-actor with actor, input, callOptions
{"timeout": 900, "memory": 2048}. It returns runId + datasetId. If status is
RUNNING, poll get-actor-run (waitSecs ≤ 45) until SUCCEEDED. Capture both IDs for
the run_metadata.json sidecar (and surface datasetId in export mode).
CLI path:
# Run options travel in --params: timeout 900 s (this skill's recommendation for the
# multi-board aggregator — same as the MCP callOptions above) paired with
# maxTotalChargeUsd = your Step 3 estimate (here the $5 warn threshold), the platform's
# cap on spend. `apify actors call` has no flag for maxTotalChargeUsd — use the API mode.
apify api POST "actors/agentx~all-jobs-scraper/runs" \
--params '{"timeout":900,"maxTotalChargeUsd":5}' \
--body '{"keyword":"senior backend engineer","location":"Berlin","country":"Germany","max_results":50,"posted_since":"2 weeks"}' \
--user-agent apify-awesome-skills/apify-jobs-data 2>/dev/null
# the response returns immediately (data.id, data.defaultDatasetId); wait for the run:
apify api GET "actor-runs/RUN_ID" --params '{"waitForFinish":60}' \
--user-agent apify-awesome-skills/apify-jobs-data 2>/dev/null # repeat until data.status is SUCCEEDED
# then, using data.defaultDatasetId:
apify datasets get-items DATASET_ID --format json \
--user-agent apify-awesome-skills/apify-jobs-data 2>/dev/null > /tmp/jobs.jsonOn the MCP path, pull with get-dataset-items (clean: true + a fields list). If
the dataset exceeds the response cap, fetch directly:
curl -H "Authorization: Bearer $APIFY_TOKEN" 'https://api.apify.com/v2/datasets/<id>/items?clean=true&fields=...' | jq
— auth goes in the header, never as ?token= in the URL (it lands in access
logs). On the CLI path prefer apify api GET "datasets/<id>/items" --params '{"clean":"true"}' --user-agent apify-awesome-skills/apify-jobs-data 2>/dev/null,
which authenticates itself.
Report every failure explicitly (Actor, input, error) — never silently drop a board. If a board returns 0 in-area rows, apply the per-board fallback rule (Step 2) before concluding "no data". A board returning 0 while others return results is usually a block, not an empty market.
The shared core. Two parts:
Remote rows with no stated region
(remote: unverified — kept, but not counted as in-area). Skipped rows are
kept in a separate Skipped section with a one-line reason — never silently
dropped. Apply the location check first, then hard filters, then dedupe, so the
funnel reads raw → after location check → after hard filters → after dedupe → clean.
Full detection logic: reference/skip-pass.md.Empty results are signal, not failure (from apify-easy-competitive-intelligence):
0 postings for a niche role in a small market is real information — report it, suggest
widening recency or location, don't fabricate filler rows.
Run on the clean, normalized rows from Step 5.
datasetId for direct ingestion. Schema and formats:
reference/output-formats.md.Whatever the mode, the remote: unverified rows from Step 5 travel with the output —
not just their count: in any table, as their own group below the in-area rows
(Remote — region unverified (K), same columns), never inside an "N in <city>"
figure; in the CSV / JSON rows, with remote: unverified in flags. A number in
the header alone is not delivery (reference/output-formats.md).
If the user picked more than one mode, produce each from the same run — no re-scrape.
Lead with a one-paragraph header: boards requested vs. boards that returned in-area
rows (a missing board is a coverage gap — say so), the funnel
(raw → after location check → after hard filters → after dedupe → clean, plus
flagged ghost/agency counts and "N remote postings without a stated region" — reported
separately, never inside the "in <city>" count; the N rows themselves follow the
in-area rows as their own group, Step 6), date window, and the run cost. Then the
mode output(s).
Source board(s) + apply URL per row; runId + datasetId in a
run_metadata.json sidecar so any figure is re-verifiable.apify-verified-email-finder / apify-link-prospecting-outreach.)Source board(s) + apply URL per row; runId + datasetId in
run_metadata.json so any row or figure is re-verifiable.apify-link-prospecting-outreach.)Every Actor here is pay-per-result — no subscriptions. Cost scales with
max_results × platforms, so keep both modest. The optional Glassdoor salary benchmark
adds a small per-company cost when maxItems is set. Live rates and the estimate
formula are in reference/gotchas.md
— always check the Apify console before a large run.
See reference/gotchas.md — board blocks, empty results, location-format quirks, per-board cost math, and recovery flows.
© apify, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 8 other files in skills/apify-jobs-data of apify/awesome-skills.
Open the folder on GitHubat commit 1eb0cd0
Apify Jobs Data next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Apify Jobs Data this skillapify/awesome-skills | 264 | — | ~5.5k | Automated safety check: Pass | Apache-2.0 | |
| Linkedin Thread Monitorsergebulaev/linkedin-skills | 4.3k | 1 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Job Scrapergooseworks-ai/goose-skills | 1.2k | 1 repos | ~2.6k | Automated safety check: Notes | MIT | |
| Lead Qualificationgooseworks-ai/goose-skills | 1.2k | 1 repos | ~3.8k | Automated safety check: Pass | MIT | |
| Signal Scannergooseworks-ai/goose-skills | 1.2k | 1 repos | ~1.4k | Automated safety check: Notes | MIT | |
| Linkedin Message Writergooseworks-ai/goose-skills | 1.2k | 1 repos | ~3.4k | Automated safety check: Notes | MIT |
sergebulaev/linkedin-skills
Track which of your LinkedIn comments earned author replies.
gooseworks-ai/goose-skills
Search for job postings across LinkedIn and Indeed. An agent skill from gooseworks-ai/goose-skills.
gooseworks-ai/goose-skills
Lead qualification engine with conversational intake. An agent skill from gooseworks-ai/goose-skills.
gooseworks-ai/goose-skills
Detect buying signals across TAM companies and watchlist personas.
gooseworks-ai/goose-skills
Research LinkedIn profiles and write personalized messages for any LinkedIn message type — connection requests, InMails, DMs, message requests, post comments, and comment replies.
majiayu000/claude-skill-registry
Scrape recent posts from LinkedIn profiles using Apify. An agent skill from majiayu000/claude-skill-registry.
apify/awesome-skills
Set up a recurring buying-signal detection pipeline that finds companies showing buying intent across three signal types — job postings (hiring for the persona), fundraising events (recent raises)…
apify/awesome-skills
Score and enrich a CSV of B2B leads using Apify Actors. An agent skill from apify/awesome-skills.
apify/awesome-skills
Wire an AI agent to live e-commerce product data using Apify's E-commerce Scraping Tool over MCP, either as runtime tool calls or as a scheduled refresh into a vector store.
apify/awesome-skills
Build TypeScript Apify orchestrator Actors — coordinate a sequence of sub-Actors (optionally with an LLM step) using the apify-orchestrator library.
apify/awesome-skills
Pull structured Apple App Store and Google Play data — app metadata, price, rating, the 1–5★ ratings histogram, version, developer, and reviews — and watch it for changes over time.
apify/awesome-skills
Scrape Ashby jobs or discover companies using Ashby with the Apify Ashby Job Board API Actor (johnvc/ashby-job-board-scraper).
Categories
Extract clean, de-noised job-posting data from LinkedIn, Indeed, Glassdoor, and 20+ boards in one Apify run — deduplicated across boards, with likely ghost jobs and reposts flagged (heuristic, not…. Apify Jobs Data is an agent skill from apify/awesome-skills, published by the product's own GitHub organization. Extract clean, de-noised job-posting data from LinkedIn, Indeed, Glassdoor, and 20+ boards in one Apify run — deduplicated across boards, with likely ghost jobs and reposts flagged (heuristic, not verified) and fields normalized — then analyze it (deduped hiring demand, in-demand skills, coverage-labeled salary distribution), export it (CSV / JSON / Apify dataset) for dashboards and BI, or rank it against a résumé.
Apify Jobs Data fits situations like: the user asks to scrape job postings; build a job dataset; analyze hiring demand; in-demand skills.
Run `npx skills add apify/awesome-skills --skill apify-jobs-data -a claude-code`. Or copy the skill folder (skills/apify-jobs-data in apify/awesome-skills) into .claude/skills/apify-jobs-data in your project. Claude Code loads it when a task matches its description.
Run `npx skills add apify/awesome-skills --skill apify-jobs-data -a codex`. Or copy the skill folder (skills/apify-jobs-data in apify/awesome-skills) into .agents/skills/apify-jobs-data in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add apify/awesome-skills --skill apify-jobs-data -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/apify-jobs-data, .gemini/skills/apify-jobs-data, .github/skills/apify-jobs-data and .opencode/skills/apify-jobs-data in your project.
Going by SKILL.md and its folder, Apify Jobs Data needs the command-line tools its instructions call (curl and jq) and credentials named APIFY_TOKEN. Our summary lists: A credential in APIFY_TOKEN.
SKILL.md names 3 domains. In commands or code: api.apify.com; the agent is likely to contact it when it follows the instructions. As links in the text: docs.apify.com and console.apify.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Apify Jobs Data is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.5k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Apify Jobs Data: Linkedin Thread Monitor (sergebulaev/linkedin-skills, 4.3k stars), Job Scraper (gooseworks-ai/goose-skills, 1.2k stars), Lead Qualification (gooseworks-ai/goose-skills, 1.2k stars) and Signal Scanner (gooseworks-ai/goose-skills, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
apify (a GitHub organization, an official publisher) maintains it in apify/awesome-skills, which has 264 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on September 22, 2026.
Source: apify/awesome-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.