ARTICLE DETAIL

资讯详情

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

k-skill 之 daishin-report-search:基于 GitHub Pages 公开镜像的大信证券报告检索客户端实战指南

k-skill 之 daishin-report-search:基于 GitHub Pages 公开镜像的大信证券报告检索客户端实战指南 k-skill 之 daishin-report-search基于 GitHub Pages 公开镜像的大信证券报告检索客户端实战指南【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skilldaishin-report-search 是 k-skill 仓库中的一个零配置查询客户端它不依赖任何券商私有接口或 API Key而是直接从公开的 GitHub Pages 镜像仓库jay-jo-0/github_pages_repo中检索带时间戳的大信证券대신증권研究报告 HTML 页面把最新报告列表与单篇报告原文封装成 Agent 易于消费的 JSON。读完本文你将掌握该包提供的listReports/fetchReport两个核心 API、配套 CLI 的全部参数、四类数据源端点的分工与回退顺序以及参数边界、限流处理等容错细节可以直接在 Node.js 项目或命令行中落地报告列表 关键词过滤 原文/说明页拉取的完整工作流。包概览一个零 API Key 的公开查询客户端packages/daishin-report-search是一个发布在 npm 上的独立包入口声明在 package.json名称daishin-report-search版本0.2.0MIT 许可主入口src/index.js库 APIbin字段将daishin-report-search命令映射到src/cli.js运行环境要求node 18因为源码使用global.fetch与顶层async/await测试脚本node --test运行 test/index.test.js完整覆盖时间戳解析、目录解析、URL 构造、HTML 解析、查询过滤、参数钳制、限流分类与 token 作用域等场景。包内源码结构非常精简核心逻辑集中在两个文件src/index.js常量定义、listReports/fetchReport主流程、parseTimestamp/parseTreePaths/parseReportHtml等解析器、HTTP 封装与参数校验工具src/cli.js命令行参数解析与帮助文本输出 JSON。从源码结构看整个包刻意保持了无密钥、无代理、只读查询的定位没有任何登录、下单、交易相关代码也不会访问需要绕过 CAPTCHA 或登录墙的私有服务。快速开始CLI 与库两种用法作为库使用README 给出的是 CommonJS 风格的顶层导入main指向src/index.js包的files字段只发布src与README.mdconst { listReports, fetchReport } require(daishin-report-search) const latest await listReports({ limit: 10 }) const filtered await listReports({ query: 반도체, limit: 5, maxInspect: 100 }) const authenticated await listReports({ githubToken: process.env.GITHUB_TOKEN }) const detail await fetchReport(20260511082352, { includeExplain: true })作为 CLI 使用README 同步提供了等价的命令行用法GITHUB_TOKEN... daishin-report-search --limit 10 daishin-report-search --limit 10 daishin-report-search 반도체 --limit 5 --max-inspect 100 daishin-report-search --id 20260511082352 --include-explainCLI 输出固定为带缩进的 JSON见 cli.js 的JSON.stringify(result, null, 2)方便管道化处理或直接交给 Agent 阅读。在仓库内未安装全局命令时也可以直接用 node 运行源码与 daishin-report-search/instruction.md 中的示例一致node packages/daishin-report-search/src/cli.js --limit 10 node packages/daishin-report-search/src/cli.js 반도체 --limit 5 --max-inspect 100 node packages/daishin-report-search/src/cli.js --id 20260511082352 --include-explainCLI 还支持位置参数以\d{14}可带.html后缀形式出现的裸参数会被识别为--id否则作为query见parseArgs的实现。数据源GitHub Pages 镜像与四类访问端点README 的 Source path 一节给出了该客户端访问的完整端点清单这是整个包的核心事实依据Tree发现列表https://api.github.com/repos/jay-jo-0/github_pages_repo/git/trees/main?recursive1—— 递归目录树用于一次性拿到镜像仓库内所有文件路径Raw detail原文拉取https://raw.githubusercontent.com/Jay-jo-0/github_pages_repo/main/path—— 无需认证即可稳定获取单篇 HTMLExact-file fallback精确文件回退https://api.github.com/repos/jay-jo-0/github_pages_repo/contents/path?refmain—— 当 raw 拉取失败时用 GitHub contents API 按已知时间戳路径取回 base64 编码的原文Browser detail浏览器打开地址https://jay-jo-0.github.io/github_pages_repo/path—— 供人类直接阅读的 GitHub Pages URL。这些常量在 src/index.js 中集中定义PAGES_BASE_URL、RAW_BASE_URL、API_BASE_URL、TREE_URL等并由buildReportUrls为每篇报告同时生成pageUrl/rawUrl/apiUrl三个 URL测试 index.test.js 对20260511082352.html的三种 URL 做了逐字断言。README 明确强调不需要任何 API Key 或代理。原因在于上游源是公开仓库无需k-skill-proxy路由转发——这一判断与 daishin-report-search/instruction.md 中的说明一致。选择 GitHub 递归 tree API 而非目录列表页抓屏的原因是tree API 一次响应即可暴露全部时间戳 HTML 文件名不依赖脆弱的目录页 DOM 结构而 raw GitHub 提供稳定、可匿名访问的详情拉取。核心 API 深度解析listReports 与 fetchReportlistReports最新报告列表与全文检索listReports的内部流程对应 src/index.js为请求递归 tree API得到全部文件路径用parseTreePaths过滤出匹配^(\d{14})(?:_explain)?\.html$的报告文件将普通页与_explain说明页按 ID 配对并按文件名时间戳字符串倒序排列逐个拉取候选报告的 raw HTML用parseReportHtml提取标题、标题层级、正文与 Rating/Target 表格若有query则在标题、headings、excerpt、正文文本中做韩文小写化的多词全部命中匹配见matchesQuery使用toLocaleLowerCase(ko-KR)直到凑满limit或耗尽检查预算返回{ query, count, items, warnings, source }结构。选项说明如下表选项类型默认值说明querystring关键词过滤匹配标题/headings/正文为空则返回最新列表limitnumber10最多返回条数规范化上限 50maxInspectnumbermax(50, limit*5)为关键词匹配而检查的最新页数预算上限 500includeHtmlbooleanfalse是否在 item 中附带原始 HTMLgithubTokenstring环境变量仅用于api.github.com请求的 Bearer tokengithubHeadersobject{}仅附加到 GitHub API 请求的自定义头fetcherfunctionglobal.fetch可注入的自定义 fetch便于测试与代理每个 item 的字段为idYYYYMMDDHHMMSS、date/time/timestamp由文件名推导的韩国标准时间 KST见parseTimestamp、title、headings、excerpt正文前 300 字符、ratingTargets存在 Rating/Target 表时给出、pageUrl/rawUrl/apiUrl以及存在配套说明页时的hasExplain与explainUrl。fetchReport单篇报告原文 可选说明页fetchReport(idOrPath, options)接收 14 位时间戳如20260511082352内部会自动补全为20260511082352.html或完整路径。它先用parseTimestamp解析出date、time、timestamp与epochMs2026-05-11T08:23:5209:00格式再走raw 优先、contents API 回退的拉取链路详见下文最后返回包含title、headings、text正文全文、excerpt、ratingTargets与三类 URL 的报告对象。当includeExplain: true时会进一步尝试拉取id_explain.html作为report.explain若说明页不存在则explain为null并在report.warnings中记录失败原因——这正是 index.test.js 中返回详情 可选说明页用例所验证的行为。parseReportHtmlHTML 提取器parseReportHtmlsrc/index.js在解析前会先剥离script与style标题优先取第一个h1、回退到titleheadings收集全部h1h3正文则把块级标签替换为换行后统一空白。表格解析parseTables按table/tr/td|th逐行还原为键值对象仅保留表头命中종목명|투자의견|목표주가|Rating|Target等关键词的表格作为ratingTargets——即评级/目标价摘要表。实体解码decodeEntities对非法码点如超范围数字实体采取保留原文的容错策略对应测试 index.test.js。参数边界与默认值BoundariesREADME 用一节专门划定了参数边界这是使用该包必须遵守的约束limit会被规范化为正整数上限 50默认 10。maxInspect被规范化为正整数上限 500避免对 raw GitHub 发起过量的详情请求。无效、零、负数或非有限NaN / Infinity数值选项一律回退到文档默认值。实现上由parsePositiveInteger(value, defaultValue, maxValue)完成src/index.js非有限值取默认Math.floor后小于等于 0 取默认否则与最大值取小。默认检查预算为max(50, limit * 5)最终预算再与limit取大保证至少能遍历到limit篇。测试 index.test.js 验证了limit: Infinity、maxInspect: 1e9会被钳制详情请求不超过 500而NaN、-25、0均回退默认。其他边界README 原文语义逐一保留当 GitHub tree API 被阻断或限流时最新/搜索发现流程不抛异常而是返回空结果并在source.error元数据中携带结构化错误可选的githubToken/githubHeaders只转发给api.github.com请求tree 发现与 contents 精确文件回退绝不会随 raw 详情请求发送CLI 还从环境中读取DAISHIN_GITHUB_TOKEN或GITHUB_TOKEN精确报告拉取先尝试 raw GitHub HTML失败后再用 contents API 按已知时间戳路径回退镜像中可能包含来自大信证券之外的其他时间戳页面因此在把某条结果当作大信署名报告之前应先检查返回的 title / headings / 页面 URL。token 作用域这一约束在 requestHeaders 中实现只有isGitHubApiUrl(url)为真时才合并githubHeaders与 token。测试 index.test.js 分别验证了token 只发往发现请求与raw 请求不带授权头、contents 回退时携带授权头。CLI 参考全部参数由 cli.js 的帮助文本可知完整选项Usage: daishin-report-search [query] [options] List latest reports: daishin-report-search --limit 10 daishin-report-search 반도체 --limit 5 --max-inspect 100 Fetch one report: daishin-report-search --id 20260511082352 --include-explain Options: -q, --query text Filter by title/headings/detail text --limit number Maximum list results (default: 10) --max-inspect n Maximum latest pages to inspect for query matching --id timestamp Fetch one YYYYMMDDHHMMSS report --include-explain Fetch companion *_explain.html page for --id --include-html Include raw HTML in JSON output环境变量DAISHIN_GITHUB_TOKEN or GITHUB_TOKEN Optional caller-owned token for api.github.com requestsCLI 与库共享同一套参数语义--limit/--max-inspect以字符串形式原样传入库层再做规范化测试 index.test.js 验证了--limit Infinity --max-inspect 1e9的字符串保留行为因此 CLI 同样受 50 / 500 的上限约束。容错、失败模式与 source 元数据该客户端把上游不可用当作一等公民处理而不是直接抛错。listReports返回的source对象包含treeUrl、pagesBaseUrl、rawBaseUrl、branch、totalReportsDiscovered、inspectedReports出错时追加error含message、url、status、statusText、kind、rateLimit。限流分类在assertOk中完成403 / 429 被标记为kind rate_limit并读取x-ratelimit-limit、x-ratelimit-remaining、x-ratelimit-reset解析为resetAtISO 时间与retry-after见readRateLimit。测试 index.test.js 对 403rateLimit.remaining: 0、resetAt归一化与 429retryAfter: 42两种场景做了完整断言。应对策略是稍后重试或在调用方确有凭据时传入 GitHub token 提升配额。其余失败模式与 daishin-report-search/instruction.md 的 Failure modes 呼应镜像仓库路径或分支变更会导致 tree / raw URL 失效tree 响应被截断truncated为真时最新列表的完整性不保证代码会追加警告镜像 HTML 结构变化可能导致标题/标题层级/表格提取不完整但 URL 与原始文本回退仍应可用镜像内部分页面可能并非大信证券署名不应仅凭位于镜像中就推断出处。在 k-skill 生态中的定位与使用规范该包在仓库中同时以 Skill 形式存在daishin-report-search/SKILL.md 与 daishin-report-search/instruction.md适合 Agent 处理대신증권 최신 리포트 보여줘대신증권 반도체 리포트 찾아줘这类韩语指令。其推荐的三步工作流为列出最新报告 → 抓取单篇原文与说明页 → 保守摘要输出格式包含标题、基于文件名的估计发布时间KST、主要 headings、存在的 Rating/Target 与原文链接同时必须说明时间戳来源于文件名、镜像内容可能变化。使用边界需严格把握这是只读查询不构成投资建议、不进行自动交易、不收集隐私不绕过 CAPTCHA 或登录墙不默认要求任何密钥。可选的 GitHub token 完全由调用方提供且仅作用域于 GitHub API 主机。这些约束与包的实现高度一致——从 package.json 到源码与测试都体现着公开数据、公开检索、透明回退的设计主线。若需在独立项目中复用直接安装 npm 包并以require(daishin-report-search)引入即可无需配置任何服务端。输出文章 文章正文结束【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表