关于 alibabacloud-icpba-sucessdata-query
用于通过 Alibaba Cloud Beian 服务 API 查询 ICP 备案成功信息及相关风险的 Agent Skill。它获取主体、网站和 APP 信息,供用户核查备案情况并处理发现的风险。
主要功能
- 01查询 ICP 备案成功数据
- 02获取主体与网站详情
- 03获取 APP 备案信息
- 04返回相关风险信息
- 05使用 Python Common SDK
适用场景
- 01查看已完成的 ICP 备案记录
- 02核对已备案的网站和 APP 信息
- 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详细介绍
阿里云 ICP 备案成功数据查询
场景说明
在阿里云成功完成 ICP 备案后,用户需要:
- 登录备案系统查看备案成功信息
- 查询备案详情,包括主体信息、网站信息和 APP 信息
- 检查备案是否存在需要关注的风险
此技能可通过阿里云 API 自动查询 ICP 备案成功数据及相关风险信息。
架构:阿里云备案服务 → QuerySuccessIcpData API → 备案信息(主体 + 网站 + APP + 风险)
安装
阿里云 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 插件
[必须] 运行
aliyun configure set --auto-plugin-install true启用自动安装插件。 [必须] 运行aliyun plugin update确保所有现有插件始终为最新版本。
Python 依赖项
由于当前插件版本尚未提供 CLI 命令,此技能使用 Python Common SDK:
pip install -r scripts/requirements.txt
身份验证
预检查:需要阿里云凭证
安全规则:
- 绝不要读取、回显或打印 AK/SK 值(例如,禁止运行
echo $ALIBABA_CLOUD_ACCESS_KEY_ID)- 绝不要要求用户在对话或命令行中直接输入 AK/SK
- 绝不要使用
aliyun configure set填入明文凭证值- 只能使用
aliyun configure list检查凭证状态aliyun configure list检查输出中是否存在有效配置(AK、STS 或 OAuth 身份)。
如果不存在有效配置,请在此处停止。
- 从阿里云控制台获取凭证
- 在此会话之外配置凭证(在终端中运行
aliyun configure,或在 shell 配置文件中设置环境变量)- 返回后,待
aliyun configure list显示有效配置时重新运行
RAM 策略
此技能需要 beian:QuerySuccessIcpData 权限。完整的 RAM 策略 JSON 和配置说明,请参阅 references/ram-policies.md。
**[必须] 权限失败处理:**执行期间,任何命令或 API 调用因权限错误而失败时,请按以下流程处理:
- 阅读
references/ram-policies.md,获取此 SKILL 所需权限的完整列表- 使用
ram-permission-diagnose技能指导用户申请所需权限- 暂停操作,等待用户确认已授予所需权限
参数确认
重要:参数确认 — 执行任何命令或 API 调用之前, 必须与用户确认所有可由用户自定义的参数(例如 RegionId、实例名称、CIDR 块、 密码、域名、资源规格等)。未经用户明确同意,不得假定或使用默认值。
| 参数名称 | 必填/可选 | 说明 | 默认值 |
|---|---|---|---|
| Caller | 必填 | API 请求的调用方标识符 | skill(固定值) |
| Region | 可选 | 阿里云地域 | cn-hangzhou |
核心工作流
在核心工作流开始时(执行任何 CLI 调用之前): [MUST] 启用 AI-Mode — Agent Skill 执行需要启用 AI-mode。 在执行任何 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 备案号)
- 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-Mode — 无论出于何种原因,在交付最终响应之前,始终先禁用 AI-mode。这适用于所有退出路径:工作流成功、工作流失败、错误/异常、用户取消、会话结束,或任何不会再执行 CLI 命令的其他情况。 AI-mode 仅用于 Agent Skill 调用场景,且技能停止运行后不得继续保持启用状态。
aliyun configure ai-mode disable
成功验证方法
要验证查询是否成功:
- 检查响应中的
Success字段是否为true - 确认
BaSuccessDataWithRiskList包含备案记录 - 确认每条记录都包含:
- 有效的
IcpNumber - 主体信息(
OrganizersName、OrganizersNature) WebsiteList中至少有一个网站,或AppList中至少有一个应用
- 有效的
有关详细的验证步骤,请参阅 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 | 常见错误及解决方案 |