mcpField
U
uspto-database

uspto-database

github.com/davila7データ・データベース33.0k317 回インストール1 日前に更新
リポジトリ

uspto-database について

USPTOの専用APIで特許・商標データを扱うスキルです。Pythonの補助スクリプトと検索手順を備え、審査履歴、権利移転、引用などを調べられます。

主な機能

  1. 01キーワードや条件で特許を検索
  2. 02PEDSの特許審査履歴を取得
  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 - 特許審判部(PTAB)の手続き
  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 - テキストデータ(ベータ版)
リファレンスドキュメント

PatentSearch API の完全なドキュメントは references/patentsearch_api.md を参照してください。以下の内容が含まれます。

  • 利用可能なすべてのエンドポイント
  • フィールドの完全なリファレンス
  • クエリ構文と例
  • レスポンス形式
  • レート制限とベストプラクティス

タスク 2: 特許審査データの取得

PEDS(Patent Examination Data System)の利用

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 - 拒絶理由通知の発送
リファレンスドキュメント

PEDS の完全なドキュメントは references/peds_api.md を参照してください。以下の内容が含まれます。

  • 利用可能なすべてのデータフィールド
  • 取引コードのリファレンス
  • Python ライブラリの使い方
  • ポートフォリオ分析の例

タスク 3: 商標の検索と監視

TSDR(Trademark Status & Document Retrieval)の利用

商標のステータス、権利者、審査経過にアクセスします。

商標の基本的な使い方

シリアル番号で商標を取得:

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 - 更新済みの登録
リファレンスドキュメント

商標 API の完全なドキュメントは references/trademark_api.md を参照してください。以下の内容が含まれます。

  • TSDR API のリファレンス
  • Trademark Assignment Search API
  • すべてのステータスコード
  • 審査経過へのアクセス
  • 権利者の追跡

タスク 4: 譲渡と権利者の追跡

特許および商標の譲渡

特許と商標の両方に、権利者の変更を追跡するための Assignment Search 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 と連携して存在する拒絶理由通知を特定し、その後全文を取得してください。

Enriched Citation API

特許の引用を分析します:

  • 前方引用(この特許を引用している特許)
  • 後方引用(引用された先行技術)
  • 審査官による引用と出願人による引用の比較
  • 引用の文脈
Patent Litigation Cases API

連邦地方裁判所の特許訴訟記録にアクセスします:

  • 74,623件以上の訴訟記録
  • 主張された特許
  • 当事者と管轄裁判所
  • 事件の結果
PTAB API

特許審判部(PTAB)の手続き:

  • 当事者系レビュー(IPR)
  • 付与後レビュー(PGR)
  • 審決
リファレンスドキュメント

以下に関する包括的なドキュメントについては、references/additional_apis.md を参照してください:

  • Enriched Citation API
  • Office Action APIs(Text、Citations、Rejections)
  • Patent Litigation Cases API
  • PTAB API
  • Cancer Moonshot Data Set
  • OCE Status/Event Codes

完全な分析の例

包括的な特許分析

複数の 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 - 引用、Office Action、訴訟、PTAB
スクリプト
  • scripts/patent_search.py - PatentSearch API クライアント
  • scripts/peds_client.py - PEDS 審査データクライアント
  • scripts/trademark_client.py - 商標検索クライアント

コメント