alibabacloud-icpba-sucessdata-query について
Alibaba Cloud Beian サービス API から ICP 申請の成功記録と関連リスクを取得するエージェントスキルです。主体、ウェブサイト、アプリの情報を確認し、申請状況の把握やリスク対応に役立ちます。
主な機能
- 01ICP 申請成功データの照会
- 02主体とウェブサイト情報の取得
- 03アプリ申請情報の取得
- 04関連リスク情報の取得
- 05Python Common SDK の利用
活用シーン
- 01完了済み ICP 申請記録の確認
- 02登録済みウェブサイトとアプリの照合
- 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.mdcli-installation-guide.mdcommon-sdk-usage.mderror-handling.mdram-policies.mdrelated-commands.mdverification-method.mdscripts/query_icp_filing.pyrequirements.txtvalidate_skill.py詳細
Alibaba Cloud ICP 登録成功データの照会
シナリオの説明
Alibaba Cloud で ICP 登録(備案)を正常に完了した後、利用者は以下を行う必要があります。
- 登録システムにログインして、登録成功情報を確認する
- エンティティ情報、ウェブサイト情報、APP 情報など、登録の詳細を照会する
- 登録に注意が必要なリスクがないか確認する
このスキルを使用すると、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)があることを確認してください。
有効なプロファイルがない場合は、ここで処理を停止してください。
- Alibaba Cloud Console から認証情報を取得します
- このセッションの外部で認証情報を設定します(ターミナルで
aliyun configureを実行するか、シェルプロファイルで環境変数を設定します)aliyun configure listに有効なプロファイルが表示された後、戻って再実行します
RAM ポリシー
このスキルには beian:QuerySuccessIcpData 権限が必要です。完全な RAM ポリシー JSON と設定手順については、references/ram-policies.md を参照してください。
[MUST] 権限エラーへの対応: 実行中にコマンドまたは API 呼び出しが権限エラーで失敗した場合は、次の手順に従ってください。
references/ram-policies.mdを読み、この SKILL に必要なすべての権限を確認しますram-permission-diagnoseスキルを使用して、必要な権限の申請をユーザーに案内します- 必要な権限が付与されたことをユーザーが確認するまで待機します
パラメーターの確認
重要:パラメーターの確認 — コマンドまたは 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 は次の構造の情報を返します。
-
主体情報:
- ICP 番号(登録番号)
- 主体名
- 主体の種類(主体の性質:企業/個人)
- 責任者
-
ウェブサイト情報:
- サイト登録番号(ウェブサイト登録番号)
- サイト名(ウェブサイト名)
- ドメイン一覧
- 責任者(ウェブサイト責任者)
-
APP 情報:
- APP 登録番号
- APP 名
- ドメイン一覧
- 責任者(APP 責任者)
-
リスク情報:
- 対応期限
- リスクの発生元
- 是正に関する提案
レスポンスデータの例
例 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
成功の確認方法
照会が成功したことを確認するには、次の手順に従います。
- レスポンスの
Successフィールドがtrueであることを確認します BaSuccessDataWithRiskListに登録レコードが含まれていることを確認します- 各レコードに次の情報があることを確認します。
- 有効な
IcpNumber - 主体情報(
OrganizersName、OrganizersNature) WebsiteListに少なくとも 1 つのウェブサイト、またはAppListに少なくとも 1 つのアプリがあること
- 有効な
詳細な確認手順については、references/verification-method.md を参照してください。
クリーンアップ
これは読み取り専用の照会操作であり、クリーンアップが必要なリソースはありません。
ベストプラクティス
- 定期的な監視:登録データを定期的に照会し、新たなリスクがないか確認します
- リスクへの対応:リスクが特定された場合は、登録が取り消されないよう、期限前に対応します
- データの一貫性:リスクを防ぐため、ウェブサイト/APP の内容が登録情報と一致していることを確認します
- 権限管理:RAM ポリシーを使用して、必要最小限の権限を付与します
- エラー処理:API 呼び出しに適切なエラー処理と再試行ロジックを実装します
- 認証情報のセキュリティ:認証情報をハードコードせず、必ず環境変数または認証情報ファイルを使用します
- レスポンスの解析:
AppListまたはRiskListが空の配列である場合も処理できるようにします - HTML コンテンツ:リスクに関する提案には、書式設定用の HTML タグが含まれる場合があることに注意します
参考リンク
| 参考資料 | 説明 |
|---|---|
| references/ram-policies.md | RAM 権限の詳細な要件 |
| references/related-commands.md | 関連する CLI コマンドと SDK メソッドの一覧 |
| references/verification-method.md | 詳細な検証手順 |
| references/cli-installation-guide.md | Alibaba Cloud CLI のインストールガイド |
| references/common-sdk-usage.md | Python Common SDK の使用パターン |
| references/error-handling.md | よくあるエラーと解決方法 |