Install
openclaw skills install @yuanzhian-patsnap/build-patent-asset-dashboard-ipBuild the patent-data layer for an applicant asset dashboard using PatSnap search and analytics APIs. Use when an IP analyst or developer needs applicant patent retrieval, patent-type subsets, filing trends, industry distribution, filing-office coverage, top inventors, or an innovation word cloud with documented collapse and counting rules.
openclaw skills install @yuanzhian-patsnap/build-patent-asset-dashboard-ipUse PatSnap Open Platform patent-search and analytics APIs to populate an applicant patent asset dashboard. Preserve the source capability identifiers P00X, A00X, S00X, and D00X because they identify API contracts rather than Chinese UI labels.
Pass a PatSnap Open Platform API key in the HTTP Authorization header:
Authorization: Bearer <token>
Read the key from PATSNAP_API_KEY or accept it through a secure runtime argument. Never embed or log a real key. See the current PatSnap authentication guide.
{
"collapse_by": "PBD",
"collapse_type": "APNO",
"collapse_order": "LATEST"
}
Do not add
collapse_order_authorityto this source-defined P002 dashboard request. The frozen source validation found that it changed the CN application count. If a future official schema or business rule requires the field, treat that as a versioned contract change and revalidate every dashboard count.
https://connect.patsnap.com/search/patent/query-search-patent/v2data.results response convention. Recheck the OpenAPI schema before production release.{
"query_text": "ANCS:(Applicant name)",
"collapse_by": "PBD",
"collapse_type": "APNO",
"collapse_order": "LATEST"
}
total = result["data"]["total_search_result_count"]
patents = result["data"]["results"]
These counts were recorded against the Chinese source environment. Preserve them as regression provenance, not as current global counts.
| Source test applicant | Returned total | Source status |
|---|---|---|
| Beijing Low Carbon Clean Energy Research Institute | 3,341 | Passed in source fixture |
| CHN Energy Science and Technology Research Institute Co., Ltd. | 1,463 | Passed in source fixture |
{
"query_text": "ANCS:(Applicant name) and PATENT_TYPE:(B)",
"collapse_by": "PBD",
"collapse_type": "APNO",
"collapse_order": "LATEST"
}
{
"query_text": "ANCS:(Applicant name) and PATENT_TYPE:(U)",
"collapse_by": "PBD",
"collapse_type": "APNO",
"collapse_order": "LATEST"
}
{
"query_text": "ANCS:(Applicant name) and PATENT_TYPE:(D)",
"collapse_by": "PBD",
"collapse_type": "APNO",
"collapse_order": "LATEST"
}
Some applicants have no design records in the selected scope. Treat
total_search_result_count = 0as a valid result, not an API failure.
/insights-openapi/patent-trends-queryconnect.patsnap.com URL by substitution. Obtain the current endpoint from the authenticated API catalog before execution.{
"query_text": "ANCS:(Applicant name)",
"collapse_by": "PBD",
"collapse_type": "APNO",
"collapse_order": "LATEST"
}
Do not add
collapse_order_authorityunder the source-defined counting contract.
{
"status": true,
"data": [
{"year": "2016", "application": 163, "granted": 133, "percentage": 0.816},
...
]
}
datais a direct array. Read it throughresult["data"], then select the required year window.
from datetime import date
end_year = date.today().year - 1
years_10 = [str(y) for y in range(end_year - 9, end_year + 1)]
trend_10y = [item for item in result["data"] if item["year"] in years_10]
Record the computed start and end years in the dashboard metadata. To reproduce the frozen source fixture exactly, set the window explicitly to 2016–2025.
The source S001 used nine categories from China's Strategic Emerging Industries (SEIC) policy taxonomy. That taxonomy is not an internationally recognized patent classification and is not suitable as the default for a global applicant dashboard. Replace the China-specific nine-query loop with IPC/CPC aggregation while preserving the source objective: show where an applicant's patent activity is concentrated.
https://connect.patsnap.com/search/patent/query/v2https://connect.patsnap.com/search/patent/classification/helper-searchhttps://connect.patsnap.com/high-value-data/patent-classification-description{
"lang": "en",
"query": "ANCS:(Applicant name)",
"field": "IPC_SUB_CLASS,CPC_SUB_CLASS",
"limit": 100,
"offset": 0,
"stemming": 0,
"collapse_by": "PBD",
"collapse_type": "APNO",
"collapse_order": "LATEST"
}
Use only field names supported by the current P003 schema. Query one classification level at a time if the response or entitlement does not support multiple fields.
| Classification | Code | English description | Patent count | Share of classified records | Level | Version/source |
|---|
Report:
Do not compare classification shares as mutually exclusive when one patent may carry multiple IPC/CPC codes. Do not label an IPC/CPC class as an “industry” without a documented mapping.
/shhgy/reportdata/rec-office{
"query_text": "ANCS:(Applicant name)",
"collapse_by": "PBD",
"collapse_type": "APNO",
"collapse_order": "LATEST"
}
Do not add
collapse_order_authorityunder the frozen source contract. The source fixture for Baoshan Iron & Steel changed from 13,378 to 16,179 CN records when the field was added.
Define a configurable home_authority for the applicant and report it explicitly:
foreign filing count = sum of all receiving-office counts − home-authority count
For the source China-specific fixture, home_authority = CN.
{
"data": {
"values": [
{"rec_office": "China", "code": "CN", "num": 13378},
{"rec_office": "European Patent Office", "code": "EP", "num": 628},
...
]
}
}
values = result["data"]["values"]
total_all = sum(item["num"] for item in values)
home_authority = "CN"
home_count = next((item["num"] for item in values if item["code"] == home_authority), 0)
foreign_count = total_all - home_count
| Applicant | Total | CN | Foreign |
|---|---|---|---|
| Beijing Low Carbon Clean Energy Research Institute | 3,341 | 3,066 | 275, passed source fixture |
| Baoshan Iron & Steel Co., Ltd. | 17,088 | 13,378 | 3,710, passed source fixture |
https://connect.patsnap.com/insights/inventor-rankingquery_text formatANCS:(Applicant name) and SIMPLE_LEGAL_STATUS:(1) and PATENT_TYPE:(B or U or D)
{
"data": [
{"name": "Example inventor", "count": 137},
...
]
}
inventors = result["data"] # Direct array ordered by descending count.
https://connect.patsnap.com/insights/word-cloud-query{
"lang": "en",
"query_text": "ANCS:(Applicant name)",
"collapse_by": "PBD",
"collapse_type": "DOCDB",
"collapse_order": "LATEST"
}
This endpoint uses
collapse_type: DOCDB, unlike the APNO collapse used by the other source dashboard queries. Passlang,collapse_by, andcollapse_order; omitting any of them can change the result. Default tolang: enfor the global dashboard. Usecnorjponly when the requested output or corpus requires that supported language.
words = result["data"] # Direct array, up to 100 terms ordered by descending count.
| Capability | Method | Endpoint | Description |
|---|---|---|---|
| P002 | POST | query-search-patent/v2 | All patent types |
| P002B | POST | query-search-patent/v2 | Granted invention patents |
| P002U | POST | query-search-patent/v2 | Utility models |
| P002D | POST | query-search-patent/v2 | Designs |
| A001 | POST | patent-trends-query | Rolling ten-year filing/grant trend; global endpoint requires verification |
| S001 | POST/GET | query/v2 plus classification helper/description | International IPC/CPC technology distribution replacing the China-only SEIC taxonomy |
| D109 | POST | rec-office | Filing-office distribution; configurable home authority; global endpoint requires verification |
| A006 | GET | inventor-ranking | Top inventors by active holdings |
| A002 | POST | word-cloud-query | Innovation word cloud with lang: en and collapse_type: DOCDB |
This source package is primarily a PatSnap REST API workflow. It does not contain a README and no new setup file may be added without approval.
search_patents capability for P002-style retrieval.Data unavailable; never fabricate values.