mcpField
A
alibabacloud-icpba-sucessdata-query

alibabacloud-icpba-sucessdata-query

github.com/aliyunその他28196 回インストール1 日前に更新
リポジトリ

alibabacloud-icpba-sucessdata-query について

Alibaba Cloud Beian サービス API から ICP 申請の成功記録と関連リスクを取得するエージェントスキルです。主体、ウェブサイト、アプリの情報を確認し、申請状況の把握やリスク対応に役立ちます。

主な機能

  1. 01ICP 申請成功データの照会
  2. 02主体とウェブサイト情報の取得
  3. 03アプリ申請情報の取得
  4. 04関連リスク情報の取得
  5. 05Python Common SDK の利用

活用シーン

  1. 01完了済み ICP 申請記録の確認
  2. 02登録済みウェブサイトとアプリの照合
  3. 03申請リスクと対応期限の把握

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-icpba-sucessdata-query

インストール後、Claude Code で/alibabacloud-icpba-sucessdata-queryを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
acceptance-criteria.md
cli-installation-guide.md
common-sdk-usage.md
error-handling.md
ram-policies.md
related-commands.md
verification-method.md
scripts/
query_icp_filing.py
requirements.txt
validate_skill.py

詳細

Alibaba Cloud ICP 登録成功データの照会

シナリオの説明

Alibaba Cloud で ICP 登録(備案)を正常に完了した後、利用者は以下を行う必要があります。

  1. 登録システムにログインして、登録成功情報を確認する
  2. エンティティ情報、ウェブサイト情報、APP 情報など、登録の詳細を照会する
  3. 登録に注意が必要なリスクがないか確認する

このスキルを使用すると、Alibaba Cloud API を通じて ICP 登録成功データと関連するリスク情報を自動的に照会できます。

アーキテクチャ:Alibaba Cloud Beian Service → QuerySuccessIcpData API → 登録情報(エンティティ + ウェブサイト + APP + リスク)


インストール

Alibaba Cloud CLI

このスキルには Aliyun CLI バージョン 3.3.3 以降が必要です。

事前確認:Aliyun CLI 3.3.3 以降が必要です

aliyun version を実行して、バージョンが 3.3.3 以降であることを確認してください。未インストールの場合、またはバージョンが古い場合は、 curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash を実行してインストール/更新するか、 インストール手順について references/cli-installation-guide.md を参照してください。

事前確認:Aliyun CLI プラグインの更新が必要です

[MUST] aliyun configure set --auto-plugin-install true を実行して、自動プラグインインストールを有効にしてください。 [MUST] aliyun plugin update を実行して、既存のプラグインが常に最新の状態になるようにしてください。

Python の依存関係

現在のプラグインバージョンでは CLI コマンドをまだ利用できないため、このスキルでは Python Common SDK を使用します。

pip install -r scripts/requirements.txt

認証

事前確認:Alibaba Cloud の認証情報が必要です

セキュリティルール:

  • AK/SK の値を読み取ったり、エコー表示または出力したりすることは絶対にしないでください(例:echo $ALIBABA_CLOUD_ACCESS_KEY_ID は禁止です)
  • 会話中またはコマンドラインで、AK/SK を直接入力するようユーザーに求めることは絶対にしないでください
  • リテラルの認証情報を指定して aliyun configure set を使用することは絶対にしないでください
  • 認証情報の状態確認には aliyun configure list のみを使用してください
aliyun configure list

出力を確認し、有効なプロファイル(AK、STS、または OAuth ID)があることを確認してください。

有効なプロファイルがない場合は、ここで処理を停止してください。

  1. Alibaba Cloud Console から認証情報を取得します
  2. このセッションの外部で認証情報を設定します(ターミナルで aliyun configure を実行するか、シェルプロファイルで環境変数を設定します)
  3. aliyun configure list に有効なプロファイルが表示された後、戻って再実行します

RAM ポリシー

このスキルには beian:QuerySuccessIcpData 権限が必要です。完全な RAM ポリシー JSON と設定手順については、references/ram-policies.md を参照してください。

[MUST] 権限エラーへの対応: 実行中にコマンドまたは API 呼び出しが権限エラーで失敗した場合は、次の手順に従ってください。

  1. references/ram-policies.md を読み、この SKILL に必要なすべての権限を確認します
  2. ram-permission-diagnose スキルを使用して、必要な権限の申請をユーザーに案内します
  3. 必要な権限が付与されたことをユーザーが確認するまで待機します

パラメーターの確認

重要:パラメーターの確認 — コマンドまたは API 呼び出しを実行する前に、 ユーザーが変更可能なすべてのパラメーター(例:RegionId、インスタンス名、CIDR ブロック、 パスワード、ドメイン名、リソース仕様など)をユーザーに確認する必要があります。 明示的な承認なしに、既定値を推測または使用しないでください。

パラメーター名必須/任意説明既定値
Caller必須API リクエストの呼び出し元識別子skill(固定値)
Region任意Alibaba Cloud のリージョンcn-hangzhou

コアワークフロー

