skills/yingdao-boss-client-fetch/SKILL.md
Fetch customer/client data from Yingdao's Boss platform through the Boss login, asCode exchange, and AppStudio token chain, then download all paginated datasource records for a specified business group. Use when a user asks to pull, export, refresh, or inspect Yingdao Boss customer tables, configure this workflow for first use, or produce the shared latest dataset that a downstream analysis skill will consume.
npx skillsauth add jaraxuss/skills yingdao-boss-client-fetchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill to fetch client data from Yingdao's Boss platform for a business group. The workflow authenticates through the Boss platform, exchanges tokens, downloads every page from the configured AppStudio datasource, and writes a shared latest dataset for downstream analysis.
Before the first real run, create config.local.json by copying config.template.json and fill in these required values:
auth.usernameauth.passworddefaults.default_business_groupIf any of these are missing, stop and ask the user to complete configuration before running the script.
Do not package or share real credentials.
Do not keep config.local.json or fetched customer-data outputs inside the skill folder when packaging; keep only the template in the packaged skill.
Recommended runtime config location:
runtime/yingdao-boss-client-fetch/config.local.json
Run from the skill root directory:
pip install -r skills/yingdao-boss-client-fetch/scripts/requirements.txt
config.local.json.accessToken.getAsCode endpoint with that token and extract ascode.generateTokenByCode endpoint and extract appStudio_v2_accessToken.1.pages value is reached.dataList rows into a single result set.fetch_contracts.py)This script can be executed after fetch_clients.py has run.
latest-clients.json file.客户编号 (customNo) across all clients.contract_datasource payload with the customNo added to variables.queryBaseInfo.data._customNo key to track origin, and combines everything.runtime/yingdao-boss/latest-contracts.json.Default behavior is:
Default shared dataset locations:
runtime/yingdao-boss/latest-clients.json
runtime/yingdao-boss/latest-contracts.json
These files are the handoff point for the downstream analysis skill. That analysis skill should read these files by default instead of expecting a new timestamped export every run.
Use the default configured business group and update the shared latest dataset:
python3 skills/yingdao-boss-client-fetch/scripts/fetch_clients.py
Use an explicit config path:
python3 skills/yingdao-boss-client-fetch/scripts/fetch_clients.py --config ./runtime/yingdao-boss-client-fetch/config.local.json
Override the business group for one run:
python3 skills/yingdao-boss-client-fetch/scripts/fetch_clients.py --business-group "江苏业务组"
Write a custom one-off output file instead of the shared latest path:
python3 skills/yingdao-boss-client-fetch/scripts/fetch_clients.py --output ./custom-output.json
Update the shared latest dataset and also save an archive snapshot:
python3 skills/yingdao-boss-client-fetch/scripts/fetch_clients.py --archive
Ensure you have run fetch_clients.py first, then run:
python3 skills/yingdao-boss-client-fetch/scripts/fetch_contracts.py
It supports similar arguments (--config, --output, --page-size, --archive, --clients-input).
Furthermore, you can pull a specific client's contracts using the --client-no or --client-name flag (e.g. --client-name "江苏**") which will save their data independently to contracts-{client}.json.
Once contracts are pulled, you can evaluate the expiration status of customer purchases.
python3 skills/yingdao-boss-client-fetch/scripts/analyze_expiring_orders.py
This script:
new, renew, add).Expired (已过期), 0-30 Days, 31-60 Days). Clients expired for more than 30 days are automatically hidden.contracts-expiration-summary.json inside the runtime/yingdao-boss directory.You can pull the detailed list of applications and their usage statistics for your clients:
python3 skills/yingdao-boss-client-fetch/scripts/fetch_apps.py
This script will automatically:
latest-clients.json to get organizationUuid values.organizationUuid to tenantUuid via the Boss mergeInfo API.queryAppDashboardInfo.runtime/yingdao-boss/latest-apps.json.Like the contract fetcher, you can pull apps for a specific client to save them independently:
python3 skills/yingdao-boss-client-fetch/scripts/fetch_apps.py --client-name "江苏**"
The output uses a stable structure for downstream skills:
{
"schema": "yingdao-boss-client-fetch.v1",
"meta": {
"fetched_at": "...",
"business_group": "江苏业务组",
"page_size": 100,
"page_count": 1,
"row_count": 59,
"total": 59,
"nsId": "...",
"pageId": "..."
},
"rows": [ ... ]
}
Keep the raw row structure for now. Field mapping can be added later without changing the fetch-and-handoff contract.
Read references/api-notes.md when you need to change:
nsIdpageIdnetwork.use_env_proxy)storage.*)export_dashboard.py)This script automates the three-step async export flow for tenant dashboard data.
组织UUID for each client by matching 组织名称 in latest-clients.json.accessToken directly — no AppStudio chain).status=success, matched by client name and date in the fileName.Dates are computed automatically: endDate = yesterday, startDate = 365 days before endDate.
fetch_clients.py must have been run at least once so that latest-clients.json is available.
Export dashboards for one or more clients using defaults:
python3 skills/yingdao-boss-client-fetch/scripts/export_dashboard.py \
--client-names "南京***电子商务有限公司" "上海***电子商务有限公司"
With a custom config and output directory:
python3 skills/yingdao-boss-client-fetch/scripts/export_dashboard.py \
--client-names "江苏***药房连锁有限公司" \
--config ./runtime/yingdao-boss-client-fetch/config.local.json \
--output-dir ./runtime/yingdao-boss/exports
Override the end date (useful for back-filling):
python3 skills/yingdao-boss-client-fetch/scripts/export_dashboard.py \
--client-names "南京***电子商务有限公司" \
--end-date 20260401
Downloaded xlsx files are saved to output_dir (default /tmp). The script also prints a JSON summary:
{
"ok": true,
"start_date": "20250428",
"end_date": "20260427",
"results": [
{"client": "南京***电子商务有限公司", "status": "ok", "file": "/tmp/南京***电子商务有限公司数据看板_xxx.xlsx"}
]
}
export_dashboard)output_dir: where to save xlsx files (default: /tmp)poll_interval_seconds: seconds between task-list polls (default: 10)poll_max_seconds: total wait budget before timeout error (default: 180)task_page_size: number of recent tasks fetched per poll (default: 10)skills/yingdao-boss-client-fetch/scripts/fetch_clients.py: end-to-end fetch script for client basic dataskills/yingdao-boss-client-fetch/scripts/fetch_contracts.py: end-to-end fetch script for client contractsskills/yingdao-boss-client-fetch/scripts/export_dashboard.py: three-step async export of tenant dashboard xlsx filesskills/yingdao-boss-client-fetch/scripts/analyze_expiring_orders.py: analysis script for isolating clients with soon-to-expire subscriptionsskills/yingdao-boss-client-fetch/scripts/fetch_apps.py: end-to-end fetch script for client application lists & dashboard statsskills/yingdao-boss-client-fetch/scripts/requirements.txt: Python dependenciesskills/yingdao-boss-client-fetch/config.template.json: configuration template without secretsskills/yingdao-boss-client-fetch/references/api-notes.md: request flow, enums, schema translation, and shared-data notesdevelopment
分析用户指定的 HTML 页面,进行风格总结,输出固化的 HTML 片段模板
development
根据用户上传的资料(文字、图片、视频等)和指定的风格类型,查找 references/html_style_summary 目录下的风格总结文件,生成符合规范的 HTML 页面
data-ai
根据用户需求生成 AI Power 工作流 JSON 文件
development
根据关键词搜索当前用户在飞书中可见的云文档和 Wiki 知识库节点,返回包含文档标题、类型和直达链接的结构化列表。包含完整的 OAuth 2.0 用户授权流程(获取授权码 → 换取 user_access_token → 刷新 token)。所有步骤均由 Python 脚本执行,无需额外依赖。