mcpField
U
uspto-database

uspto-database

github.com/jackspace生产力1638 次安装12 周前更新
代码仓库

关于 uspto-database

面向知识产权检索与分析的技能,借助 USPTO API 查询专利和商标,并获取审查、权属及引证等数据。适用于专利检索、商标状态核查和组合分析。

主要功能

  1. 01按关键词和字段检索专利
  2. 02查询专利审查历史与 Office Actions
  3. 03查阅商标状态及权属
  4. 04追踪专利和商标转让
  5. 05分析专利引证与诉讼数据

适用场景

  1. 01开展专利先前技术检索
  2. 02核查商标申请状态和历史
  3. 03分析企业或发明人的知识产权组合

安装

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

$npx skills add https://github.com/jackspace/claudeskillz --skill uspto-database

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

附带文件SKILL.json

详细介绍

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 提供全面的审查历史,包括事务事件、状态变更和审查时间线。

安装
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