mcpField
U
uspto-database

uspto-database

github.com/davila7数据与数据库33.0k317 次安装今天更新
代码仓库

关于 uspto-database

用于通过 USPTO 专用 API 查询专利和商标数据的技能,提供 Python 辅助脚本及检索指引,涵盖审查历史、权属、引证和相关记录。

主要功能

  1. 01按关键词和条件搜索专利
  2. 02获取 PEDS 专利审查历史
  3. 03查询商标状态与权属
  4. 04追踪专利和商标转让
  5. 05分析引证和审查意见
  6. 06访问诉讼及 PTAB 记录

适用场景

  1. 01按发明人或分类查找现有技术
  2. 02查看专利申请的审查历史
  3. 03核查商标状态与权属
  4. 04分析机构的知识产权组合

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/davila7/claude-code-templates --skill uspto-database

安装后在 Claude Code 中输入/uspto-database确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
additional_apis.md
patentsearch_api.md
peds_api.md
trademark_api.md
scripts/
patent_search.py
peds_client.py
trademark_client.py

详细介绍

USPTO 数据库

概述

USPTO 提供用于专利与商标数据的专用 API。可按关键词/发明人/受让人检索专利,通过 PEDS 获取审查历史,跟踪转让记录,分析引用与审查意见,访问 TSDR 获取商标数据,用于知识产权分析和现有技术检索。

何时使用本技能

本技能适用于以下场景:

  • 专利检索:按关键词、发明人、受让人、分类或日期查找专利
  • 专利详情:获取完整专利数据,包括权利要求、摘要、引用
  • 商标检索:按申请号或注册号查询商标
  • 商标状态:检查商标状态、所有权和审查历史
  • 审查历史:从 PEDS(Patent Examination Data System,专利审查数据系统)访问专利审查数据
  • 审查意见:获取审查意见正文、引用和驳回
  • 转让:跟踪专利/商标所有权转移
  • 引用:分析专利引用(前向和后向)
  • 诉讼:访问专利诉讼记录
  • 组合分析:分析公司或发明人的专利/商标组合

USPTO API 生态

USPTO 针对不同的数据需求提供多个专用 API:

核心 API
  1. PatentSearch API - 基于 ElasticSearch 的现代专利检索(2025 年 5 月取代旧版 PatentsView)

    • 按关键词、发明人、受让人、分类、日期检索专利
    • 可访问截至 2025 年 6 月 30 日的专利数据
    • 速率限制为 45 次请求/分钟
    • 基础 URL:https://search.patentsview.org/api/v1/
  2. PEDS(Patent Examination Data System,专利审查数据系统) - 专利审查历史

    • 1981 年至今的申请状态和事务历史
    • 审查意见日期和审查事件
    • 使用 uspto-opendata-python Python 库
    • 已取代:PAIR Bulk Data (PBD) - 已停用
  3. TSDR(Trademark Status & Document Retrieval,商标状态与文档检索) - 商标数据

    • 商标状态、所有权、审查历史
    • 按申请号或注册号检索
    • 基础 URL:https://tsdrapi.uspto.gov/ts/cd/
其他 API
  1. Patent Assignment Search - 所有权记录与转移
  2. Trademark Assignment Search - 商标所有权变更
  3. Enriched Citation API - 专利引用分析
  4. Office Action Text Retrieval - 审查意见全文
  5. Office Action Citations - 审查意见中的引用
  6. Office Action Rejection - 驳回理由与类型
  7. PTAB API - 专利审判与上诉委员会程序
  8. Patent Litigation Cases - 联邦地区法院诉讼数据
  9. Cancer Moonshot Data Set - 癌症相关专利

快速开始

API 密钥注册

所有 USPTO API 都需要 API 密钥。注册地址: https://account.uspto.gov/api-manager/

将 API 密钥设置为环境变量:

export USPTO_API_KEY="your_api_key_here"
辅助脚本

本技能包含用于常见操作的 Python 脚本:

  • scripts/patent_search.py - 用于检索专利的 PatentSearch API 客户端
  • scripts/peds_client.py - 用于审查历史的 PEDS 客户端
  • scripts/trademark_client.py - 用于商标数据的 TSDR 客户端

任务 1:检索专利

使用 PatentSearch API

PatentSearch API 使用 JSON 查询语言,提供多种运算符以实现灵活检索。

基础专利检索示例

按摘要中的关键词检索:

from scripts.patent_search import PatentSearchClient

client = PatentSearchClient()

# Search for machine learning patents
results = client.search_patents({
    "patent_abstract": {"_text_all": ["machine", "learning"]}
})

