ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

k-skill 实战:基于 KOPIS Open API 的公演与剧场设施检索技能全解析

k-skill 实战:基于 KOPIS Open API 的公演与剧场设施检索技能全解析 k-skill 实战基于 KOPIS Open API 的公演与剧场设施检索技能全解析【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill本篇技术指南以 k-skill 仓库中的kopis-performance-search技能为核心系统讲解如何借助k-skill-proxy这一中间层安全地调用韩国 KOPIS공연예술통합전산망公演艺术综合电算网Open API完成公演列表、公演详情、剧场设施列表与设施详情四类查询。读完本文你将掌握该技能的端点映射关系、全部查询参数与校验规则、基于 curl 的完整调用工作流、典型错误码的排查方法以及代理层如何通过服务端密钥注入、结果缓存与错误识别来保证查询既安全又稳定。技能定位为什么公演查询要走 k-skill-proxykopis-performance-search是一个查询专用조회 전용技能其核心思路是不让终端用户直接接触 KOPIS Open API 的原始密钥而是统一经由k-skill-proxy的/v1/kopis/*路由间接调用。技能定义文件 kopis-performance-search/skill.json 将其类别标记为culture、语言环境为ko-KR完整指令以 kopis-performance-search/instruction.md 为准。指令文档特别强调了一个容易踩坑的细节KOPIS 的www.kopis.or.kr重定向可能会拦截部分请求因此代理层在源码中直接写死了 canonical host。见 packages/k-skill-proxy/src/kopis.jsconst KOPIS_BASE_URL https://kopis.or.kr/openApi/restful;即所有上游请求都稳定指向https://kopis.or.kr/openApi/restful这个规范入口绕开可能引发重定向拦截的www域名这是保障查询成功率的第一个关键设计。支持的端点与上游映射技能对外暴露 4 个 HTTP 端点每个端点与 KOPIS 原始 Open API 资源一一对应代理端点GET上游 KOPIS 资源用途/v1/kopis/performancespblprfr公演공연列表/v1/kopis/performances/{id}pblprfr/{mt20id}单场公演详情/v1/kopis/facilitiesprfplc剧场设施공연시설列表/v1/kopis/facilities/{id}prfplc/{mt10id}单个设施详情在 packages/k-skill-proxy/src/server.js 中可以看到这四条路由的注册方式列表路由统一复用handleKopisListRoute将operation与上游path解耦performances→pblprfrfacilities→prfplc详情路由则把路径参数作为mt20id/mt10id原样拼接进上游地址。值得注意的是{id}并非简单地透传——它会先经过normalizeKopisDetailQuery的合法性校验要求id形如mt20id/mt10id且仅含[A-Za-z0-9_-]再对 ID 做encodeURIComponent后拼入上游 URL。使用时机与典型请求当用户提出以下类型的诉求时适合启用本技能이번 달 서울 공연 KOPIS에서 찾아줘帮我在 KOPIS 里查这个月首尔有哪些公演공연 ID PF132236 상세 보여줘查看公演 ID PF132236 的详情세종문화회관 KOPIS 시설 정보 찾아줘查询世宗文化会馆的设施信息技能边界非常明确只做查询。预购예매、座位占位좌석 선점、支付결제以及登录自动化一律不在范围内。前置条件与凭据要求使用该技能需要满足可用的互联网连接能够访问 hosted 或 self-host 的k-skill-proxy的/v1/kopis/*路由。凭据方面遵循密钥只在代理侧用户侧零密钥的原则用户侧无需任何强制密钥。查询公演信息对最终用户完全透明。KSKILL_PROXY_BASE_URL仅在自建或使用独立代理时才需要设置留空时默认使用 hosted 代理https://k-skill-proxy.nomadamas.org。KOPIS_API_KEY或KSKILL_KOPIS_API_KEY只部署在代理运营服务器的环境中绝不进入用户侧。从代理源码看两个环境变量的优先级关系为KOPIS_API_KEY优先其次才是KSKILL_KOPIS_API_KEY见 packages/k-skill-proxy/src/server.jskopisApiKey: trimOrNull(env.KOPIS_API_KEY ?? env.KSKILL_KOPIS_API_KEY),KOPIS 密钥的获取方式在 KOPIS Open API 页面注册/登录后通过 OpenAPI 使用申请OpenAPI 이용신청即可获得。申请到的密钥由代理运维方配置普通用户无需关心。输入参数详解与代理侧校验规则技能文档分别列出了公演列表与设施列表两组查询参数而代理源码 packages/k-skill-proxy/src/kopis.js 则给出了这些参数的别名解析与校验实现。公演列表参数代理参数上游参数说明start/startDate/stdatestdate开始日期格式YYYYMMDD必填end/endDate/eddateeddate结束日期格式YYYYMMDD必填genre/shcateshcate体裁代码areaCode/signgucodesigngucode地区시/도代码sigunguCode/signgucodesubsigngucodesub市郡区代码facilityCode/prfplccdprfplccd设施代码源码中的别名prfstateprfstate公演状态kidstatekidstate是否儿童公演openrunopenrun是否长期公演오픈런afterdateafterdate是否仅限今日之后page/cpagecpage页码默认 1合法范围 1–1000limit/rowsrows每页条数默认 10合法范围 1–100这里展示了参数别名机制的完整逻辑cpage接受cpage或pagerows接受rows或limit日期参数stdate同时接受stdate、startDate、start三种写法eddate同理。用户使用更直观的start/end/genre/areaCode代理会统一转换为 KOPIS 期望的stdate/eddate/shcate/signgucode。设施列表参数代理参数上游参数说明q/query/name/shprfnmfctshprfnmfct设施名称areaCode/signgucodesigngucode地区代码sigunguCode/signgucodesubsigngucodesub市郡区代码fcltychartrfcltychartr设施特性afterdateafterdate仅限今日之后page/cpagecpage页码默认 1范围 1–1000limit/rowsrows每页条数默认 10范围 1–100源码层的严格校验normalizeKopisListQuery在转发前会执行一系列硬性校验kopis.js日期格式normalizeYyyymmdd会剥除非数字字符后要求恰好 8 位并进一步用Date.UTC回验年/月/日是否构成真实日期例如20261301会被拒绝保证格式为合法YYYYMMDD日期顺序公演列表强制要求stdate eddate否则直接抛错分页边界cpage取值范围 1–1000rows取值范围 1–100非数字或越界都会返回校验错误rows上限 100 也天然防止了单次拉取过量数据ID 格式详情请求的 ID 必须匹配^[A-Za-z0-9_-]$。所有校验失败统一由路由层转换为 HTTP400 bad_request响应见 server.js。实战工作流从列表到详情技能文档给出的推荐流程是先小范围搜列表再按 ID 查详情这样既避免一次性拉取过多数据又能精准定位目标。第一步小范围搜索列表以2026 年 7 月首尔地区的公演为例先限定日期范围与地区、控制返回条数BASE${KSKILL_PROXY_BASE_URL:-https://k-skill-proxy.nomadamas.org} curl -fsS --get $BASE/v1/kopis/performances \ --data-urlencode start20260701 \ --data-urlencode end20260731 \ --data-urlencode areaCode11 \ --data-urlencode limit10其中BASE取自KSKILL_PROXY_BASE_URL未设置时自动回退到 hosted 默认地址areaCode11对应首尔特别市。第二步按选中 ID 获取详情从列表结果中挑出目标公演的mt20id直接请求详情端点curl -fsS $BASE/v1/kopis/performances/PF132236代理会把该请求转发为上游pblprfr/PF132236并注入service密钥参数。第三步按设施名定位设施若要查世宗文化会馆这类设施先用名称搜列表拿到mt10id后再查详情curl -fsS --get $BASE/v1/kopis/facilities \ --data-urlencode q세종문화회관 \ --data-urlencode limit5q参数会在代理层被映射为上游的shprfnmfct。测试用例 packages/k-skill-proxy/test/server.test.js 验证了该链路的正确性/v1/kopis/facilities?q세종limit3会生成上游请求prfplc?shprfnmfct세종...而/v1/kopis/performances/PF132236与/v1/kopis/facilities/FC001247则分别精确指向pblprfr/PF132236与prfplc/FC001247。错误模式与故障排查技能文档列出了三类主要失败场景结合代理实现可以给出更精确的定位现象含义排查方向400 bad_request代理侧参数校验未通过检查日期是否为合法YYYYMMDD且stdate eddate、分页参数是否超出 1–1000/1–100 范围、详情 ID 是否包含非法字符503 upstream_not_configured代理服务器未配置KOPIS_API_KEY/KSKILL_KOPIS_API_KEY在代理运营环境配置密钥用户侧可确认KSKILL_PROXY_BASE_URL是否指向正确代理KOPIS 上游返回 XML 错误或空结果KOPIS 侧拒绝了查询或查询无数据放宽搜索日期范围、调整地区/体裁代码或核对mt20id/mt10id是否正确关于最后一点指令文档给出了一个重要提示KOPIS 官方指南并没有明确枚举错误 XML 的 schema因此排查时应直接查看 live 响应中的 XML 正文来判断具体原因。代理层在错误处理上还有两个值得注意的实现细节无密钥时的短路响应proxyKopisRequest在serviceKey缺失时直接返回503 JSON 错误体{error:upstream_not_configured, ...}根本不会发起上游请求kopis.js。对应测试见 server.test.js。KOPIS 语义错误的识别与不缓存代理用正则/(?:error|errorcode|errormsg)(?:\s|)/i识别 KOPIS 错误 XML。当上游返回 2xx 但正文是错误 XML例如errorcode01/codemsgSERVICE ERROR/msg/error时该响应不会被写入缓存从而保证下一次重试能够自我修复server.js。测试用例Assembly and KOPIS semantic errors are not cached so retries self-heal对此做了显式验证server.test.js。列表缓存与密钥注入机制理解代理的缓存策略有助于高效使用该技能。列表路由handleKopisListRoute的完整流程是server.js校验并规范化查询参数以kopis-{operation} 规范化参数计算缓存键先查缓存命中则直接返回未命中则调用proxyKopisRequest把service即 KOPIS 密钥与规范化参数拼入https://kopis.or.kr/openApi/restful/{path}仅当上游返回 2xx且正文不是 KOPIS 错误 XML 时才写入缓存并回传。密钥注入由 kopis.js 统一完成url.searchParams.set(service, serviceKey)并过滤掉空值参数。代理对上游请求设置了 20 秒超时AbortSignal.timeout(20000)避免上游响应缓慢时拖垮代理。测试用例KOPIS routes inject service key and cache list responses验证了以下行为首次请求后第二次相同请求不会再次打到上游calls.length 1且上游 URL 中确实携带servicekopis-key、stdate20260101、eddate20260131、rows5server.test.js。一个值得注意的差异是列表端点有缓存详情端点没有缓存详情路由直接透传上游结果。因此在频繁轮询公演详情时需要意识到每次请求都会真实到达 KOPIS 上游。完成标准Done when一次合格的查询会话应当满足以下验收条件列表搜索已通过收窄日期范围的方式执行而不是无边界拉取详情回答中明确标注了 KOPIS 的mt20id或mt10id对公演名、演出期间、场所、状态等字段的摘要基于 KOPIS 原始字段원문 필드整理并注明来源 endpoint会话止步于查询不滑向预购/支付/座位自动化。维护者视角无密钥验证与发布前检查指令文档的 Maintainer review notes 为维护者提供了不依赖真实密钥即可完成的验证路径运行scripts/validate-skills.sh校验技能目录结构与元数据运行node --test packages/k-skill-proxy/test/server.test.js执行代理层测试其中已覆盖 KOPIS 四类端点、密钥注入、缓存命中、语义错误不缓存、缺密钥 503 等场景通过curl -i --get $KSKILL_PROXY_BASE_URL/v1/kopis/performances --data-urlencode start20260701 --data-urlencode end20260731检查代理是否返回预期状态码未配置密钥时应返回 503。Live smoke 测试则在 hosted/self-host 代理配置好KOPIS_API_KEY之后再进行用于确认真实上游联通性。此外技能的完整指令可通过 CLI 获取npx -y nomadamas/k-skill0 instruct kopis-performance-search辅助文件清单用npx -y nomadamas/k-skill0 files kopis-performance-search查看详见 kopis-performance-search/SKILL.md。安全边界与合规注意事项本技能严格限定为查询只读禁止任何形式的预购、座位占位、支付或登录自动化KOPIS 密钥只存在于代理服务器环境不得写入仓库、CI如 GitHub Actions或公开文档用户侧不接触明文密钥面向公众信息的自动收集仅限个人、非组织性的查询用途不得用于系统化批量爬取、建库、绕过访问控制或干扰第三方业务使用前应阅读 kopis-performance-search/references/DISCLAIMER.md 中的完整法律声明。小结kopis-performance-search是 k-skill 文化类技能的一个典型范例它把用户侧零密钥的安全模型、参数别名友好化、严格的输入校验、语义错误识别与缓存策略全部收敛到k-skill-proxy一层终端调用方只需通过 4 个简单 GET 端点即可获得稳定、可缓存的 KOPIS 公演与设施数据。若需在本仓库中进一步研究其实现可依次阅读 代理路由注册、参数规范化与上游调用 以及 端点测试用例。【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表