コアワークフローの開始時(CLI の実行前)に: [MUST] AI モードを有効化 — エージェントスキルの実行には AI モードが必要です。 CLI を実行する前に、次のコマンドを実行してください。

aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-icpba-sucessdata-query"
ステップ 1:ICP 登録成功データを照会する

CLI コマンド aliyun companyreg query-success-icp-data は現在のプラグインバージョンではまだ利用できないため、Python Common SDK を使用して API を直接呼び出します。

登録データを照会する Python スクリプトを作成します。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from alibabacloud_credentials.client import Client as CredentialClient
from alibabacloud_tea_openapi.client import Client as OpenApiClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util import models as util_models
import json

def create_client() -> OpenApiClient:
    """
    Create an OpenAPI client with credential authentication.
    """
    credential = CredentialClient()

    config = open_api_models.Config(
        credential=credential,
        endpoint='companyreg.aliyuncs.com',
        region_id='cn-hangzhou',
        user_agent='AlibabaCloud-Agent-Skills/alibabacloud-icpba-sucessdata-query'
    )

    return OpenApiClient(config)

def query_success_icp_data(caller: str = 'skill') -> dict:
    """
    Query ICP filing success data including entity, website, app, and risk information.

    Args:
        caller: Caller identifier (fixed value: 'skill')

    Returns:
        dict: Filing success data response
    """
    client = create_client()

    params = open_api_models.Params(
        action='QuerySuccessIcpData',
        version='2026-04-23',
        protocol='HTTPS',
        method='POST',
        auth_type='AK',
        style='RPC',
        pathname='/',
        req_body_type='formData',
        body_type='json'
    )

    queries = {
        'Caller': caller
    }

    request = open_api_models.OpenApiRequest(
        query=queries
    )

    runtime = util_models.RuntimeOptions(
        connect_timeout=5000,
        read_timeout=10000
    )

    try:
        response = client.call_api(params, request, runtime)
        return response.get('body', {})
    except Exception as e:
        print(f"Error querying ICP filing data: {str(e)}")
        raise

def main():
    print("Querying ICP Filing Success Data...")
    print("=" * 60)

    # Query filing data
    result = query_success_icp_data(caller='skill')

    # Print formatted result
    print(json.dumps(result, indent=2, ensure_ascii=False))

    # Parse and display summary
    if result.get('Success'):
        ba_list = result.get('BaSuccessDataWithRiskList', [])
        print("\n" + "=" * 60)
        print(f"Total Filing Records: {len(ba_list)}")

        for idx, ba_data in enumerate(ba_list, 1):
            print(f"\n--- Filing Record {idx} ---")
            print(f"ICP Number: {ba_data.get('IcpNumber')}")
            print(f"Entity Name: {ba_data.get('OrganizersName')}")
            print(f"Entity Type: {ba_data.get('OrganizersNature')}")
            print(f"Responsible Person: {ba_data.get('ResponsiblePersonName')}")

            # Website information
            websites = ba_data.get('WebsiteList', [])
            print(f"\nWebsites: {len(websites)}")
            for site in websites:
                print(f"  - {site.get('SiteName')} ({site.get('SiteRecordNum')})")
                print(f"    Domains: {', '.join(site.get('DomainList', []))}")

            # APP information
            apps = ba_data.get('AppList', [])
            if apps:
                print(f"\nAPPs: {len(apps)}")
                for app in apps:
                    print(f"  - {app.get('AppName')} ({app.get('AppRecordNum')})")
                    print(f"    Domains: {', '.join(app.get('DomainList', []))}")

            # Risk information
            risks = ba_data.get('RiskList', [])
            if risks:
                print(f"\n⚠️ Risks: {len(risks)}")
                for risk in risks:
                    print(f"  Deadline: {risk.get('DeadLine')}")
                    for detail in risk.get('RiskDetailList', []):
                        print(f"  Source: {detail.get('RiskSource')}")
                        for suggest in detail.get('rectifySuggest', []):
                            print(f"  Suggestion: {suggest}")
    else:
        print("Query failed or returned no data.")

if __name__ == '__main__':
    main()

このスクリプトを query_icp_filing.py として保存し、実行します。

python3 query_icp_filing.py
ステップ 2:結果を分析する

API は次の構造の情報を返します。

  1. 主体情報:

    • ICP 番号(登録番号)
    • 主体名
    • 主体の種類(主体の性質:企業/個人)
    • 責任者
  2. ウェブサイト情報:

    • サイト登録番号(ウェブサイト登録番号)
    • サイト名(ウェブサイト名)
    • ドメイン一覧
    • 責任者(ウェブサイト責任者)
  3. APP 情報:

    • APP 登録番号
    • APP 名
    • ドメイン一覧
    • 責任者(APP 責任者)
  4. リスク情報:

    • 対応期限
    • リスクの発生元
    • 是正に関する提案
レスポンスデータの例

例 1:主体、ウェブサイト、リスクを含む登録データ