for patent in results['patents']:
    print(f"{patent['patent_number']}: {patent['patent_title']}")

按发明人检索:

results = client.search_by_inventor("John Smith")

按受让人/公司检索:

results = client.search_by_assignee("Google")

按日期范围检索:

results = client.search_by_date_range("2024-01-01", "2024-12-31")

按 CPC 分类检索:

results = client.search_by_classification("H04N")  # Video/image tech
高级专利检索

使用逻辑运算符组合多个条件:

results = client.advanced_search(
    keywords=["artificial", "intelligence"],
    assignee="Microsoft",
    start_date="2023-01-01",
    end_date="2024-12-31",
    cpc_codes=["G06N", "G06F"]  # AI and computing classifications
)
直接使用 API

对于复杂查询,可直接使用 API:

import requests

url = "https://search.patentsview.org/api/v1/patent"
headers = {
    "X-Api-Key": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

query = {
    "q": {
        "_and": [
            {"patent_date": {"_gte": "2024-01-01"}},
            {"assignee_organization": {"_text_any": ["Google", "Alphabet"]}},
            {"cpc_subclass_id": ["G06N", "H04N"]}
        ]
    },
    "f": ["patent_number", "patent_title", "patent_date", "inventor_name"],
    "s": [{"patent_date": "desc"}],
    "o": {"per_page": 100, "page": 1}
}

response = requests.post(url, headers=headers, json=query)
results = response.json()
查询运算符
  • 相等:{"field": "value"} 或 {"field": {"_eq": "value"}}
  • 比较:_gt、_gte、_lt、_lte、_neq
  • 文本搜索:_text_all、_text_any、_text_phrase
  • 字符串匹配:_begins、_contains
  • 逻辑:_and、_or、_not

最佳实践:对文本字段使用 _text_* 运算符(比 _contains 或 _begins 性能更好)

可用的专利端点
  • /patent - 已授权专利
  • /publication - 预授权公布
  • /inventor - 发明人信息
  • /assignee - 受让人信息
  • /cpc_subclass、/cpc_at_issue - CPC 分类
  • /uspc - 美国专利分类
  • /ipc - 国际专利分类
  • /claims、/brief_summary_text、/detail_description_text - 文本数据(beta)
参考文档

参见 references/patentsearch_api.md 获取完整的 PatentSearch API 文档,包括:

  • 所有可用端点
  • 完整字段参考
  • 查询语法和示例
  • 响应格式
  • 速率限制和最佳实践

任务 2:检索专利审查数据

使用 PEDS(专利审查数据系统)

PEDS 提供全面的审查历史,包括事务事件、状态变更和审查时间线。

安装
uv pip install uspto-opendata-python
PEDS 基本用法

获取申请数据:

from scripts.peds_client import PEDSHelper

helper = PEDSHelper()

# By application number
app_data = helper.get_application("16123456")
print(f"Title: {app_data['title']}")
print(f"Status: {app_data['app_status']}")

# By patent number
patent_data = helper.get_patent("11234567")

获取事务历史:

transactions = helper.get_transaction_history("16123456")

for trans in transactions:
    print(f"{trans['date']}: {trans['code']} - {trans['description']}")

获取审查意见通知书:

office_actions = helper.get_office_actions("16123456")

for oa in office_actions:
    if oa['code'] == 'CTNF':
        print(f"Non-final rejection: {oa['date']}")
    elif oa['code'] == 'CTFR':
        print(f"Final rejection: {oa['date']}")
    elif oa['code'] == 'NOA':
        print(f"Notice of allowance: {oa['date']}")

获取状态摘要:

summary = helper.get_status_summary("16123456")

print(f"Current status: {summary['current_status']}")
print(f"Filing date: {summary['filing_date']}")
print(f"Pendency: {summary['pendency_days']} days")

if summary['is_patented']:
    print(f"Patent number: {summary['patent_number']}")
    print(f"Issue date: {summary['issue_date']}")
审查分析

分析审查模式:

analysis = helper.analyze_prosecution("16123456")

print(f"Total office actions: {analysis['total_office_actions']}")
print(f"Non-final rejections: {analysis['non_final_rejections']}")
print(f"Final rejections: {analysis['final_rejections']}")
print(f"Allowed: {analysis['allowance']}")
print(f"Responses filed: {analysis['responses']}")
常见事务代码
  • CTNF - 非最终驳回已寄出
  • CTFR - 最终驳回已寄出
  • NOA - 授权通知书已寄出
  • WRIT - 已提交答复
  • ISS.FEE - 发证费支付
  • ABND - 申请已放弃
  • AOPF - 审查意见通知书已寄出
参考文档

参见 references/peds_api.md 获取完整的 PEDS 文档,包括:

  • 所有可用数据字段
  • 事务代码参考
  • Python 库用法
  • 组合分析示例

任务 3:搜索和监控商标

使用 TSDR(商标状态与文档检索)

访问商标状态、所有权和审查历史。

商标基本用法

按序列号获取商标:

from scripts.trademark_client import TrademarkClient

client = TrademarkClient()

# By serial number
tm_data = client.get_trademark_by_serial("87654321")

# By registration number
tm_data = client.get_trademark_by_registration("5678901")

获取商标状态:

status = client.get_trademark_status("87654321")

print(f"Mark: {status['mark_text']}")
print(f"Status: {status['status']}")
print(f"Filing date: {status['filing_date']}")

if status['is_registered']:
    print(f"Registration #: {status['registration_number']}")
    print(f"Registration date: {status['registration_date']}")

检查商标健康状况:

health = client.check_trademark_health("87654321")

print(f"Mark: {health['mark']}")
print(f"Status: {health['status']}")

for alert in health['alerts']:
    print(alert)

if health['needs_attention']:
    print("⚠️  This mark needs attention!")
商标组合监控

监控多个商标:

def monitor_portfolio(serial_numbers, api_key):
    """Monitor trademark portfolio health."""
    client = TrademarkClient(api_key)

    results = {
        'active': [],
        'pending': [],
        'problems': []
    }

    for sn in serial_numbers:
        health = client.check_trademark_health(sn)

        if 'REGISTERED' in health['status']:
            results['active'].append(health)
        elif 'PENDING' in health['status'] or 'PUBLISHED' in health['status']:
            results['pending'].append(health)
        elif health['needs_attention']:
            results['problems'].append(health)

    return results
常见商标状态
  • REGISTERED - 有效的注册商标
  • PENDING - 审查中
  • PUBLISHED FOR OPPOSITION - 处于异议期
  • ABANDONED - 申请已放弃
  • CANCELLED - 注册已取消
  • SUSPENDED - 审查已暂停
  • REGISTERED AND RENEWED - 注册已续展
参考文档

参见 references/trademark_api.md 获取完整的商标 API 文档,包括:

  • TSDR API 参考
  • 商标转让检索 API
  • 所有状态代码
  • 审查历史访问
  • 所有权跟踪

任务 4:跟踪转让和所有权

专利和商标转让

专利和商标都有转让检索 API,用于跟踪所有权变更。

专利转让 API

基础 URL:https://assignment-api.uspto.gov/patent/v1.4/

按专利号搜索:

import requests
import xml.etree.ElementTree as ET

def get_patent_assignments(patent_number, api_key):
    url = f"https://assignment-api.uspto.gov/patent/v1.4/assignment/patent/{patent_number}"
    headers = {"X-Api-Key": api_key}

    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        return response.text  # Returns XML

assignments_xml = get_patent_assignments("11234567", api_key)
root = ET.fromstring(assignments_xml)

for assignment in root.findall('.//assignment'):
    recorded_date = assignment.find('recordedDate').text
    assignor = assignment.find('.//assignor/name').text
    assignee = assignment.find('.//assignee/name').text
    conveyance = assignment.find('conveyanceText').text

    print(f"{recorded_date}: {assignor} → {assignee}")
    print(f"  Type: {conveyance}\n")

按公司名称搜索:

def find_company_patents(company_name, api_key):
    url = "https://assignment-api.uspto.gov/patent/v1.4/assignment/search"
    headers = {"X-Api-Key": api_key}
    data = {"criteria": {"assigneeName": company_name}}

    response = requests.post(url, headers=headers, json=data)
    return response.text
常见转让类型
  • ASSIGNMENT OF ASSIGNORS INTEREST - 所有权转移
  • SECURITY AGREEMENT - 抵押/担保权益
  • MERGER - 公司合并
  • CHANGE OF NAME - 名称变更
  • ASSIGNMENT OF PARTIAL INTEREST - 部分所有权

任务 5:访问额外的 USPTO 数据

审查意见通知书、引用和诉讼

多个专用 API 提供额外的专利数据。

审查意见通知书文本检索

使用申请号检索审查意见通知书的全文。与 PEDS 集成以确定存在哪些审查意见通知书,然后检索全文。

增强引用 API

分析专利引用:

  • 前向引用(引用本专利的专利)
  • 后向引用(所引用的现有技术)
  • 审查员与申请人引用
  • 引用上下文
专利诉讼案件 API

访问联邦地区法院专利诉讼记录:

  • 74,623+ 条诉讼记录
  • 被主张的专利
  • 当事方与审理地点
  • 案件结果
PTAB API

专利审判和上诉委员会程序:

  • 多方复审(IPR)
  • 授权后复审(PGR)
  • 上诉决定
参考文档

有关以下内容的完整文档,请参阅 references/additional_apis.md:

  • 增强引用 API
  • 审查意见通知书 API(文本、引用、驳回)
  • 专利诉讼案件 API
  • PTAB API
  • Cancer Moonshot 数据集
  • OCE 状态/事件代码

完整分析示例

综合专利分析

组合多个 API 以获得完整的专利情报:

def comprehensive_patent_analysis(patent_number, api_key):
    """
    Full patent analysis using multiple USPTO APIs.
    """
    from scripts.patent_search import PatentSearchClient
    from scripts.peds_client import PEDSHelper

    results = {}

    # 1. Get patent details
    patent_client = PatentSearchClient(api_key)
    patent_data = patent_client.get_patent(patent_number)
    results['patent'] = patent_data

    # 2. Get examination history
    peds = PEDSHelper()
    results['prosecution'] = peds.analyze_prosecution(patent_number)
    results['status'] = peds.get_status_summary(patent_number)

    # 3. Get assignment history
    import requests
    assign_url = f"https://assignment-api.uspto.gov/patent/v1.4/assignment/patent/{patent_number}"
    assign_resp = requests.get(assign_url, headers={"X-Api-Key": api_key})
    results['assignments'] = assign_resp.text if assign_resp.status_code == 200 else None

    # 4. Analyze results
    print(f"\n=== Patent {patent_number} Analysis ===\n")
    print(f"Title: {patent_data['patent_title']}")
    print(f"Assignee: {', '.join(patent_data.get('assignee_organization', []))}")
    print(f"Issue Date: {patent_data['patent_date']}")

    print(f"\nProsecution:")
    print(f"  Office Actions: {results['prosecution']['total_office_actions']}")
    print(f"  Rejections: {results['prosecution']['non_final_rejections']} non-final, {results['prosecution']['final_rejections']} final")
    print(f"  Pendency: {results['prosecution']['pendency_days']} days")

    # Analyze citations
    if 'cited_patent_number' in patent_data:
        print(f"\nCitations:")
        print(f"  Cites: {len(patent_data['cited_patent_number'])} patents")
    if 'citedby_patent_number' in patent_data:
        print(f"  Cited by: {len(patent_data['citedby_patent_number'])} patents")

    return results

最佳实践

  1. API 密钥管理

    • 将 API 密钥存储在环境变量中
    • 切勿将密钥提交到版本控制
    • 在所有 USPTO API 中使用同一密钥
  2. 速率限制

    • PatentSearch:45 次请求/分钟
    • 针对速率限制错误实施指数退避
    • 尽可能缓存响应
  3. 查询优化

    • 对文本字段使用 _text_* 运算符(性能更佳)
    • 仅请求所需字段以减小响应大小
    • 使用日期范围缩小搜索范围
  4. 数据处理

    • 并非所有专利/商标的所有字段都已填充
    • 妥善处理缺失数据
    • 一致地解析日期
  5. 组合 API

    • 使用 PatentSearch 进行发现
    • 使用 PEDS 获取审查详情
    • 使用 Assignment API 跟踪所有权
    • 组合数据以进行全面分析

重要说明

  • 旧版 API 停用:PatentsView 旧版 API 已于 2025 年 5 月 1 日停止使用——请使用 PatentSearch API
  • PAIR 批量数据已停用:请改用 PEDS
  • 数据覆盖范围:PatentSearch 的数据截至 2025 年 6 月 30 日;PEDS 涵盖 1981 年至今
  • 文本端点:权利要求和描述端点处于测试阶段,正在持续回填
  • 速率限制:遵守速率限制以避免服务中断

资源

API 文档
Python 库
参考文件
  • references/patentsearch_api.md - 完整的 PatentSearch API 参考
  • references/peds_api.md - PEDS API 和库文档
  • references/trademark_api.md - 商标 API(TSDR 和 Assignment)
  • references/additional_apis.md - 引用、审查意见通知书、诉讼、PTAB
脚本
  • scripts/patent_search.py - PatentSearch API 客户端
  • scripts/peds_client.py - PEDS 审查数据客户端
  • scripts/trademark_client.py - 商标搜索客户端

评论

支持 Markdown