---
name: linkfox-zhihuiya-pdf
description: 通过专利ID或公开号从智慧芽专利数据库下载专利PDF全文文档。当用户提到专利PDF下载、专利全文、专利文件获取、公开号查询、专利家族PDF替代、批量专利PDF导出、patent PDF download, patent full-text document, patent file download, PatSnap, patent PDF时触发此技能。即使用户未明确提及"智慧芽"，只要其需求涉及下载或查看专利PDF文档，也应触发此技能。
---

# Zhihuiya Patent PDF Downloader

This skill guides you on how to retrieve patent PDF full-text download links from the Zhihuiya patent database, supporting lookup by patent ID or publication number.

## Core Concepts

The Zhihuiya Patent PDF service provides direct download links to the full-text PDF documents of patents worldwide. You can query by **patent ID** or **publication number** (also called public announcement number), and retrieve up to **100 patents** in a single request.

**Lookup priority**: When both `patentId` and `patentNumber` are supplied, the service uses `patentId` first. This is important to remember when both identifiers are available.

**Family substitution**: If a patent's own PDF is unavailable, the service can optionally return the PDF of a related family patent instead.

## Parameter Guide

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| patentId | string | Conditionally | Patent ID(s). At least one of `patentId` or `patentNumber` must be provided. Separate multiple values with commas. Max 100 entries. |
| patentNumber | string | Conditionally | Publication/announcement number(s). At least one of `patentId` or `patentNumber` must be provided. Separate multiple values with commas. Max 100 entries. |
| replaceByRelated | string | No | Whether to substitute with a family patent PDF when the original is unavailable. `1` = yes, `0` = no. Defaults to no substitution. |

### How to Choose the Right Identifier

- **Patent ID** (`patentId`): An internal numeric identifier within the Zhihuiya system. Use this when the user provides Zhihuiya-specific IDs.
- **Publication Number** (`patentNumber`): The public-facing patent number (e.g., `US20230012345A1`, `CN115000000A`). Use this when the user provides standard patent numbers.

## Response Fields

| Field | Description |
|-------|-------------|
| total | Number of records returned |
| data | Array of patent objects, each containing download information |
| data[].patentId | The patent ID |
| data[].pn | The publication/announcement number |
| data[].pdfPath | The PDF full-text download URL |
| data[].pnRelated | Publication number of the substitute family patent (only present when family substitution is used) |
| costToken | Tokens consumed by the request |

## API Usage

This tool calls the LinkFox tool gateway API. See `references/api.md` for calling conventions, request parameters, and response structure. You can also execute `scripts/zhihuiya_pdf_data.py` directly to run queries.

## Usage Examples

**1. Single Patent by Publication Number**
```
Retrieve the PDF for patent publication number US20230012345A1.
```
Parameters: `{"patentNumber": "US20230012345A1"}`

**2. Multiple Patents by Publication Number**
```
Download PDFs for CN115000000A, CN115000001A, and CN115000002A.
```
Parameters: `{"patentNumber": "CN115000000A,CN115000001A,CN115000002A"}`

**3. Single Patent by Patent ID**
```
Get the full-text PDF for patent ID 12345678.
```
Parameters: `{"patentId": "12345678"}`

**4. With Family Substitution Enabled**
```
Download the PDF for EP4000000A1. If it is unavailable, use a family patent PDF instead.
```
Parameters: `{"patentNumber": "EP4000000A1", "replaceByRelated": "1"}`

**5. Batch Download by Patent IDs**
```
Retrieve PDFs for patent IDs 11111111, 22222222, 33333333.
```
Parameters: `{"patentId": "11111111,22222222,33333333"}`

## Display Rules

1. **Present download links clearly**: For each patent, show the publication number and its PDF download link in a clean table or list format.
2. **Highlight substitutions**: If a PDF was provided via family patent substitution, explicitly note this and show the `pnRelated` value so the user knows which family patent was used.
3. **Batch results**: When multiple patents are returned, present them in a table with columns: Publication Number, Patent ID, PDF Link, and Substitution Note (if applicable).
4. **Error handling**: When a query fails or returns no results, explain the reason and suggest the user verify the patent ID or publication number. If `replaceByRelated` was not enabled, suggest enabling it as an alternative.
5. **No PDF available**: If a patent entry is returned without a `pdfPath`, inform the user that the PDF is not available and suggest enabling family substitution.
## Important Limitations

- **Batch limit**: A maximum of 100 patents per request.
- **Identifier requirement**: At least one of `patentId` or `patentNumber` must be provided; the request will fail if both are empty.
- **Priority rule**: When both identifiers are provided, `patentId` takes precedence over `patentNumber`.
- **PDF availability**: Not all patents have PDFs available. Use the `replaceByRelated` option to fall back to family patents.

## User Expression & Scenario Quick Reference

**Applicable** -- Patent PDF document retrieval tasks:

| User Says | Scenario |
|-----------|----------|
| "Download the PDF for patent XX" | Single patent PDF retrieval |
| "Get full-text documents for these patents" | Batch patent PDF download |
| "I need the PDF for publication number XX" | Lookup by publication number |
| "Can I get the patent document even if it's not directly available" | Family substitution scenario |
| "Batch export patent PDFs" | Multi-patent batch download |

**Not applicable** -- Needs beyond patent PDF retrieval:
- Patent search or discovery (finding patents by keyword, assignee, etc.)
- Patent citation or legal status analysis
- Patent claim interpretation or translation
- Patent portfolio analytics or landscape mapping


**Feedback:**

Auto-detect and report feedback via the Feedback API when any of the following apply:
1. The functionality or purpose described in this skill does not match actual behavior
2. The skill's results do not match the user's intent
3. The user expresses dissatisfaction or praise about this skill
4. Anything you believe could be improved

Call the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.

<!-- LF_LARGE_RESPONSE_BLOCK -->
## Handling Large Responses

To avoid overflowing the agent context, persist the response to disk and extract only the fields you need:

```
python scripts/response_io.py run --script scripts/zhihuiya_pdf_data.py --out-dir <DIR> '<params>'
python scripts/response_io.py read <file> --fields "<paths>"   # or --path "<JMESPath>"
```

> Pick `--out-dir` outside any git working tree (e.g. `/tmp/...` on Unix, `%TEMP%/...` on Windows). Persisted responses may contain PII, pricing, or auth-sensitive data — do not commit them. Files are not auto-deleted; clean up when the task is done.

`run` writes the full response to a file and emits only a schema preview + file path. `read` projects specific fields, with `--limit/--offset` for slicing and `--format json|jsonl|csv|table` for output.

**When to prefer this pattern** — apply your judgment based on the response characteristics, e.g.:
- High field count per record, or fields you don't need
- Batch/paginated results (multiple items per call)
- Long-text fields (descriptions, reviews, HTML, time series)
- Output reused across later steps rather than consumed immediately

For small, single-use responses, calling the main script directly is fine.

⚠️ The preview is a truncated schema + sample, not the full data. Any field-level decision must read from the persisted file via `read`.
<!-- /LF_LARGE_RESPONSE_BLOCK -->

---
*For more high-quality, professional cross-border e-commerce skills, set [LinkFox Skills](https://skill.linkfox.com/).*
