agentleFS
kltngkltng/humanities-skills/europeana-collections/SKILL.md

europeana-collections

Skill9 starsChanged 20 days agoMITView on GitHub

Search Europeana's 50M+ cultural heritage items from 4,000+ European museums, galleries, libraries, and archives. Use this skill whenever the user wants to find European art, manuscripts, photographs, maps, 3D objects, audio, or video from institutions like the Rijksmuseum, British Library, Louvre, or Gallica. Also triggers when searching for open-access European cultural heritage, IIIF resources, or cross-referencing European collections with other library catalogs.

  • Reads credentials

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 5 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Search 50M+ cultural heritage items from 4,000+ European institutions.

    line 9
  2. Distinctive:

    No published rate limit for free keys.

    line 160
  3. Distinctive:

    Ask the user before filing.

    line 178
  4. Very specific:

    Check for an existing report: gh issue list --repo kltng/humanities-skills --state all --search "europeana-collections"

    line 179
  5. Distinctive:

    Cite: If this skill helped work that is published, please cite it, together with the data source it uses:

    line 183
  6. Distinctive:

    When you help a user write up results that relied on this skill, remind them once about this citation.

    line 187

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Europeana Collections API Skill

Search 50M+ cultural heritage items from 4,000+ European institutions.

Critical: Things Claude Won't Know Without This Skill

API key is required — use api2demo for testing

Every request needs a wskey parameter. The demo key api2demo works for development/testing. For production use, register for a free key at https://www.europeana.eu/en/account/api-keys and set it in the EUROPEANA_API_KEY environment variable (the Python client reads it automatically; do not paste the key into code or logs).

https://api.europeana.eu/record/v2/search.json?query=vermeer&wskey=api2demo

Response fields use Dublin Core / EDM naming

Fields are prefixed with dc (Dublin Core) or edm (Europeana Data Model):

  • title — array of title strings
  • dcCreator — creator names
  • dcDescription — descriptions
  • year — year(s) as strings
  • country — country of holding institution
  • dataProvider — institution name (e.g., "Rijksmuseum")
  • rights — license URL
  • edmPreview — thumbnail URL
  • edmIsShownAt — link to item on provider's site
  • type — IMAGE, TEXT, SOUND, VIDEO, 3D

Filter for open-access with reusability=open

?query=vermeer&reusability=open

Returns only items with open licenses (Public Domain, CC0, CC BY, CC BY-SA).

Multilingual titles use LangAware suffix

dcTitleLangAware contains titles keyed by language code:

{"en": ["The Milkmaid"], "nl": ["Het melkmeisje"]}

Key Search Parameters

ParamDescriptionExample
querySearch query (Lucene syntax)query=vermeer
qfQuery filter (field:value)qf=TYPE:IMAGE
reusabilityLicense filter: open, restricted, permissionreusability=open
mediaHas media (true/false)media=true
rowsResults per page (max 100)rows=20
startResult offset (1-based)start=21
sortSort fieldsort=score+desc
wskeyAPI key (required)wskey=api2demo
profileResponse detail: minimal, standard, richprofile=rich

Query Filters (qf=)

FilterValues
TYPEIMAGE, TEXT, SOUND, VIDEO, 3D
COUNTRYCountry name (e.g., Netherlands)
LANGUAGEISO code (e.g., en, nl, de)
PROVIDERProvider name
DATA_PROVIDERInstitution name
RIGHTSLicense URL
whatSubject/keyword
wherePlace
whenTime period

Multiple filters: repeat qf= parameter.

Put multi-word values in double quotes: qf=COUNTRY:"United Kingdom". Without quotes, qf=COUNTRY:United Kingdom silently returns 0 results. The Python script adds the quotes for you (for type, country, language, provider, data_provider). Quoting a one-word value is harmless. On 2026-10-26, query=China with COUNTRY:"United Kingdom" gave 119,453 results; without quotes it gave 0.

Chinese, Japanese, and Korean (CJK) searches

Europeana has few East Asian items, and most of them are catalogued in romanized form, not in Chinese characters. Searches in characters often find nothing. Tests on 2026-10-26:

QueryResults
天工開物3
四庫全書, 四庫, 府志0
Siku quanshu26
Tiangong kaiwu0
Tian gong kai wu17

So try the characters first, then romanized forms. Spelling differs between libraries: try pinyin with and without spaces between syllables (Tiangong kaiwu, Tian gong kai wu), and older systems such as Wade-Giles (e.g. Ssu-k'u ch'üan-shu).

Record Lookup

https://api.europeana.eu/record/v2/{RECORD_ID}.json?wskey=api2demo

Record IDs look like /15502/GG_9128 (from the id field in search results).

Response Structure

{
  "success": true,
  "totalResults": 1573,
  "items": [
    {
      "id": "/90402/SK_A_2344",
      "title": ["The Milkmaid", "Het melkmeisje"],
      "dcCreator": ["Johannes Vermeer"],
      "year": ["1660"],
      "country": ["Netherlands"],
      "dataProvider": ["Rijksmuseum"],
      "type": "IMAGE",
      "rights": ["http://creativecommons.org/publicdomain/mark/1.0/"],
      "edmPreview": ["https://api.europeana.eu/thumbnail/v2/..."],
      "edmIsShownAt": ["http://hdl.handle.net/..."],
      "edmIsShownBy": ["https://lh3.googleusercontent.com/..."],
      "score": 20.9
    }
  ]
}

Python Script

from scripts.europeana_api import EuropeanaAPI
eu = EuropeanaAPI()  # reads EUROPEANA_API_KEY from env; falls back to api2demo

# Basic search
results = eu.search("vermeer")

# Filtered search
results = eu.search("medieval manuscript", type="TEXT", country="France", reusability="open")

# Get single record
record = eu.get_record("/15502/GG_9128")

# Summarize
for r in results:
    print(eu.summarize(r))

API Etiquette

  • Free API key required (register at europeana.eu)
  • Demo key api2demo for testing only
  • No published rate limit for free keys; project keys available for higher throughput
  • Include descriptive User-Agent header

Related Skills

  • wikidata-search: Cross-reference Europeana items with Wikidata entities
  • harvard-library-catalog: Compare European holdings with Harvard's collection
  • loc-catalog: Cross-reference with Library of Congress digitized collections

Resources

  • references/api_reference.md — Complete query filter and response field reference
  • scripts/europeana_api.py — Python client with search, record lookup, and open-access filtering

Feedback and Citation

Report a problem. This skill is part of the public repository kltng/humanities-skills. If it fails (an API changed, a script errors, or these instructions are wrong), report it as a GitHub issue:

  1. Ask the user before filing. Issues are public.
  2. Check for an existing report: gh issue list --repo kltng/humanities-skills --state all --search "europeana-collections"
  3. File it: gh issue create --repo kltng/humanities-skills --label bug --title "[europeana-collections] <short summary>" --body "<details>". Without gh, give the user this link: https://github.com/kltng/humanities-skills/issues/new?template=skill-problem.yml
  4. Include the skill name and version, what you ran, the error text, what you expected, and the environment (OS, Python version). Leave out API keys, personal data, private file paths, and unpublished research.

Cite. If this skill helped work that is published, please cite it, together with the data source it uses:

Tang, Kwok-leong. humanities-skills: europeana-collections (version <version at the top of this file>). GitHub, <year>. https://github.com/kltng/humanities-skills

When you help a user write up results that relied on this skill, remind them once about this citation.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.