Przejdź do treści
Biblioteka skilli
Sprzedaż i obsługa klienta · Research

diffbot-people

/diffbot-people

Wyszukuje osoby w Diffbot Knowledge Graph według stanowiska, pracodawcy, umiejętności, wykształcenia lub lokalizacji, wyłącznie z publiczną obecnością zawodową.

Repozytorium
diffbot-skills ↗
Licencja
MIT
Ostatnia zmiana repozytorium
28.09.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
1
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
1
Przestarzałość

Brak sygnałów. Repozytorium zmienione 28.09.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Wyszukuje osoby w Diffbot Knowledge Graph według stanowiska, pracodawcy, umiejętności, wykształcenia lub lokalizacji, wyłącznie z publiczną obecnością zawodową.

Oryginalny opis (EN)

Search people in the Diffbot Knowledge Graph by job title, employer, employer industry, skills, education, location, or nationality. Covers people with a public online professional presence only — not a people-finder for private individuals. MUST USE skill when the answer is a list of people: executives at a company, alumni of a school, who holds a role, or who has a skill. Rows are people, not companies. Triggers on: find people, who works at, executives at, employees of, CEO of, CTO of, leadership team, alumni of, people who studied, people with skill, board members, who founded.

Jak działa

  1. Workflow
  2. Traps
  3. Coverage — public presence only
Sekcje z nagłówków SKILL.md, w oryginale · 231 linii, 1 638 słów
Podgląd SKILL.md
---
name: diffbot-people
description: "Search people in the Diffbot Knowledge Graph by job title, employer, employer industry, skills, education, location, or nationality. Covers people with a public online professional presence only — not a people-finder for private individuals. MUST USE skill when the answer is a list of people: executives at a company, alumni of a school, who holds a role, or who has a skill. Rows are people, not companies. Triggers on: find people, who works at, executives at, employees of, CEO of, CTO of, leadership team, alumni of, people who studied, people with skill, board members, who founded."
allowed-tools: Bash(~/.diffbot/venv/bin/db:*), Bash(python3 -m venv ~/.diffbot/venv:*), Bash(~/.diffbot/venv/bin/pip install:*), Bash(jq:*)
---

# Diffbot People Search

Find people in the Diffbot Knowledge Graph. This is `type:Person` DQL with the
people-research levers pre-selected: employment history, employer industry,
education, skills, and location.

**Coverage is limited to people with a public online presence** — see the note at the
end before reporting an empty or partial result.

