派单啦平台 CLI(pdlctl)

SKILL商业运营
商业运营 未标注权限 许可证不明确
安装这个技能

用 Python CLI(pdlctl)操作 paidanla.com 平台:表单的创建/发布/停止, 渠道管理,海报生成与下载,报名提交数据查看与导出,访问/转化统计,管理员审核。 触发条件:用户要求"建/发布/停止一个表单"、"加个渠道"、"生成/下载海报"、 "看看报名数据/导出提交"、"表单统计/转化率"、"审核用户",或提到 pdlctl、 派单啦/paidanla 平台操作。执行任何平台内容操作前先读本 skill。

一句话选型结论

按资料字段整理

派单啦平台 CLI(pdlctl)是商业运营类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类商业运营 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_51ab3167/pdl-cli
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

商业运营
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_51ab3167仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量28.4 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写运营方案

按目标产出活动方案与执行清单。

分析数据与指标

从报表里找问题、给结论。

整理客户与销售材料

把客户信息与话术整理成可直接用的材料。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在商业运营场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
派单啦平台 CLI(pdlctl)当前 未标注权限 未标注 未标注 未标注 有
MX 股票筛选器 联网访问 ClawHub 市场 79.9 万 OpenClaw 有
交易 未标注权限 ClawHub 市场 58.1 万 OpenClaw 有
营销技巧 只读 ClawHub 市场 54.0 万 OpenClaw 有
百灵鸟好 联网访问 GitHub 仓库 52.6 万 Codex、Claude、Cursor 有
股票信息浏览器 接触敏感数据 ClawHub 市场 40.5 万 OpenClaw 有

SKILL.md 全文

28.4 KB
模型实际读到的说明书原文,来自技能仓库

pdl-cli —— paidanla.com 平台 CLI(pdlctl)

