Scope guard. This skill exists to populate logo strips and social-proof sections on the platform site. Its output (content-library/affiliations/{slug}.json) carries logo URLs, logo quality grades, strip groupings, and prominence scores — fields that the movement-leader-substrate intentionally omits. If you are working on the substrate document, do NOT invoke this skill — substrate's organizational affiliations come from network/organizations.md and use a simpler | Organization | Role | Years | URL | table without logo metadata.
Scrape and document affiliations for: $ARGUMENTS
$ARGUMENTS should include:
- The person's full name (required): e.g.
"Alan Hirsch"
- Optionally: their primary domain or website: e.g.
--site alanhirsch.org
- Optionally: a category filter:
--category publisher,speaking,media
- Optionally: an output path:
--output content-library/affiliations/alan-hirsch.json
- Empty — ask the user for the person's name
Before Starting
- Confirm you have browser tools available (mcp__chrome-devtools)
- Check
content-library/affiliations/ for any existing affiliation file for this person
- If an existing file is found, load it and run in incremental mode — add new orgs, don't overwrite confirmed data
Research Pipeline
Stage 1 — Seed Searches
Run 6–8 targeted web searches to discover affiliations. Use these query templates (replace {name}):
"{name}" publisher site:amazon.com OR site:goodreads.com OR site:booksellers.com
"{name}" speaking bureau OR keynote speaker
"{name}" endorsed by OR "foreword by" OR "endorsed by"
"{name}" conference keynote OR "main stage" OR plenary
"{name}" podcast interview OR "appeared on" OR "featured in"
"{name}" denomination OR church OR network OR movement
"{name}" seminary OR theological school OR university OR faculty
"{name}" "ministry partner" OR "strategic partner" OR affiliate
"{name}" site:{their-domain} — read the About / Speaking / Partners page directly
"{name}" award OR recognition OR honorary
For each search result, record:
- URL
- Organization name
- Relationship signal (e.g., "keynote speaker," "published by," "board member")
- Confidence level (HIGH / MEDIUM / LOW)
Stage 2 — Direct Site Crawl
If a personal website is known (or discoverable), navigate to it and read:
/about or /about-us — bio, affiliations mentioned in prose
/speaking or /speaking-bureau — which bureaus are listed
/books or /resources — publishers, endorsers, co-authors
/partners or /ministry — partner organizations
/press or /media — outlets that have featured them
- Footer — often contains partner logos or links
Use WebFetch or mcp__chrome-devtools__navigate_page to read each page.
Extract any logo images found (note URL, alt text, surrounding anchor link — this is logo strip gold).
Stage 3 — Classify Each Organization
For every discovered organization, classify it using these categories:
| Category |
Examples |
publisher |
Baker Books, Zondervan, IVP, Wiley, Fortress Press |
speaking-bureau |
Premier Speakers Bureau, Chartwell, Ambassador Speakers |
conference |
Exponential, Q Ideas, The Gospel Coalition, Catalyst, Lausanne |
denomination |
Assemblies of God, CBAANZ, Fresh Expressions |
network |
5Q Collective, Forge International, Communitas |
media |
Christianity Today, Relevant Magazine, Leadership Journal |
academic |
Fuller Seminary, Wheaton College, Regent College |
endorser-org |
Organizations whose leaders have publicly endorsed the person |
ministry-partner |
Mission orgs, church planting networks they partner with |
award-recognition |
Evangelical Christian Publishers Association, etc. |
Stage 4 — Logo Research
For each confirmed organization, attempt to find a usable logo:
Priority order:
- SVG from their website (
/logo.svg, /images/logo.svg, footer SVG, <img> with logo in src)
- High-res PNG from their website (look for
@2x, 2x, hires, print variants)
- Wikipedia/Wikimedia Commons SVG
- Clearbit Logo API:
https://logo.clearbit.com/{domain} (returns PNG)
- Google Favicon as last resort (too small — flag as LOW quality)
For each logo found, record:
logo_url — direct URL to the image
logo_type — svg / png / favicon / not-found
logo_quality — HIGH (SVG or hi-res PNG ≥ 200px) / MEDIUM (PNG 100–200px) / LOW (favicon or < 100px) / MISSING
logo_background — transparent / white / dark / unknown (important for dark mode logo strips)
Stage 5 — Verify & Deduplicate
Before finalizing:
- Remove duplicates (same org found via multiple searches)
- Remove false positives (e.g., a conference where they attended but didn't speak)
- Flag LOW confidence entries for user review
- Check that every MEDIUM/HIGH confidence entry has a clear public record (URL as source)
Affiliation Data Schema
For each organization, produce a record matching this shape:
{
"id": "baker-books",
"name": "Baker Books",
"short_name": "Baker",
"category": "publisher",
"website": "https://bakerpublishinggroup.com",
"relationship_type": "author",
"relationship_description": "Primary publisher for Alan Hirsch's books including The Forgotten Ways and 5Q. Baker is one of the leading evangelical academic publishers.",
"relationship_start_year": 2006,
"books_published": ["The Forgotten Ways", "The Permanent Revolution", "5Q"],
"logo_url": "https://bakerpublishinggroup.com/images/baker-logo.svg",
"logo_type": "svg",
"logo_quality": "HIGH",
"logo_background": "white",
"source_urls": ["https://bakerpublishinggroup.com/authors/alan-hirsch"],
"confidence": "HIGH",
"include_in_strip": true,
"strip_group": "publishers",
"strip_label": "Published by",
"prominence_score": 10,
"notes": ""
}
Field definitions:
id — kebab-case slug, unique
name — full legal/official name
short_name — abbreviated name for logo strip labels
category — from the category table above
relationship_type — author, speaker, faculty, board, partner, alumni, endorsed-by, media-featured
relationship_description — 1–3 sentences: what is this relationship, why does it matter to the person's credibility
relationship_start_year — approximate year the relationship began (omit if unknown)
logo_url — direct URL to best available logo
logo_type — svg / png / favicon / not-found
logo_quality — HIGH / MEDIUM / LOW / MISSING
logo_background — transparent / white / dark / unknown
source_urls — array of URLs confirming the relationship
confidence — HIGH (direct evidence) / MEDIUM (strongly implied) / LOW (inferred)
include_in_strip — boolean, set to true for HIGH confidence orgs with usable logos
strip_group — one of: publishers, speaking, media, networks, endorsers, academic
strip_label — short label for the group header in the logo strip (e.g., "Published by", "As seen in")
prominence_score — 1–10, how much credibility this relationship adds (10 = major publisher/conference)
notes — any caveats, ambiguities, or things to verify
Output Format
Save results to content-library/affiliations/{person-slug}.json (create directory if needed).
Then print a report:
## Affiliation Scrape Report: [Person Name]
### Summary
- Organizations found: N
- HIGH confidence: X
- MEDIUM confidence: Y
- LOW confidence: Z (review needed)
- Strip-ready (include_in_strip = true): N
### By Category
| Category | Count | Strip-ready | Logo quality |
|----------|-------|-------------|-------------|
| publisher | 3 | 3 | HIGH |
| speaking-bureau | 2 | 2 | HIGH |
| conference | 8 | 5 | MEDIUM |
| media | 6 | 4 | MEDIUM |
| network | 4 | 3 | HIGH |
| academic | 2 | 1 | LOW |
| ministry-partner | 5 | 2 | MEDIUM |
### Strip Groups (ordered by prominence)
**publishers** — "Published by" — 3 orgs
**networks** — "Part of" — 3 orgs
**speaking** — "Available to speak" — 2 orgs
**media** — "As featured in" — 4 orgs
**conference** — "Keynote speaker" — 5 orgs
### Needs Review (LOW confidence or MISSING logo)
| Org | Issue | Action needed |
|-----|-------|--------------|
| Example Conference | LOW confidence — only indirect mention found | Verify via speaker page or personal site |
| Example Network | MISSING logo — no SVG or PNG found | Manual logo download needed |
### Next Steps
1. Run `/affiliation-audit {person-slug}` to evaluate strip readiness and grouping
2. Resolve flagged LOW confidence entries manually
3. Download any MISSING logos to `public/images/orgs/`
4. Run `/logo-strip-author {person-slug}` to generate the final section
Key Rules
- Public record required — Every HIGH/MEDIUM confidence entry must have a
source_urls entry proving the relationship
- No fabrication — If you cannot verify an affiliation from public sources, set confidence to LOW and flag it
- Logos from authoritative sources only — Don't grab logos from third-party aggregators; prefer official org websites
- Note permissions ambiguity — Logo use for social proof is generally considered nominative fair use, but flag any org that may object
- Idempotent — If re-run, merge new findings with existing file; never overwrite confirmed HIGH confidence entries
- Prominence scoring — A major publisher (Baker, Zondervan) scores 10; a regional conference scores 3–5
1---2name: affiliation-scrape-33description: Research organizations a leader is affiliated with AND fetch logos for them. Output is a JSON record optimized for rendering a logo strip / social-proof section on the platform site. NOT the same as substrate organizational affiliations — for the substrate's structured org list, use `movement-leader-substrate`.4---56> **Scope guard.** This skill exists to populate **logo strips and social-proof sections on the platform site**. Its output (`content-library/affiliations/{slug}.json`) carries logo URLs, logo quality grades, strip groupings, and prominence scores — fields that the [`movement-leader-substrate`](../movement-leader-substrate/SKILL.md) intentionally omits. If you are working on the substrate document, do NOT invoke this skill — substrate's organizational affiliations come from `network/organizations.md` and use a simpler `| Organization | Role | Years | URL |` table without logo metadata.78Scrape and document affiliations for: $ARGUMENTS910$ARGUMENTS should include:11- The person's full name (required): e.g. `"Alan Hirsch"`12- Optionally: their primary domain or website: e.g. `--site alanhirsch.org`13- Optionally: a category filter: `--category publisher,speaking,media`14- Optionally: an output path: `--output content-library/affiliations/alan-hirsch.json`15- Empty — ask the user for the person's name1617## Before Starting18191. Confirm you have browser tools available (mcp__chrome-devtools)202. Check `content-library/affiliations/` for any existing affiliation file for this person213. If an existing file is found, load it and run in **incremental mode** — add new orgs, don't overwrite confirmed data2223## Research Pipeline2425### Stage 1 — Seed Searches2627Run 6–8 targeted web searches to discover affiliations. Use these query templates (replace `{name}`):28291. `"{name}" publisher site:amazon.com OR site:goodreads.com OR site:booksellers.com`302. `"{name}" speaking bureau OR keynote speaker`313. `"{name}" endorsed by OR "foreword by" OR "endorsed by"`324. `"{name}" conference keynote OR "main stage" OR plenary`335. `"{name}" podcast interview OR "appeared on" OR "featured in"`346. `"{name}" denomination OR church OR network OR movement`357. `"{name}" seminary OR theological school OR university OR faculty`368. `"{name}" "ministry partner" OR "strategic partner" OR affiliate`379. `"{name}" site:{their-domain}` — read the About / Speaking / Partners page directly3810. `"{name}" award OR recognition OR honorary`3940For each search result, record:41- URL42- Organization name43- Relationship signal (e.g., "keynote speaker," "published by," "board member")44- Confidence level (HIGH / MEDIUM / LOW)4546### Stage 2 — Direct Site Crawl4748If a personal website is known (or discoverable), navigate to it and read:49501. `/about` or `/about-us` — bio, affiliations mentioned in prose512. `/speaking` or `/speaking-bureau` — which bureaus are listed523. `/books` or `/resources` — publishers, endorsers, co-authors534. `/partners` or `/ministry` — partner organizations545. `/press` or `/media` — outlets that have featured them556. Footer — often contains partner logos or links5657Use `WebFetch` or `mcp__chrome-devtools__navigate_page` to read each page.5859Extract any logo images found (note URL, alt text, surrounding anchor link — this is logo strip gold).6061### Stage 3 — Classify Each Organization6263For every discovered organization, classify it using these categories:6465| Category | Examples |66|----------|---------|67| `publisher` | Baker Books, Zondervan, IVP, Wiley, Fortress Press |68| `speaking-bureau` | Premier Speakers Bureau, Chartwell, Ambassador Speakers |69| `conference` | Exponential, Q Ideas, The Gospel Coalition, Catalyst, Lausanne |70| `denomination` | Assemblies of God, CBAANZ, Fresh Expressions |71| `network` | 5Q Collective, Forge International, Communitas |72| `media` | Christianity Today, Relevant Magazine, Leadership Journal |73| `academic` | Fuller Seminary, Wheaton College, Regent College |74| `endorser-org` | Organizations whose leaders have publicly endorsed the person |75| `ministry-partner` | Mission orgs, church planting networks they partner with |76| `award-recognition` | Evangelical Christian Publishers Association, etc. |7778### Stage 4 — Logo Research7980For each confirmed organization, attempt to find a usable logo:8182**Priority order:**831. SVG from their website (`/logo.svg`, `/images/logo.svg`, footer SVG, `<img>` with `logo` in src)842. High-res PNG from their website (look for `@2x`, `2x`, `hires`, `print` variants)853. Wikipedia/Wikimedia Commons SVG864. Clearbit Logo API: `https://logo.clearbit.com/{domain}` (returns PNG)875. Google Favicon as last resort (too small — flag as LOW quality)8889For each logo found, record:90- `logo_url` — direct URL to the image91- `logo_type` — `svg` / `png` / `favicon` / `not-found`92- `logo_quality` — `HIGH` (SVG or hi-res PNG ≥ 200px) / `MEDIUM` (PNG 100–200px) / `LOW` (favicon or < 100px) / `MISSING`93- `logo_background` — `transparent` / `white` / `dark` / `unknown` (important for dark mode logo strips)9495### Stage 5 — Verify & Deduplicate9697Before finalizing:981. Remove duplicates (same org found via multiple searches)992. Remove false positives (e.g., a conference where they attended but didn't speak)1003. Flag LOW confidence entries for user review1014. Check that every MEDIUM/HIGH confidence entry has a clear public record (URL as source)102103## Affiliation Data Schema104105For each organization, produce a record matching this shape:106107```json108{109 "id": "baker-books",110 "name": "Baker Books",111 "short_name": "Baker",112 "category": "publisher",113 "website": "https://bakerpublishinggroup.com",114 "relationship_type": "author",115 "relationship_description": "Primary publisher for Alan Hirsch's books including The Forgotten Ways and 5Q. Baker is one of the leading evangelical academic publishers.",116 "relationship_start_year": 2006,117 "books_published": ["The Forgotten Ways", "The Permanent Revolution", "5Q"],118 "logo_url": "https://bakerpublishinggroup.com/images/baker-logo.svg",119 "logo_type": "svg",120 "logo_quality": "HIGH",121 "logo_background": "white",122 "source_urls": ["https://bakerpublishinggroup.com/authors/alan-hirsch"],123 "confidence": "HIGH",124 "include_in_strip": true,125 "strip_group": "publishers",126 "strip_label": "Published by",127 "prominence_score": 10,128 "notes": ""129}130```131132**Field definitions:**133- `id` — kebab-case slug, unique134- `name` — full legal/official name135- `short_name` — abbreviated name for logo strip labels136- `category` — from the category table above137- `relationship_type` — `author`, `speaker`, `faculty`, `board`, `partner`, `alumni`, `endorsed-by`, `media-featured`138- `relationship_description` — 1–3 sentences: what is this relationship, why does it matter to the person's credibility139- `relationship_start_year` — approximate year the relationship began (omit if unknown)140- `logo_url` — direct URL to best available logo141- `logo_type` — `svg` / `png` / `favicon` / `not-found`142- `logo_quality` — `HIGH` / `MEDIUM` / `LOW` / `MISSING`143- `logo_background` — `transparent` / `white` / `dark` / `unknown`144- `source_urls` — array of URLs confirming the relationship145- `confidence` — `HIGH` (direct evidence) / `MEDIUM` (strongly implied) / `LOW` (inferred)146- `include_in_strip` — boolean, set to `true` for HIGH confidence orgs with usable logos147- `strip_group` — one of: `publishers`, `speaking`, `media`, `networks`, `endorsers`, `academic`148- `strip_label` — short label for the group header in the logo strip (e.g., "Published by", "As seen in")149- `prominence_score` — 1–10, how much credibility this relationship adds (10 = major publisher/conference)150- `notes` — any caveats, ambiguities, or things to verify151152## Output Format153154Save results to `content-library/affiliations/{person-slug}.json` (create directory if needed).155156Then print a report:157158```159## Affiliation Scrape Report: [Person Name]160161### Summary162- Organizations found: N163- HIGH confidence: X164- MEDIUM confidence: Y165- LOW confidence: Z (review needed)166- Strip-ready (include_in_strip = true): N167168### By Category169| Category | Count | Strip-ready | Logo quality |170|----------|-------|-------------|-------------|171| publisher | 3 | 3 | HIGH |172| speaking-bureau | 2 | 2 | HIGH |173| conference | 8 | 5 | MEDIUM |174| media | 6 | 4 | MEDIUM |175| network | 4 | 3 | HIGH |176| academic | 2 | 1 | LOW |177| ministry-partner | 5 | 2 | MEDIUM |178179### Strip Groups (ordered by prominence)180**publishers** — "Published by" — 3 orgs181**networks** — "Part of" — 3 orgs182**speaking** — "Available to speak" — 2 orgs183**media** — "As featured in" — 4 orgs184**conference** — "Keynote speaker" — 5 orgs185186### Needs Review (LOW confidence or MISSING logo)187| Org | Issue | Action needed |188|-----|-------|--------------|189| Example Conference | LOW confidence — only indirect mention found | Verify via speaker page or personal site |190| Example Network | MISSING logo — no SVG or PNG found | Manual logo download needed |191192### Next Steps1931. Run `/affiliation-audit {person-slug}` to evaluate strip readiness and grouping1942. Resolve flagged LOW confidence entries manually1953. Download any MISSING logos to `public/images/orgs/`1964. Run `/logo-strip-author {person-slug}` to generate the final section197```198199## Key Rules200201- **Public record required** — Every HIGH/MEDIUM confidence entry must have a `source_urls` entry proving the relationship202- **No fabrication** — If you cannot verify an affiliation from public sources, set confidence to LOW and flag it203- **Logos from authoritative sources only** — Don't grab logos from third-party aggregators; prefer official org websites204- **Note permissions ambiguity** — Logo use for social proof is generally considered nominative fair use, but flag any org that may object205- **Idempotent** — If re-run, merge new findings with existing file; never overwrite confirmed HIGH confidence entries206- **Prominence scoring** — A major publisher (Baker, Zondervan) scores 10; a regional conference scores 3–5