**Row shape decides the skill.** If the rows are people, this skill owns it —
including "who runs Nvidia". If the rows are companies ("companies whose CEO is
a woman"), use `/diffbot-organizations`. Sibling skills: `/diffbot-news`,
`/diffbot-places`, `/diffbot-deals`. Use `/diffbot-dql` for anything outside
these shapes.

## Workflow

### Step 1 — bootstrap

```
[ -d ~/.diffbot/venv ] || python3 -m venv ~/.diffbot/venv && ~/.diffbot/venv/bin/pip install -q 'diffbot>=3.0.0'
~/.diffbot/venv/bin/db dql init
```

Guard the venv creation as shown — re-running `python3 -m venv` on an existing venv overwrites activation scripts. `init` refreshes `~/.diffbot/ontology.json` and verifies a token (`DIFFBOT_API_TOKEN` env var, else `~/.diffbot/credentials`). If neither exists the user must run:

```
echo "DIFFBOT_API_TOKEN=YOUR_TOKEN_HERE" > ~/.diffbot/credentials && chmod 600 ~/.diffbot/credentials
```

Tokens: https://app.diffbot.com/get-started/. Never echo the token.

### Step 2 — the subquery rule comes first

`employments` is a **list** of jobs. Conditions written separately are matched
against *different* jobs, which silently inflates results. Co-constrain them
with `{}`:

```
✗ type:Person employments.{title:"Chief Executive Officer" isCurrent:true} employments.employer.categories.name:"Semiconductor Companies"
✓ type:Person employments.{title:"Chief Executive Officer" isCurrent:true employer.categories.name:"Semiconductor Companies"}
```

Measured: **3,457 hits vs 399**. The loose form matches anyone who was ever a CEO
*somewhere* and also worked at *some* semiconductor company — a different job.
Nearly 9 out of 10 of those rows are wrong.

**Put every condition about one job inside one `{}`.** The same applies to
`educations`, `colleagues`, and `locations`.

Add `isCurrent:true` whenever the user means the present ("who runs X", "current
CTO"); omit it for history ("everyone who has worked at X").

### Step 3 — the levers

#### Employer industry resolves — this is the headline capability

`employments.employer` is a full `Organization` link, so you can filter people by
their employer's industry, size, or location:

```
type:Person employments.{title:"Chief Technology Officer" isCurrent:true employer.categories.name:"Biotechnology Companies"}
type:Person employments.{isCurrent:true employer.location.country.name:"Germany" employer.nbEmployees>1000}
```

Look up category strings first — they are title-cased and usually plural:
`~/.diffbot/venv/bin/db dql ontology taxonomy OrganizationCategory <regex>`

(Contrast with `/diffbot-deals`, where `investee` is a bare `LinkedEntity` with no
categories. The employer link is richer — the deals trap does not apply here.)

#### Field reference

| Field | Type | Notes |
| --- | --- | --- |
| `name` / `allNames` | String | `nameDetail.firstName`, `.lastName`, `.nicknames` |
| `employments` | list | `.title`, `.employer.name`, `.isCurrent`, `.from`, `.to`, `.description`, `.location`, `.categories.name` (EmploymentCategory taxonomy), `.technologies.name` |
| `educations` | list | `.institution.name`, `.major.name`, `.degree.name`, `.isCurrent`, `.hasDroppedOut`, `.from`, `.to` |
| `skills` | list | `skills.name` — free-form skill entities |
| `location` / `locations` | Location | Singular is primary residence; same HQ-vs-offices split as Organization |
| `nationalities` | list | `nationalities.name` |
| `gender` | enum | `gender:"Female"` works; `gender.normalizedValue:"Female"` is equivalent. Values: Male, Female, Transgender_male, Transgender_female, Bigender, Agender, Trigender, Other |
| `age`, `birthDate`, `deathDate` | | `birthPlace`, `deathPlace` are Location composites |
| `netWorth.value` | Amount | See the caveat below |
| `awards` | list | `awards.title`, `awards.date` |
| `colleagues` | list | `.colleague.name`, `.relationship`, `.isCurrent` |
| `parents`, `children`, `siblings`, `unions` | list | Family graph |
| `politicalAffiliation` | list | Linked Organization |
| `importance` | Float | Prominence — the best general "most notable first" sort |
| `wikipediaPageviews` | Integer | Attention proxy, with quarter/year and growth variants |
| `linkedInUri`, `twitterUri`, `githubUri`, `crunchbaseUri`, `homepageUri` | URL | |
| `emailAddresses`, `phoneNumbers` | list | Sparse |

`type:PersonInvestor` (~57k) is a narrower type for angels and individual investors.

**Leave the sort off unless the user asked for an ordering.** The default ranking
already bakes in relevance and prominence, and an explicit sort overrides it — usually
for the worse. Measured: `homepageUri:"openai.com"` unsorted returns **OpenAI**, while
`revSortBy:nbEmployees` returns *"OpenAI for Developers"*; `anthropic.com` unsorted
returns **Anthropic**, sorted returns *"Claude Builder Club"*.

Add a sort only when the ordering *is* the question — "largest cities by population",
"most recent rounds", "biggest acquisitions". (Articles are the exception: see
`/diffbot-news`, where `sortBy:date` is the default.)

For people specifically: `strict:name:"Jensen Huang"` unsorted returns the records in
descending `importance` order already (97.2, then 13.6, then 10.1) — the Nvidia CEO
first, without asking for it.

#### Worked examples

```
type:Person employments.{employer.name:"Nvidia" isCurrent:true}
type:Person employments.{title:"Chief Executive Officer" isCurrent:true employer.categories.name:"Semiconductor Companies"}
type:Person educations.{institution.name:"Stanford University" major.name:"Computer Science"}
type:Person skills.name:"Machine Learning" location.city.name:"San Francisco"
type:Person gender:"Female" employments.{title:"Chief Executive Officer" isCurrent:true}
type:Person nationalities.name:"France" netWorth.value>1000000000 revSortBy:netWorth.value
```

### Step 4 — probe before committing

```
~/.diffbot/venv/bin/db dql probe \
  'type:Person employments.{employer.name:"Anthropic" isCurrent:true}' \
  'type:Person employments.{employer.name:"Anthropic" isCurrent:true title:"Engineer"}'
```

**Compare the `{}` and non-`{}` forms when a query has two or more employment
conditions.** A large gap means the loose form is matching across different jobs
and the subquery is required. `probe` fails the whole batch if any variant is
rejected, so fix the bad clause and re-run.

### Step 5 — export and display

```
~/.diffbot/venv/bin/db dql export "<DQL>" --out ~/.diffbot/tmp/people.csv \
  --spec "name,Name;employments.title,Title;employments.employer.name,Employer;location.city.name,City;linkedInUri,LinkedIn" \
  --size 50
```

**Display**

1. Render a markdown table — name, title, employer, location.
2. Print the final DQL in a plain code block, give the saved file path, and offer
   more rows (`--size N`, `--from K`) or a refinement.

## Traps

- **`--spec` renders the primary employment, not the matched one.** This is the trap
  most likely to make you report something false. Querying Tesla's founders returns the
  right *people* but the CSV shows their current jobs:

  | Name | Employer (as rendered) |
  | --- | --- |
  | Elon Musk | Neuralink |
  | Martin Eberhard | INEVIT |
  | JB Straubel | QuantumScape |

  All three genuinely co-founded Tesla; none of those employers is Tesla. Don't present
  the rendered employer as the matched one. Export JSON and pick the right entry:
  ```bash
  jq -r '.data[].entity | .name as $n | .employments[] | select(.employer.name|test("Tesla")) | "\($n)\t\(.title)\t\(.employer.name)"' ~/.diffbot/tmp/people.json
  ```
- **`descriptors` is effectively unpopulated on Person** (`descriptors:"venture
  capitalist"` → 0 hits), unlike Organization where it is a good fallback. Use
  `employments.title`, `skills.name`, or `summary` instead.
- **`netWorth` has extreme outliers** — the top of `revSortBy:netWorth.value`
  includes obviously bad values (a $96T record) and historical figures like Mansa
  Musa. Sanity-check the top rows before presenting, and prefer a bounded range.
- **Titles are free text, and the abbreviation is not a substring of the long form.**
  `title:"Chief Executive Officer"` → 521,798 current holders; adding the
  abbreviation, `title:or("Chief Executive Officer","CEO")` → **2,620,747**. Five
  times as many, and dropping them is a silent under-count, not an error. Always
  `or()` the abbreviation with the spelled-out form for C-suite roles (CEO, CTO, CFO,
  COO, CIO), and probe both. Note this is the opposite of a field like
  `investment.series`, where `"Series A"` already contains `"Series A-1"` and `or()`
  changes nothing — `or()` earns its keep only when the spellings genuinely differ.
- **Board membership is titled "Director", not "Board Member".** At Nvidia,
  `title:"Board Member"` finds **5** people; `title:or("Board Member","Board of
  Directors","Director")` finds **904**. Never answer a board question with the naive
  string — it under-counts by two orders of magnitude. ("Founder" is the happy
  opposite: it is a substring of "Co-Founder", so it catches both without `or()`.)
- **For the CEO or founders of one specific named company, don't scan Person — read the
  Organization.** It is a curated field and far cleaner than title matching, which drags
  in same-named companies (a Person scan for Tesla founders surfaced the *band* Tesla's
  guitarist). Note `get:` is required — these fields are absent from the default payload:
  ```
  ~/.diffbot/venv/bin/db dql export 'type:Organization homepageUri:"tesla.com" get:name,ceo,founders' --out ~/.diffbot/tmp/f.json --format json --size 1
  ```
  Returns `ceo=Elon Musk`, `founders=JB Straubel, Martin Eberhard, Ian Wright, Marc
  Tarpenning, Elon Musk`.

  **Match on `homepageUri`, not `name`, and do not sort.** Both alternatives fail:
  `strict:name:"Apple"` never matches the real company (its canonical name is
  "Apple Inc."), and adding `revSortBy:nbEmployees` returns *"OpenAI for Developers"*
  for openai.com and *"Claude Builder Club"* for anthropic.com. The domain plus the
  default relevance ranking is correct for all of apple.com, tesla.com, openai.com,
  anthropic.com, airbnb.com, nvidia.com, and stripe.com.

  Use `/diffbot-people` when the rows are people matching a *pattern*; use this when you
  want one company's known leadership.
- **Matching a specific person by name — use `strict:`.** `name:"…"` is a contains
  match, so a common name pulls in every partial hit. `strict:name:"Jensen Huang"`
  pins it. Person records also duplicate, so expect several rows for one individual.
- **Person records duplicate.** Same-name rows with different employers may be
  distinct people or the same person twice — say which when it matters.

## Coverage — public presence only

The Knowledge Graph is built from the public web, so this skill sees people who have a
public professional footprint: company pages, bylines, filings, conference listings,
profiles they chose to publish. It does not surface people who have not put themselves
online, and it is not a people-finder.

Two things follow, and both change how you report results:

- **Absence is not evidence.** Zero hits means "not publicly published", not that the
  person doesn't exist, doesn't hold the role, or isn't employed there. Say which one
  you actually know. Never present an empty result as a factual negative about someone.
- **Coverage is uneven, so counts are a floor and never a census.** Executives,
  founders, academics, authors, and public figures are dense; individual contributors,
  private-company staff, and people outside English-language sources are sparse.
  "15,227 people at Nvidia" is who is publicly documented, not the headcount — use
  `/diffbot-organizations` and `nbEmployees` for that.

If a request is really about locating, profiling, or compiling a dossier on a private
individual, this skill is the wrong tool and name matching is not a substitute. Say the
KG covers public professional presence and stop there.

Wersje

W bazie nie ma innych skilli o nazwie diffbot-people.

Migawka bazy z 28.10.2026 · wersja paczki e79d98f358ff (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100diffbot-organizations
    Wyszukuje firmy i organizacje w Diffbot Knowledge Graph według branży, siedziby, zatrudnienia, przychodów i finansowania oraz tworzy listy podobnych konkurentów.
  • 100diffbot-entities
    Rozpoznaje nazwane encje w tekście i łączy je z Diffbot Knowledge Graph, zwracając poziom pewności oraz sentyment.
  • 90anysite-people-sourcing
    Wyszukuje osoby masowo w bazie profili LinkedIn Anysite: filtry stanowisk, firm, byłych pracodawców, edukacji i umiejętności.
  • 100people-enrichment
    Wzbogaca listy osób i firm o dane z People Data Labs: stanowisko, pracodawca, historia pracy, LinkedIn i firmografika, oraz wyszukuje osoby według kryteriów.
  • 100clay-search
    Wyszukuje osoby według domeny, stanowiska, seniority, branży i lokalizacji przez Clay i Apollo i eksportuje listy prospektów do CSV, JSON lub SQLite pod dalszy outreach i wzbogacanie.
  • 100full-prospecting
    Wyszukuje i wzbogaca kontakty B2B pasujące do profilu idealnego klienta (ICP) według stanowiska, branży, lokalizacji i wielkości firmy.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.