通过 pdlctl 调用平台 API(/api/v1/*)完成表单/渠道/海报/提交数据管理。
CLI 是纯 Python3 标准库脚本(pdlctl.py,随本 skill 一起分发,无需装任何依赖),
输出统一为格式化 JSON(stdout,直接 parse);错误在 stderr,退出码非 0。

1. 准备(首次使用)

本 skill 的 CLI 是纯 Python3 脚本,源码以 base64 内嵌在下面(商店只保留 SKILL.md,故内嵌;
base64 可避免任何转义/换行损坏)。首次使用时原样执行这段 bash,它把脚本解码写到
~/.cache/pdlctl/pdlctl.py;之后统一用 $PDLCTL 调用(下文简写 pdlctl)。只需 Python3
(mac/Linux 自带;Windows 用 python),无二进制、无第三方依赖。

mkdir -p ~/.cache/pdlctl
python3 <<'PDLCTL_B64'
import base64, os
data = base64.b64decode("""
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiJwZGxjdGwg4oCU4oCUIHBhaWRhbmxhLmNvbSDlubPlj7AgQ0xJKOe6ryBQeXRo
b24zIOagh+WHhuW6kyzml6DnrKzkuInmlrnkvp3otZYp44CCCgrorqTor4E6546v5aKD5Y+Y6YePIFBETF9BUElfS0VZKOW5
s+WPsOOAjEFQSSBLZXnjgI3pobXliJvlu7oscGRsXyDliY3nvIApLOaIlueZu+W9leS8muivnQogICAgICAoYHBkbGN0bCBh
dXRoIGxvZ2luYCDlkI4gSldUIOWtmCB+Ly5jb25maWcvcGRsY3RsL3Nlc3Npb24p44CCCuebruaghzpQRExfQkFTRV9VUkwo
6buY6K6kIGh0dHBzOi8vcGFpZGFubGEuY29tKSzmiJYgLS1iYXNlLXVybOOAggrovpPlh7o657uf5LiA5qC85byP5YyWIEpT
T04oc3Rkb3V0KTvplJnor6/lhpkgc3RkZXJyIOW5tuS7pemdniAwIOmAgOWHuuOAggoiIiIKaW1wb3J0IGFyZ3BhcnNlCmlt
cG9ydCBqc29uCmltcG9ydCBvcwppbXBvcnQgc3lzCmltcG9ydCB1cmxsaWIuZXJyb3IKaW1wb3J0IHVybGxpYi5yZXF1ZXN0
CgoKY2xhc3MgQ2xpRXJyb3IoRXhjZXB0aW9uKToKICAgIHBhc3MKCgojIC0tLS0tLS0tLS0g55uu5qCHIC8g5Lya6K+dIC0t
LS0tLS0tLS0KCmRlZiByZXNvbHZlX2Jhc2UoYmFzZV91cmwpOgogICAgYmFzZSA9IGJhc2VfdXJsIG9yIG9zLmVudmlyb24u
Z2V0KCJQRExfQkFTRV9VUkwiKSBvciAiaHR0cHM6Ly9wYWlkYW5sYS5jb20iCiAgICByZXR1cm4gYmFzZS5yc3RyaXAoIi8i
KQoKCmRlZiBzZXNzaW9uX3BhdGgoKToKICAgIHJvb3QgPSBvcy5lbnZpcm9uLmdldCgiWERHX0NPTkZJR19IT01FIikgb3Ig
b3MucGF0aC5qb2luKG9zLnBhdGguZXhwYW5kdXNlcigifiIpLCAiLmNvbmZpZyIpCiAgICByZXR1cm4gb3MucGF0aC5qb2lu
KHJvb3QsICJwZGxjdGwiLCAic2Vzc2lvbiIpCgoKZGVmIHJlYWRfc2Vzc2lvbigpOgogICAgdHJ5OgogICAgICAgIHdpdGgg
b3BlbihzZXNzaW9uX3BhdGgoKSwgInIiLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmOgogICAgICAgICAgICB0b2sgPSBmLnJl
YWQoKS5zdHJpcCgpCiAgICAgICAgICAgIHJldHVybiB0b2sgb3IgTm9uZQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAg
cmV0dXJuIE5vbmUKCgpkZWYgd3JpdGVfc2Vzc2lvbih0b2tlbik6CiAgICBwID0gc2Vzc2lvbl9wYXRoKCkKICAgIG9zLm1h
a2VkaXJzKG9zLnBhdGguZGlybmFtZShwKSwgZXhpc3Rfb2s9VHJ1ZSkKICAgIHdpdGggb3BlbihwLCAidyIsIGVuY29kaW5n
PSJ1dGYtOCIpIGFzIGY6CiAgICAgICAgZi53cml0ZSh0b2tlbikKICAgIHRyeToKICAgICAgICBvcy5jaG1vZChwLCAwbzYw
MCkKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIHBhc3MKICAgIHJldHVybiBwCgoKZGVmIGF1dGhlZF9iZWFyZXIoKToK
ICAgICIiIumAmueUqOWRveS7pDpQRExfQVBJX0tFWSA+IOS8muivneaWh+S7tuOAgiIiIgogICAgYiA9IG9zLmVudmlyb24u
Z2V0KCJQRExfQVBJX0tFWSIpIG9yIHJlYWRfc2Vzc2lvbigpCiAgICBpZiBub3QgYjoKICAgICAgICByYWlzZSBDbGlFcnJv
cigi5pyq6K6k6K+BOuiuvue9riBQRExfQVBJX0tFWSzmiJblhYggYHBkbGN0bCBhdXRoIGxvZ2luIC0tcGhvbmUgPOaJi+ac
uuWPtz5gIikKICAgIHJldHVybiBiCgoKZGVmIHNlc3Npb25fYmVhcmVyKCk6CiAgICAiIiJBUEkgS2V5IOeuoeeQhuWRveS7
pDrlj6rorqTnmbvlvZXkvJror50o5pyN5Yqh56uv5ouS57udIEFQSSBLZXkg6Ieq566h55CGKeOAgiIiIgogICAgYiA9IHJl
YWRfc2Vzc2lvbigpCiAgICBpZiBub3QgYjoKICAgICAgICByYWlzZSBDbGlFcnJvcigiQVBJIEtleSDnrqHnkIbpnIDnmbvl
vZXkvJror5066K+35YWIIGBwZGxjdGwgYXV0aCBsb2dpbiAtLXBob25lIDzmiYvmnLrlj7c+YCjkuI3og73nlKggUERMX0FQ
SV9LRVkpIikKICAgIHJldHVybiBiCgoKIyAtLS0tLS0tLS0tIEhUVFAgLS0tLS0tLS0tLQoKZGVmIF9kbyhtZXRob2QsIGJh
c2UsIHBhdGgsIGJlYXJlcj1Ob25lLCBib2R5PU5vbmUsIGNvbnRlbnRfdHlwZT1Ob25lKToKICAgIHVybCA9ICIlcy9hcGkv
djElcyIgJSAoYmFzZSwgcGF0aCkKICAgIGhlYWRlcnMgPSB7fQogICAgaWYgYmVhcmVyOgogICAgICAgIGhlYWRlcnNbIkF1
dGhvcml6YXRpb24iXSA9ICJCZWFyZXIgIiArIGJlYXJlcgogICAgaWYgY29udGVudF90eXBlOgogICAgICAgIGhlYWRlcnNb
IkNvbnRlbnQtVHlwZSJdID0gY29udGVudF90eXBlCiAgICByZXEgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KHVybCwgZGF0
YT1ib2R5LCBtZXRob2Q9bWV0aG9kLCBoZWFkZXJzPWhlYWRlcnMpCiAgICB0cnk6CiAgICAgICAgd2l0aCB1cmxsaWIucmVx
dWVzdC51cmxvcGVuKHJlcSwgdGltZW91dD0xMjApIGFzIHJlc3A6CiAgICAgICAgICAgIHJhdyA9IHJlc3AucmVhZCgpCiAg
ICAgICAgICAgIHN0YXR1cyA9IHJlc3AuZ2V0Y29kZSgpCiAgICAgICAgICAgIHJldHVybiBzdGF0dXMsIHJhdwogICAgZXhj
ZXB0IHVybGxpYi5lcnJvci5IVFRQRXJyb3IgYXMgZToKICAgICAgICByYXcgPSBlLnJlYWQoKQogICAgICAgIGNvZGUsIG1z
ZyA9ICJVTktOT1dOIiwgIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGIgPSBqc29uLmxvYWRzKHJhdykKICAgICAgICAg
ICAgZXJyID0gYi5nZXQoImVycm9yIiwge30pCiAgICAgICAgICAgIGNvZGUgPSBlcnIuZ2V0KCJjb2RlIiwgIlVOS05PV04i
KQogICAgICAgICAgICBtc2cgPSBlcnIuZ2V0KCJtZXNzYWdlIiwgIiIpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAg
ICAgICAgICAgbXNnID0gcmF3LmRlY29kZSgidXRmLTgiLCAicmVwbGFjZSIpWzoyMDBdCiAgICAgICAgcmFpc2UgQ2xpRXJy
b3IoIkhUVFAgJXMgJXM6ICVzIiAlIChlLmNvZGUsIGNvZGUsIG1zZykpCiAgICBleGNlcHQgdXJsbGliLmVycm9yLlVSTEVy
cm9yIGFzIGU6CiAgICAgICAgcmFpc2UgQ2xpRXJyb3IoIuivt+axguWksei0pTogJXMiICUgKGUucmVhc29uLCkpCgoKZGVm
IGNhbGxfanNvbihtZXRob2QsIGJhc2UsIHBhdGgsIGJlYXJlcj1Ob25lLCBqc29uX2JvZHk9Tm9uZSk6CiAgICAiIiLml6Ag
Ym9keSDmiJYgSlNPTiBib2R5IOivt+axgizov5Tlm57op6PmnpDlkI7nmoQgSlNPTigyMDQv56m6IOKGkiBOb25lKeOAgiIi
IgogICAgYm9keSA9IE5vbmUKICAgIGN0eXBlID0gTm9uZQogICAgaWYganNvbl9ib2R5IGlzIG5vdCBOb25lOgogICAgICAg
IGJvZHkgPSBqc29uLmR1bXBzKGpzb25fYm9keSwgZW5zdXJlX2FzY2lpPUZhbHNlKS5lbmNvZGUoInV0Zi04IikKICAgICAg
ICBjdHlwZSA9ICJhcHBsaWNhdGlvbi9qc29uIgogICAgc3RhdHVzLCByYXcgPSBfZG8obWV0aG9kLCBiYXNlLCBwYXRoLCBi
ZWFyZXIsIGJvZHksIGN0eXBlKQogICAgaWYgc3RhdHVzID09IDIwNCBvciBub3QgcmF3OgogICAgICAgIHJldHVybiBOb25l
CiAgICByZXR1cm4ganNvbi5sb2FkcyhyYXcpCgoKZGVmIGNhbGxfbXVsdGlwYXJ0KGJhc2UsIHBhdGgsIGJlYXJlciwgZmll
bGRzLCBmaWxlX2ZpZWxkPU5vbmUpOgogICAgIiIibXVsdGlwYXJ0L2Zvcm0tZGF0YSDor7fmsYIo5rW35oql55Sf5oiQKeOA
gmZpZWxkczogWyhuYW1lLCB2YWx1ZSld44CCZmlsZV9maWVsZDogKG5hbWUsIGZpbGVwYXRoKeOAgiIiIgogICAgYm91bmRh
cnkgPSAiLS0tLXBkbGN0bC1ib3VuZGFyeS03ZjNhOWQyZTViMWMiCiAgICBwYXJ0cyA9IFtdCiAgICBmb3IgbmFtZSwgdmFs
dWUgaW4gZmllbGRzOgogICAgICAgIHBhcnRzLmFwcGVuZCgKICAgICAgICAgICAgKCItLSVzXHJcbkNvbnRlbnQtRGlzcG9z
aXRpb246IGZvcm0tZGF0YTsgbmFtZT1cIiVzXCJcclxuXHJcbiVzXHJcbiIgJSAoYm91bmRhcnksIG5hbWUsIHZhbHVlKSku
ZW5jb2RlKCJ1dGYtOCIpCiAgICAgICAgKQogICAgaWYgZmlsZV9maWVsZDoKICAgICAgICBuYW1lLCBmaWxlcGF0aCA9IGZp
bGVfZmllbGQKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdpdGggb3BlbihmaWxlcGF0aCwgInJiIikgYXMgZjoKICAgICAg
ICAgICAgICAgIGNvbnRlbnQgPSBmLnJlYWQoKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgIHJh
aXNlIENsaUVycm9yKCLor7vlj5YgJXMg5aSx6LSlOiAlcyIgJSAoZmlsZXBhdGgsIGUpKQogICAgICAgIGZpbGVuYW1lID0g
b3MucGF0aC5iYXNlbmFtZShmaWxlcGF0aCkKICAgICAgICBwYXJ0cy5hcHBlbmQoCiAgICAgICAgICAgICgiLS0lc1xyXG5D
b250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9XCIlc1wiOyBmaWxlbmFtZT1cIiVzXCJcclxuQ29udGVudC1U
eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cclxuXHJcbiIgJSAoYm91bmRhcnksIG5hbWUsIGZpbGVuYW1lKSkuZW5j
b2RlKCJ1dGYtOCIpCiAgICAgICAgKQogICAgICAgIHBhcnRzLmFwcGVuZChjb250ZW50KQogICAgICAgIHBhcnRzLmFwcGVu
ZChiIlxyXG4iKQogICAgcGFydHMuYXBwZW5kKCgiLS0lcy0tXHJcbiIgJSBib3VuZGFyeSkuZW5jb2RlKCJ1dGYtOCIpKQog
ICAgYm9keSA9IGIiIi5qb2luKHBhcnRzKQogICAgc3RhdHVzLCByYXcgPSBfZG8oIlBPU1QiLCBiYXNlLCBwYXRoLCBiZWFy
ZXIsIGJvZHksICJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iICsgYm91bmRhcnkpCiAgICBpZiBzdGF0dXMgPT0g
MjA0IG9yIG5vdCByYXc6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIHJldHVybiBqc29uLmxvYWRzKHJhdykKCgpkZWYgZG93
bmxvYWQoYmFzZSwgcGF0aCwgYmVhcmVyLCBvdXQpOgogICAgIiIi5LiL6L295LqM6L+b5Yi25ZON5bqU5Yiw5paH5Lu244CC
IiIiCiAgICBzdGF0dXMsIHJhdyA9IF9kbygiR0VUIiwgYmFzZSwgcGF0aCwgYmVhcmVyKQogICAgdHJ5OgogICAgICAgIHdp
dGggb3BlbihvdXQsICJ3YiIpIGFzIGY6CiAgICAgICAgICAgIGYud3JpdGUocmF3KQogICAgZXhjZXB0IE9TRXJyb3IgYXMg
ZToKICAgICAgICByYWlzZSBDbGlFcnJvcigi5YaZ5YWlICVzIOWksei0pTogJXMiICUgKG91dCwgZSkpCiAgICByZXR1cm4g
eyJzYXZlZCI6IG91dCwgImJ5dGVzIjogbGVuKHJhdyl9CgoKZGVmIHJlYWRfanNvbl9maWxlKHBhdGgpOgogICAgdHJ5Ogog
ICAgICAgIHdpdGggb3BlbihwYXRoLCAiciIsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGY6CiAgICAgICAgICAgIHJldHVybiBq
c29uLmxvYWQoZikKICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgcmFpc2UgQ2xpRXJyb3IoIuivu+WPliAlcyDl
pLHotKU6ICVzIiAlIChwYXRoLCBlKSkKICAgIGV4Y2VwdCBqc29uLkpTT05EZWNvZGVFcnJvciBhcyBlOgogICAgICAgIHJh
aXNlIENsaUVycm9yKCIlcyDkuI3mmK/lkIjms5UgSlNPTjogJXMiICUgKHBhdGgsIGUpKQoKCiMgLS0tLS0tLS0tLSDlkb3k
u6Tlrp7njrAgLS0tLS0tLS0tLQoKZGVmIGNtZF9hdXRoKGFyZ3MpOgogICAgYmFzZSA9IHJlc29sdmVfYmFzZShhcmdzLmJh
c2VfdXJsKQogICAgaWYgYXJncy5hdXRoX2FjdGlvbiA9PSAic21zLWNvZGUiOgogICAgICAgIGNhbGxfanNvbigiUE9TVCIs
IGJhc2UsICIvYXV0aC9waG9uZS9zbXMtY29kZSIsIGpzb25fYm9keT17InBob25lIjogYXJncy5waG9uZX0pCiAgICAgICAg
cmV0dXJuIHsic2VudCI6IFRydWUsICJwaG9uZSI6IGFyZ3MucGhvbmV9CiAgICBpZiBhcmdzLmF1dGhfYWN0aW9uIGluICgi
bG9naW4iLCAicmVnaXN0ZXIiKToKICAgICAgICBwYXRoID0gIi9hdXRoL3Bob25lLyVzIiAlICgibG9naW4iIGlmIGFyZ3Mu
YXV0aF9hY3Rpb24gPT0gImxvZ2luIiBlbHNlICJyZWdpc3RlciIpCiAgICAgICAgcmVzID0gY2FsbF9qc29uKCJQT1NUIiwg
YmFzZSwgcGF0aCwganNvbl9ib2R5PXsicGhvbmUiOiBhcmdzLnBob25lLCAiY29kZSI6IGFyZ3MuY29kZX0pCiAgICAgICAg
dG9rZW4gPSAocmVzIG9yIHt9KS5nZXQoInRva2VuIikKICAgICAgICBpZiBub3QgdG9rZW46CiAgICAgICAgICAgIHJhaXNl
IENsaUVycm9yKCLlk43lupTnvLrlsJEgdG9rZW4iKQogICAgICAgIHNhdmVkID0gd3JpdGVfc2Vzc2lvbih0b2tlbikKICAg
ICAgICByZXR1cm4geyJsb2dnZWRfaW4iOiBUcnVlLCAic2Vzc2lvbiI6IHNhdmVkfQogICAgaWYgYXJncy5hdXRoX2FjdGlv
biA9PSAibG9nb3V0IjoKICAgICAgICB0cnk6CiAgICAgICAgICAgIG9zLnJlbW92ZShzZXNzaW9uX3BhdGgoKSkKICAgICAg
ICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIHJldHVybiB7ImxvZ2dlZF9vdXQiOiBUcnVlfQog
ICAgcmFpc2UgQ2xpRXJyb3IoIuacquefpSBhdXRoIOWtkOWRveS7pCIpCgoKZGVmIGNtZF9hcGlrZXlzKGFyZ3MpOgogICAg
YmFzZSA9IHJlc29sdmVfYmFzZShhcmdzLmJhc2VfdXJsKQogICAgYmVhcmVyID0gc2Vzc2lvbl9iZWFyZXIoKQogICAgaWYg
YXJncy5hcGlrZXlzX2FjdGlvbiA9PSAibGlzdCI6CiAgICAgICAgcmV0dXJuIGNhbGxfanNvbigiR0VUIiwgYmFzZSwgIi9h
cGlrZXlzIiwgYmVhcmVyKQogICAgaWYgYXJncy5hcGlrZXlzX2FjdGlvbiA9PSAiY3JlYXRlIjoKICAgICAgICByZXR1cm4g
Y2FsbF9qc29uKCJQT1NUIiwgYmFzZSwgIi9hcGlrZXlzIiwgYmVhcmVyLCB7Im5hbWUiOiBhcmdzLm5hbWV9KQogICAgaWYg
YXJncy5hcGlrZXlzX2FjdGlvbiA9PSAicmV2b2tlIjoKICAgICAgICByZXR1cm4gY2FsbF9qc29uKCJERUxFVEUiLCBiYXNl
LCAiL2FwaWtleXMvJXMiICUgYXJncy5pZCwgYmVhcmVyKQogICAgcmFpc2UgQ2xpRXJyb3IoIuacquefpSBhcGlrZXlzIOWt
kOWRveS7pCIpCgoKZGVmIGNtZF93aG9hbWkoYXJncyk6CiAgICBiYXNlID0gcmVzb2x2ZV9iYXNlKGFyZ3MuYmFzZV91cmwp
CiAgICByZXR1cm4gY2FsbF9qc29uKCJHRVQiLCBiYXNlLCAiL2F1dGgvbWUiLCBhdXRoZWRfYmVhcmVyKCkpCgoKZGVmIGNt
ZF9mb3JtcyhhcmdzKToKICAgIGJhc2UgPSByZXNvbHZlX2Jhc2UoYXJncy5iYXNlX3VybCkKICAgIGIgPSBhdXRoZWRfYmVh
cmVyKCkKICAgIGEgPSBhcmdzLmZvcm1zX2FjdGlvbgogICAgaWYgYSA9PSAibGlzdCI6CiAgICAgICAgcmV0dXJuIGNhbGxf
anNvbigiR0VUIiwgYmFzZSwgIi9mb3JtcyIsIGIpCiAgICBpZiBhID09ICJnZXQiOgogICAgICAgIHJldHVybiBjYWxsX2pz
b24oIkdFVCIsIGJhc2UsICIvZm9ybXMvJXMiICUgYXJncy5pZCwgYikKICAgIGlmIGEgPT0gImNyZWF0ZSI6CiAgICAgICAg
cmV0dXJuIGNhbGxfanNvbigiUE9TVCIsIGJhc2UsICIvZm9ybXMiLCBiLCByZWFkX2pzb25fZmlsZShhcmdzLmZpbGUpKQog
ICAgaWYgYSA9PSAidXBkYXRlIjoKICAgICAgICByZXR1cm4gY2FsbF9qc29uKCJQVVQiLCBiYXNlLCAiL2Zvcm1zLyVzIiAl
IGFyZ3MuaWQsIGIsIHJlYWRfanNvbl9maWxlKGFyZ3MuZmlsZSkpCiAgICBpZiBhID09ICJwdWJsaXNoIjoKICAgICAgICBy
ZXR1cm4gY2FsbF9qc29uKCJQT1NUIiwgYmFzZSwgIi9mb3Jtcy8lcy9wdWJsaXNoIiAlIGFyZ3MuaWQsIGIpCiAgICBpZiBh
ID09ICJzdG9wIjoKICAgICAgICByZXR1cm4gY2FsbF9qc29uKCJQT1NUIiwgYmFzZSwgIi9mb3Jtcy8lcy9zdG9wIiAlIGFy
Z3MuaWQsIGIpCiAgICBpZiBhID09ICJkZWxldGUiOgogICAgICAgIHJldHVybiBjYWxsX2pzb24oIkRFTEVURSIsIGJhc2Us
ICIvZm9ybXMvJXMiICUgYXJncy5pZCwgYikKICAgIHJhaXNlIENsaUVycm9yKCLmnKrnn6UgZm9ybXMg5a2Q5ZG95LukIikK
CgpkZWYgY21kX2NoYW5uZWxzKGFyZ3MpOgogICAgYmFzZSA9IHJlc29sdmVfYmFzZShhcmdzLmJhc2VfdXJsKQogICAgYiA9
IGF1dGhlZF9iZWFyZXIoKQogICAgYSA9IGFyZ3MuY2hhbm5lbHNfYWN0aW9uCiAgICBpZiBhID09ICJsaXN0IjoKICAgICAg
ICByZXR1cm4gY2FsbF9qc29uKCJHRVQiLCBiYXNlLCAiL2NoYW5uZWxzIiwgYikKICAgIGlmIGEgPT0gImdldCI6CiAgICAg
ICAgcmV0dXJuIGNhbGxfanNvbigiR0VUIiwgYmFzZSwgIi9jaGFubmVscy8lcyIgJSBhcmdzLmlkLCBiKQogICAgaWYgYSA9
PSAiY3JlYXRlIjoKICAgICAgICByZXR1cm4gY2FsbF9qc29uKCJQT1NUIiwgYmFzZSwgIi9jaGFubmVscyIsIGIsIHsibmFt
ZSI6IGFyZ3MubmFtZX0pCiAgICBpZiBhID09ICJyZW5hbWUiOgogICAgICAgIHJldHVybiBjYWxsX2pzb24oIlBBVENIIiwg
YmFzZSwgIi9jaGFubmVscy8lcyIgJSBhcmdzLmlkLCBiLCB7Im5hbWUiOiBhcmdzLm5hbWV9KQogICAgaWYgYSA9PSAiZGlz
YWJsZSI6CiAgICAgICAgcmV0dXJuIGNhbGxfanNvbigiUE9TVCIsIGJhc2UsICIvY2hhbm5lbHMvJXMvZGlzYWJsZSIgJSBh
cmdzLmlkLCBiKQogICAgcmFpc2UgQ2xpRXJyb3IoIuacquefpSBjaGFubmVscyDlrZDlkb3ku6QiKQoKCmRlZiBjbWRfcG9z
dGVycyhhcmdzKToKICAgIGJhc2UgPSByZXNvbHZlX2Jhc2UoYXJncy5iYXNlX3VybCkKICAgIGIgPSBhdXRoZWRfYmVhcmVy
KCkKICAgIGEgPSBhcmdzLnBvc3RlcnNfYWN0aW9uCiAgICBpZiBhID09ICJsaXN0IjoKICAgICAgICByZXR1cm4gY2FsbF9q
c29uKCJHRVQiLCBiYXNlLCAiL2Zvcm1zLyVzL3Bvc3RlcnMiICUgYXJncy5mb3JtX2lkLCBiKQogICAgaWYgYSA9PSAiZ2Vu
ZXJhdGUiOgogICAgICAgIGZpZWxkcyA9IFsoImNoYW5uZWxfaWQiLCBhcmdzLmNoYW5uZWwpXQogICAgICAgIGlmIGFyZ3Mu
YWlfcHJvbXB0OgogICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCgiYWlfcHJvbXB0IiwgYXJncy5haV9wcm9tcHQpKQogICAg
ICAgICAgICBpZiBhcmdzLmFpX21vZGU6CiAgICAgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCgibW9kZSIsIGFyZ3MuYWlf
bW9kZSkpCiAgICAgICAgZm9yIGssIHYgaW4gKCgiYm94X3giLCBhcmdzLmJveF94KSwgKCJib3hfeSIsIGFyZ3MuYm94X3kp
LCAoImJveF93IiwgYXJncy5ib3hfdyksCiAgICAgICAgICAgICAgICAgICAgICgiYm94X2giLCBhcmdzLmJveF9oKSwgKCJx
cl93aWR0aCIsIGFyZ3MucXJfd2lkdGgpKToKICAgICAgICAgICAgaWYgdiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAg
IGZpZWxkcy5hcHBlbmQoKGssIHN0cih2KSkpCiAgICAgICAgZmlsZV9maWVsZCA9ICgiYmFja2dyb3VuZCIsIGFyZ3MuYmFj
a2dyb3VuZCkgaWYgYXJncy5iYWNrZ3JvdW5kIGVsc2UgTm9uZQogICAgICAgIHJldHVybiBjYWxsX211bHRpcGFydChiYXNl
LCAiL2Zvcm1zLyVzL3Bvc3RlcnMiICUgYXJncy5mb3JtX2lkLCBiLCBmaWVsZHMsIGZpbGVfZmllbGQpCiAgICBpZiBhID09
ICJkb3dubG9hZCI6CiAgICAgICAgcmV0dXJuIGRvd25sb2FkKGJhc2UsICIvcG9zdGVycy8lcy9pbWFnZSIgJSBhcmdzLnBv
c3Rlcl9pZCwgYiwgYXJncy5vdXQpCiAgICByYWlzZSBDbGlFcnJvcigi5pyq55+lIHBvc3RlcnMg5a2Q5ZG95LukIikKCgpk
ZWYgY21kX3N1Ym1pc3Npb25zKGFyZ3MpOgogICAgYmFzZSA9IHJlc29sdmVfYmFzZShhcmdzLmJhc2VfdXJsKQogICAgYiA9
IGF1dGhlZF9iZWFyZXIoKQogICAgaWYgYXJncy5zdWJtaXNzaW9uc19hY3Rpb24gPT0gImxpc3QiOgogICAgICAgIHJldHVy
biBjYWxsX2pzb24oIkdFVCIsIGJhc2UsICIvZm9ybXMvJXMvc3VibWlzc2lvbnMiICUgYXJncy5mb3JtX2lkLCBiKQogICAg
aWYgYXJncy5zdWJtaXNzaW9uc19hY3Rpb24gPT0gImV4cG9ydCI6CiAgICAgICAgcmV0dXJuIGRvd25sb2FkKGJhc2UsICIv
Zm9ybXMvJXMvc3VibWlzc2lvbnMvZXhwb3J0IiAlIGFyZ3MuZm9ybV9pZCwgYiwgYXJncy5vdXQpCiAgICByYWlzZSBDbGlF
cnJvcigi5pyq55+lIHN1Ym1pc3Npb25zIOWtkOWRveS7pCIpCgoKZGVmIGNtZF9hbmFseXRpY3MoYXJncyk6CiAgICBiYXNl
ID0gcmVzb2x2ZV9iYXNlKGFyZ3MuYmFzZV91cmwpCiAgICBiID0gYXV0aGVkX2JlYXJlcigpCiAgICBpZiBhcmdzLmFuYWx5
dGljc19hY3Rpb24gPT0gImdldCI6CiAgICAgICAgcmV0dXJuIGNhbGxfanNvbigiR0VUIiwgYmFzZSwgIi9mb3Jtcy8lcy9h
bmFseXRpY3MiICUgYXJncy5mb3JtX2lkLCBiKQogICAgaWYgYXJncy5hbmFseXRpY3NfYWN0aW9uID09ICJleHBvcnQiOgog
ICAgICAgIHJldHVybiBkb3dubG9hZChiYXNlLCAiL2Zvcm1zLyVzL2FuYWx5dGljcy9leHBvcnQiICUgYXJncy5mb3JtX2lk
LCBiLCBhcmdzLm91dCkKICAgIHJhaXNlIENsaUVycm9yKCLmnKrnn6UgYW5hbHl0aWNzIOWtkOWRveS7pCIpCgoKZGVmIGNt
ZF9hZG1pbihhcmdzKToKICAgIGJhc2UgPSByZXNvbHZlX2Jhc2UoYXJncy5iYXNlX3VybCkKICAgIGIgPSBhdXRoZWRfYmVh
cmVyKCkKICAgIGEgPSBhcmdzLmFkbWluX2FjdGlvbgogICAgaWYgYSA9PSAidXNlcnMiOgogICAgICAgIHBhdGggPSAiL2Fk
bWluL3VzZXJzIiArICgiP3N0YXR1cz0lcyIgJSBhcmdzLnN0YXR1cyBpZiBhcmdzLnN0YXR1cyBlbHNlICIiKQogICAgICAg
IHJldHVybiBjYWxsX2pzb24oIkdFVCIsIGJhc2UsIHBhdGgsIGIpCiAgICBpZiBhIGluICgiYXBwcm92ZSIsICJyZWplY3Qi
LCAiYmFuIiwgInVuYmFuIik6CiAgICAgICAgcmV0dXJuIGNhbGxfanNvbigiUE9TVCIsIGJhc2UsICIvYWRtaW4vdXNlcnMv
JXMvJXMiICUgKGFyZ3MuaWQsIGEpLCBiKQogICAgcmFpc2UgQ2xpRXJyb3IoIuacquefpSBhZG1pbiDlrZDlkb3ku6QiKQoK
CiMgLS0tLS0tLS0tLSDlj4LmlbDop6PmnpAgLS0tLS0tLS0tLQoKZGVmIGJ1aWxkX3BhcnNlcigpOgogICAgcCA9IGFyZ3Bh
cnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9InBkbGN0bCIsIGRlc2NyaXB0aW9uPSJwYWlkYW5sYS5jb20g5bmz5Y+wIENMSSjo
oajljZUv5rig6YGTL+a1t+aKpS/mj5DkuqQv57uf6K6hKSIpCiAgICBwLmFkZF9hcmd1bWVudCgiLS1iYXNlLXVybCIsIGhl
bHA9IuW5s+WPsOWcsOWdgDvkuqblj6/nlKjnjq/looPlj5jph48gUERMX0JBU0VfVVJMIikKICAgIHN1YiA9IHAuYWRkX3N1
YnBhcnNlcnMoZGVzdD0iY29tbWFuZCIsIHJlcXVpcmVkPVRydWUpCgogICAgIyBhdXRoCiAgICBwYSA9IHN1Yi5hZGRfcGFy
c2VyKCJhdXRoIiwgaGVscD0i6LSm5Y+36K6k6K+BOuaJi+acuuWPtyArIOmqjOivgeeggeazqOWGjC/nmbvlvZUiKQogICAg
c2EgPSBwYS5hZGRfc3VicGFyc2VycyhkZXN0PSJhdXRoX2FjdGlvbiIsIHJlcXVpcmVkPVRydWUpCiAgICB4ID0gc2EuYWRk
X3BhcnNlcigic21zLWNvZGUiLCBoZWxwPSLlj5HpgIHnn63kv6Hpqozor4HnoIEiKQogICAgeC5hZGRfYXJndW1lbnQoIi0t
cGhvbmUiLCByZXF1aXJlZD1UcnVlKQogICAgZm9yIG5hbWUgaW4gKCJyZWdpc3RlciIsICJsb2dpbiIpOgogICAgICAgIHgg
PSBzYS5hZGRfcGFyc2VyKG5hbWUsIGhlbHA9IuazqOWGjCIgaWYgbmFtZSA9PSAicmVnaXN0ZXIiIGVsc2UgIueZu+W9lSIp
CiAgICAgICAgeC5hZGRfYXJndW1lbnQoIi0tcGhvbmUiLCByZXF1aXJlZD1UcnVlKQogICAgICAgIHguYWRkX2FyZ3VtZW50
KCItLWNvZGUiLCByZXF1aXJlZD1UcnVlKQogICAgc2EuYWRkX3BhcnNlcigibG9nb3V0IiwgaGVscD0i5riF6Zmk5pys5Zyw
5Lya6K+dIikKICAgIHBhLnNldF9kZWZhdWx0cyhmdW5jPWNtZF9hdXRoKQoKICAgICMgYXBpa2V5cwogICAgcGsgPSBzdWIu
YWRkX3BhcnNlcigiYXBpa2V5cyIsIGhlbHA9IkFQSSBLZXkg566h55CGKOmcgOeZu+W9leS8muivnSkiKQogICAgc2sgPSBw
ay5hZGRfc3VicGFyc2VycyhkZXN0PSJhcGlrZXlzX2FjdGlvbiIsIHJlcXVpcmVkPVRydWUpCiAgICBzay5hZGRfcGFyc2Vy
KCJsaXN0IiwgaGVscD0i5YiX5Ye6IEFQSSBLZXkiKQogICAgeCA9IHNrLmFkZF9wYXJzZXIoImNyZWF0ZSIsIGhlbHA9IuWI
m+W7uiBBUEkgS2V5IikKICAgIHguYWRkX2FyZ3VtZW50KCItLW5hbWUiLCByZXF1aXJlZD1UcnVlKQogICAgeCA9IHNrLmFk
ZF9wYXJzZXIoInJldm9rZSIsIGhlbHA9IuWQiumUgCBBUEkgS2V5IikKICAgIHguYWRkX2FyZ3VtZW50KCJpZCIpCiAgICBw
ay5zZXRfZGVmYXVsdHMoZnVuYz1jbWRfYXBpa2V5cykKCiAgICAjIHdob2FtaQogICAgcHcgPSBzdWIuYWRkX3BhcnNlcigi
d2hvYW1pIiwgaGVscD0i5b2T5YmN5Yet6K+B5b2S5bGe6LSm5Y+3IikKICAgIHB3LnNldF9kZWZhdWx0cyhmdW5jPWNtZF93
aG9hbWkpCgogICAgIyBmb3JtcwogICAgcGYgPSBzdWIuYWRkX3BhcnNlcigiZm9ybXMiLCBoZWxwPSLooajljZXnrqHnkIYi
KQogICAgc2YgPSBwZi5hZGRfc3VicGFyc2VycyhkZXN0PSJmb3Jtc19hY3Rpb24iLCByZXF1aXJlZD1UcnVlKQogICAgc2Yu
YWRkX3BhcnNlcigibGlzdCIpCiAgICBmb3IgbmFtZSBpbiAoImdldCIsICJwdWJsaXNoIiwgInN0b3AiLCAiZGVsZXRlIik6
CiAgICAgICAgeCA9IHNmLmFkZF9wYXJzZXIobmFtZSkKICAgICAgICB4LmFkZF9hcmd1bWVudCgiaWQiKQogICAgeCA9IHNm
LmFkZF9wYXJzZXIoImNyZWF0ZSIpCiAgICB4LmFkZF9hcmd1bWVudCgiLS1maWxlIiwgcmVxdWlyZWQ9VHJ1ZSkKICAgIHgg
PSBzZi5hZGRfcGFyc2VyKCJ1cGRhdGUiKQogICAgeC5hZGRfYXJndW1lbnQoImlkIikKICAgIHguYWRkX2FyZ3VtZW50KCIt
LWZpbGUiLCByZXF1aXJlZD1UcnVlKQogICAgcGYuc2V0X2RlZmF1bHRzKGZ1bmM9Y21kX2Zvcm1zKQoKICAgICMgY2hhbm5l
bHMKICAgIHBjID0gc3ViLmFkZF9wYXJzZXIoImNoYW5uZWxzIiwgaGVscD0i5rig6YGT566h55CGIikKICAgIHNjID0gcGMu
YWRkX3N1YnBhcnNlcnMoZGVzdD0iY2hhbm5lbHNfYWN0aW9uIiwgcmVxdWlyZWQ9VHJ1ZSkKICAgIHNjLmFkZF9wYXJzZXIo
Imxpc3QiKQogICAgeCA9IHNjLmFkZF9wYXJzZXIoImdldCIpCiAgICB4LmFkZF9hcmd1bWVudCgiaWQiKQogICAgeCA9IHNj
LmFkZF9wYXJzZXIoImNyZWF0ZSIpCiAgICB4LmFkZF9hcmd1bWVudCgiLS1uYW1lIiwgcmVxdWlyZWQ9VHJ1ZSkKICAgIHgg
PSBzYy5hZGRfcGFyc2VyKCJyZW5hbWUiKQogICAgeC5hZGRfYXJndW1lbnQoImlkIikKICAgIHguYWRkX2FyZ3VtZW50KCIt
LW5hbWUiLCByZXF1aXJlZD1UcnVlKQogICAgeCA9IHNjLmFkZF9wYXJzZXIoImRpc2FibGUiKQogICAgeC5hZGRfYXJndW1l
bnQoImlkIikKICAgIHBjLnNldF9kZWZhdWx0cyhmdW5jPWNtZF9jaGFubmVscykKCiAgICAjIHBvc3RlcnMKICAgIHBwID0g
c3ViLmFkZF9wYXJzZXIoInBvc3RlcnMiLCBoZWxwPSLmtbfmiqXnlJ/miJDkuI7kuIvovb0iKQogICAgc3AgPSBwcC5hZGRf
c3VicGFyc2VycyhkZXN0PSJwb3N0ZXJzX2FjdGlvbiIsIHJlcXVpcmVkPVRydWUpCiAgICB4ID0gc3AuYWRkX3BhcnNlcigi
bGlzdCIpCiAgICB4LmFkZF9hcmd1bWVudCgiZm9ybV9pZCIpCiAgICB4ID0gc3AuYWRkX3BhcnNlcigiZ2VuZXJhdGUiKQog
ICAgeC5hZGRfYXJndW1lbnQoImZvcm1faWQiKQogICAgeC5hZGRfYXJndW1lbnQoIi0tY2hhbm5lbCIsIHJlcXVpcmVkPVRy
dWUpCiAgICB4LmFkZF9hcmd1bWVudCgiLS1iYWNrZ3JvdW5kIiwgaGVscD0i6Ieq5a6a5LmJ6IOM5pmv5Zu+6Lev5b6EKFBO
Ry9KUEVHKSIpCiAgICB4LmFkZF9hcmd1bWVudCgiLS1haS1wcm9tcHQiLCBkZXN0PSJhaV9wcm9tcHQiLCBoZWxwPSLmjInm
j5DnpLror40gQUkg55Sf5oiQ5rW35oqlKOacque7meiDjOaZr+WbvuaXtueUn+aViCkiKQogICAgeC5hZGRfYXJndW1lbnQo
Ii0tYWktbW9kZSIsIGRlc3Q9ImFpX21vZGUiLCBjaG9pY2VzPVsidGVtcGxhdGUiLCAiYWlfcG9zdGVyIl0sCiAgICAgICAg
ICAgICAgICAgICBoZWxwPSJBSSDlh7rlm77mlrnlvI86dGVtcGxhdGU9QUnlh7rog4zmma8r57O757uf5qih5p2/5o6S54mI
KOm7mOiupCzmloflrZfmuIXmmbApO2FpX3Bvc3Rlcj1BSeWHuuaVtOW8oOa1t+aKpeezu+e7n+WPquWPoOeggSjorr7orqHo
h6rnlLEs5Lit5paH5Y+v6IO95LiN5YeGKSIpCiAgICB4LmFkZF9hcmd1bWVudCgiLS1ib3gteCIsIGRlc3Q9ImJveF94Iiwg
dHlwZT1mbG9hdCkKICAgIHguYWRkX2FyZ3VtZW50KCItLWJveC15IiwgZGVzdD0iYm94X3kiLCB0eXBlPWZsb2F0KQogICAg
eC5hZGRfYXJndW1lbnQoIi0tYm94LXciLCBkZXN0PSJib3hfdyIsIHR5cGU9ZmxvYXQpCiAgICB4LmFkZF9hcmd1bWVudCgi
LS1ib3gtaCIsIGRlc3Q9ImJveF9oIiwgdHlwZT1mbG9hdCkKICAgIHguYWRkX2FyZ3VtZW50KCItLXFyLXdpZHRoIiwgZGVz
dD0icXJfd2lkdGgiLCB0eXBlPWZsb2F0KQogICAgeCA9IHNwLmFkZF9wYXJzZXIoImRvd25sb2FkIikKICAgIHguYWRkX2Fy
Z3VtZW50KCJwb3N0ZXJfaWQiKQogICAgeC5hZGRfYXJndW1lbnQoIi1vIiwgIi0tb3V0IiwgcmVxdWlyZWQ9VHJ1ZSkKICAg
IHBwLnNldF9kZWZhdWx0cyhmdW5jPWNtZF9wb3N0ZXJzKQoKICAgICMgc3VibWlzc2lvbnMKICAgIHBzID0gc3ViLmFkZF9w
YXJzZXIoInN1Ym1pc3Npb25zIiwgaGVscD0i5o+Q5Lqk5pWw5o2u5p+l55yL5LiO5a+85Ye6IikKICAgIHNzID0gcHMuYWRk
X3N1YnBhcnNlcnMoZGVzdD0ic3VibWlzc2lvbnNfYWN0aW9uIiwgcmVxdWlyZWQ9VHJ1ZSkKICAgIHggPSBzcy5hZGRfcGFy
c2VyKCJsaXN0IikKICAgIHguYWRkX2FyZ3VtZW50KCJmb3JtX2lkIikKICAgIHggPSBzcy5hZGRfcGFyc2VyKCJleHBvcnQi
KQogICAgeC5hZGRfYXJndW1lbnQoImZvcm1faWQiKQogICAgeC5hZGRfYXJndW1lbnQoIi1vIiwgIi0tb3V0IiwgcmVxdWly
ZWQ9VHJ1ZSkKICAgIHBzLnNldF9kZWZhdWx0cyhmdW5jPWNtZF9zdWJtaXNzaW9ucykKCiAgICAjIGFuYWx5dGljcwogICAg
cG4gPSBzdWIuYWRkX3BhcnNlcigiYW5hbHl0aWNzIiwgaGVscD0i6K6/6ZeuL+i9rOWMlue7n+iuoSIpCiAgICBzbiA9IHBu
LmFkZF9zdWJwYXJzZXJzKGRlc3Q9ImFuYWx5dGljc19hY3Rpb24iLCByZXF1aXJlZD1UcnVlKQogICAgeCA9IHNuLmFkZF9w
YXJzZXIoImdldCIpCiAgICB4LmFkZF9hcmd1bWVudCgiZm9ybV9pZCIpCiAgICB4ID0gc24uYWRkX3BhcnNlcigiZXhwb3J0
IikKICAgIHguYWRkX2FyZ3VtZW50KCJmb3JtX2lkIikKICAgIHguYWRkX2FyZ3VtZW50KCItbyIsICItLW91dCIsIHJlcXVp
cmVkPVRydWUpCiAgICBwbi5zZXRfZGVmYXVsdHMoZnVuYz1jbWRfYW5hbHl0aWNzKQoKICAgICMgYWRtaW4KICAgIHBtID0g
c3ViLmFkZF9wYXJzZXIoImFkbWluIiwgaGVscD0i566h55CG5ZGY5pON5L2cKOmcgCBhZG1pbiDotKblj7flh63or4EpIikK
ICAgIHNtID0gcG0uYWRkX3N1YnBhcnNlcnMoZGVzdD0iYWRtaW5fYWN0aW9uIiwgcmVxdWlyZWQ9VHJ1ZSkKICAgIHggPSBz
bS5hZGRfcGFyc2VyKCJ1c2VycyIpCiAgICB4LmFkZF9hcmd1bWVudCgiLS1zdGF0dXMiLCBoZWxwPSJwZW5kaW5nL2FwcHJv
dmVkL3JlamVjdGVkIikKICAgIGZvciBuYW1lIGluICgiYXBwcm92ZSIsICJyZWplY3QiLCAiYmFuIiwgInVuYmFuIik6CiAg
ICAgICAgeCA9IHNtLmFkZF9wYXJzZXIobmFtZSkKICAgICAgICB4LmFkZF9hcmd1bWVudCgiaWQiKQogICAgcG0uc2V0X2Rl
ZmF1bHRzKGZ1bmM9Y21kX2FkbWluKQoKICAgIHJldHVybiBwCgoKZGVmIG1haW4oKToKICAgIGFyZ3MgPSBidWlsZF9wYXJz
ZXIoKS5wYXJzZV9hcmdzKCkKICAgIHRyeToKICAgICAgICByZXN1bHQgPSBhcmdzLmZ1bmMoYXJncykKICAgIGV4Y2VwdCBD
bGlFcnJvciBhcyBlOgogICAgICAgIHN5cy5zdGRlcnIud3JpdGUoInBkbGN0bDogJXNcbiIgJSBlKQogICAgICAgIHJldHVy
biAxCiAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgcmV0dXJuIDEzMAogICAgcHJpbnQoanNvbi5kdW1w
cyhyZXN1bHQsIGVuc3VyZV9hc2NpaT1GYWxzZSwgaW5kZW50PTIpKQogICAgcmV0dXJuIDAKCgppZiBfX25hbWVfXyA9PSAi
X19tYWluX18iOgogICAgc3lzLmV4aXQobWFpbigpKQo=
""")
with open(os.path.expanduser("~/.cache/pdlctl/pdlctl.py"), "wb") as f:
    f.write(data)
PDLCTL_B64
PDLCTL="python3 $HOME/.cache/pdlctl/pdlctl.py"   # Windows: PDLCTL="python $HOME/.cache/pdlctl/pdlctl.py"
$PDLCTL --help

2. 配置目标环境(环境变量)

变量 说明 默认
PDL_BASE_URL 平台地址 https://paidanla.com
PDL_API_KEY API Key(pdl_ 前缀) 可选

两种认证,任选其一(通用命令凭证优先级 PDL_API_KEY > 登录会话):

  1. API Key(适合脚本/CI):平台网页端「API Key」页创建,export PDL_API_KEY=pdl_…。
  2. 登录会话(适合交互):pdlctl auth login --phone <手机号> --code <验证码>,JWT 存 ~/.config/pdlctl/session(0600)。
  • API Key 管理(apikeys 子命令)只认登录会话,不接受 PDL_API_KEY(平台硬限制:Key 不能管理 Key,防泄漏自繁殖)。要建/吊销 Key 得先 auth login。
  • 不要把 Key/令牌写进任何文件或提交到仓库,只在当前 shell 里 export。
  • 本地开发:后端 cd backend && make run(:8080),export PDL_BASE_URL=http://127.0.0.1:8080。
  • 默认目标是生产:改动生产内容(建/删表单、停用渠道、审核用户、注册账号)前先向用户确认。

3. 命令速查

# 认证(手机号 + 验证码;即注册即用,免审核)
pdlctl auth sms-code --phone 13800138000        # 发验证码
pdlctl auth login    --phone 13800138000 --code 123456   # 登录(未注册自动建号),存本地会话
pdlctl auth register --phone 13800138000 --code 123456   # 显式注册,等价于登录(即注册即用)
pdlctl auth logout                              # 清除本地会话

# API Key 管理(需登录会话)
pdlctl apikeys list
pdlctl apikeys create --name "CI 脚本"          # 明文令牌仅返回一次
pdlctl apikeys revoke <id>

pdlctl whoami                                   # 当前凭证归属账号(验证配置)

pdlctl forms list
pdlctl forms get <id>
pdlctl forms create --file form.json            # 定义结构见下节
pdlctl forms update <id> --file form.json       # 有提交后字段定义锁定(FIELDS_LOCKED)
pdlctl forms publish <id>                       # draft → published,开始收表
pdlctl forms stop <id>                          # 停止收集
pdlctl forms delete <id>

pdlctl channels list                            # 含已停用
pdlctl channels create --name "朋友圈"
pdlctl channels rename <id> --name "视频号"
pdlctl channels disable <id>                    # 软停用,不可重新启用

pdlctl posters list <form_id>
pdlctl posters generate <form_id> --channel <channel_id> \
       [--background bg.png | --ai-prompt "山景 海报背景" [--ai-mode template|ai_poster]] \
       [--box-x 0.3 --box-y 0.6 --box-w 0.4 --box-h 0.3] [--qr-width 0.28]
pdlctl posters download <poster_id> -o poster.png

pdlctl submissions list <form_id>               # 含 PII,注意保密
pdlctl submissions export <form_id> -o subs.csv # CSV(带 BOM,Excel 直开)

pdlctl analytics get <form_id>                  # 访问/提交/转化,按渠道细分
pdlctl analytics export <form_id> -o stats.csv

pdlctl admin users [--status pending]           # 需 admin 账号的凭证
pdlctl admin approve <id>                        # 通过待审核账号
pdlctl admin reject <id>                         # 拒绝待审核账号
pdlctl admin ban <id>                            # 封禁已生效账号(立即禁止登录)
pdlctl admin unban <id>                          # 解封

账号体系:手机号 + 验证码即注册即用(免审核)——登录时号不存在自动建号并登录。邮箱+密码登录仅管理员/存量账号(邮箱注册已下线)。被管理员拒绝/封禁(rejected)的号仍不能登录。手机号发码有防刷限流(同号 60s 间隔 / 每日 10 次 / IP 每分钟 5 次)。

4. 表单定义 JSON(forms create/update)

{
  "title": "活动报名",
  "description": "副标题(可空)",
  "fields": [
    { "key": "name",  "type": "text",   "label": "姓名",   "required": true },
    { "key": "phone", "type": "phone",  "label": "手机号", "required": true, "require_sms_verify": false },
    { "key": "level", "type": "select", "label": "级别",   "required": false, "options": ["初级", "中级"] }
  ],
  "primary_key": "phone"
}
  • type:text / phone / select(select 必须给 options)。
  • primary_key 指向某个 field 的 key,用于查重(重复提交 → DUPLICATE_SUBMISSION)。
  • require_sms_verify 仅 phone 字段有效:开启后填写者要过短信验证码。

5. 关键业务规则(操作前必读)

  • 海报必须绑渠道:posters generate 的 --channel 必填;表单需 published、渠道需 active,
    否则 INVALID_STATE。填写链接/二维码为 {域名}/f/{formId}?c={channelId},渠道归因走查询参数 c。
  • 背景三选一:--background(上传图)优先;否则 --ai-prompt 用 LLM 图像服务生成
    (服务端需配 LLM_BASE_URL/LLM_API_KEY,未配返回 AI_UNAVAILABLE;上游失败 AI_GENERATION_FAILED);
    都不给则默认白底模板。AI 生成约 1-2 分钟,耐心等待。
  • --ai-mode(仅配合 --ai-prompt):template(默认)= AI 出背景 + 系统模板排版,标题/二维码由系统合成,
    文字最清晰、版式统一;ai_poster = AI 出整张成品海报(二维码位画品红占位块),系统色键探测后
    把真实可扫二维码贴到该位置,设计更自由、效果最好,但 AI 渲染的中文偶尔不准(图像模型通病)。
  • 字段锁定:表单一旦有提交,forms update 改字段会被拒(FIELDS_LOCKED);只能改标题/描述。
  • 渠道停用不可逆,已分发二维码仍可填写但新提交归为「未知渠道」。
  • 提交数据含 PII(姓名/手机号):只在用户明确要求时导出,不要粘贴到公开场合。
  • 错误格式统一 {"error":{"code","message"}},码表见 docs/api/conventions.md。

6. 典型流程:从零发一个可扫码报名的表单

pdlctl forms create --file form.json          # 得到 form_id(draft)
pdlctl forms publish <form_id>
pdlctl channels create --name "朋友圈"        # 得到 channel_id(或复用已有)
pdlctl posters generate <form_id> --channel <channel_id>
pdlctl posters download <poster_id> -o 朋友圈海报.png   # 发给用户传播
# 收表后:
pdlctl analytics get <form_id>
pdlctl submissions export <form_id> -o 报名数据.csv

常见问题

5 问
答案由本站依据条目字段整理
派单啦平台 CLI(pdlctl)怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_51ab3167/pdl-cli。安装方式为未标注。装完刷新技能列表或重开客户端。

派单啦平台 CLI(pdlctl)支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

派单啦平台 CLI(pdlctl)权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

派单啦平台 CLI(pdlctl)收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

派单啦平台 CLI(pdlctl)用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。