{
  "RequestId": "79732597-AB14-1341-9131-D94F48D1AFD7",
  "Success": true,
  "BaSuccessDataWithRiskList": [
    {
      "IcpNumber": "粤ICP测50000001号",
      "OrganizersName": "深圳市星澜美容有限公司变更",
      "OrganizersNature": "企业",
      "ResponsiblePersonName": "于婷",
      "WebsiteList": [
        {
          "SiteRecordNum": "粤ICP测50000001号-1",
          "DomainList": ["13011160846019.com"],
          "SiteName": "于婷广东",
          "ResponsiblePersonName": "于婷"
        },
        {
          "SiteRecordNum": "津ICP备2023010907号-1",
          "DomainList": ["uijikoxjsu.com"],
          "SiteName": "920企业变更网站001",
          "ResponsiblePersonName": "于婷"
        }
      ],
      "AppList": [],
      "RiskList": [
        {
          "DeadLine": "2026年04月28日0点",
          "RiskDetailList": [
            {
              "RiskSource": "网站/APP信息 - 津ICP备2023010907号-1 - 网站域名 - uijikoxjsu.com",
              "rectifySuggest": [
                "<span style=\"font-weight:bold;\">网站内容涉及金融业务</span>,请提交<span style=\"font-weight:bold; color: red;\">变更备案</span>上传有效期内的金融前置文件许可,牌照或批文,传到备案系统,或者修改网站内容,与备案主体一致,符合最新备案规则。"
              ]
            }
          ]
        }
      ]
    }
  ]
}

例 2:主体、ウェブサイト、APP を含む登録データ

{
  "RequestId": "E36C463A-0869-1318-A851-84C53711984A",
  "Success": true,
  "BaSuccessDataWithRiskList": [
    {
      "IcpNumber": "测BA20251231094500051号",
      "OrganizersName": "LXtest001变更测试",
      "OrganizersNature": "企业",
      "ResponsiblePersonName": "李四",
      "WebsiteList": [
        {
          "SiteRecordNum": "测BA20251231094500051号-1",
          "DomainList": ["lxtest001.com"],
          "SiteName": "测试迁移使用11111111111111111111",
          "ResponsiblePersonName": "张三"
        },
        {
          "SiteRecordNum": "测BA20251230112600098号-2",
          "DomainList": ["test89876868.com"],
          "SiteName": "测试test111",
          "ResponsiblePersonName": "张三"
        }
      ],
      "AppList": [
        {
          "AppRecordNum": "测BA20251231094500051号-2",
          "DomainList": ["lxtest002.com"],
          "AppName": "测试测试11",
          "ResponsiblePersonName": "李四"
        }
      ],
      "RiskList": []
    }
  ]
}

[MUST] 終了するすべての時点で AI モードを無効化する — どのような理由であっても最終応答を返す前に、必ず最初に AI モードを無効化してください。これは、ワークフローの成功、ワークフローの失敗、エラー/例外、ユーザーによるキャンセル、セッション終了、その他 CLI コマンドを実行しないあらゆる終了パスに適用されます。 AI モードはエージェントスキルの呼び出し時にのみ使用し、スキルの実行停止後も有効なままにしてはいけません。

aliyun configure ai-mode disable

成功の確認方法

照会が成功したことを確認するには、次の手順に従います。

  1. レスポンスの Success フィールドが true であることを確認します
  2. BaSuccessDataWithRiskList に登録レコードが含まれていることを確認します
  3. 各レコードに次の情報があることを確認します。
    • 有効な IcpNumber
    • 主体情報(OrganizersName、OrganizersNature)
    • WebsiteList に少なくとも 1 つのウェブサイト、または AppList に少なくとも 1 つのアプリがあること

詳細な確認手順については、references/verification-method.md を参照してください。


クリーンアップ

これは読み取り専用の照会操作であり、クリーンアップが必要なリソースはありません。


ベストプラクティス

  1. 定期的な監視:登録データを定期的に照会し、新たなリスクがないか確認します
  2. リスクへの対応:リスクが特定された場合は、登録が取り消されないよう、期限前に対応します
  3. データの一貫性:リスクを防ぐため、ウェブサイト/APP の内容が登録情報と一致していることを確認します
  4. 権限管理:RAM ポリシーを使用して、必要最小限の権限を付与します
  5. エラー処理:API 呼び出しに適切なエラー処理と再試行ロジックを実装します
  6. 認証情報のセキュリティ:認証情報をハードコードせず、必ず環境変数または認証情報ファイルを使用します
  7. レスポンスの解析:AppList または RiskList が空の配列である場合も処理できるようにします
  8. HTML コンテンツ:リスクに関する提案には、書式設定用の HTML タグが含まれる場合があることに注意します

参考リンク

参考資料説明
references/ram-policies.mdRAM 権限の詳細な要件
references/related-commands.md関連する CLI コマンドと SDK メソッドの一覧
references/verification-method.md詳細な検証手順
references/cli-installation-guide.mdAlibaba Cloud CLI のインストールガイド
references/common-sdk-usage.mdPython Common SDK の使用パターン
references/error-handling.mdよくあるエラーと解決方法

コメント