{"adoption": {"forks": 181, "observed_at": "2026-08-28T04:05:51.371470+00:00", "stars": 1899}, "canonical_url": "https://ross.abutalabs.com/products/stock-sdk", "card": {"archived": false, "artifact_type": "library", "description": "为前端设计的无需 Python、无需后端服务、零依赖的获取股票数据 JavaScript SDK。", "domain": ["fintech", "data-science", "web-development", "developer-tools", "apis"], "enriched": true, "function": ["sdk", "http-client", "cli", "mcp", "data-science", "charts", "developer-tools"], "health_score": 99, "homepage": "https://stock-sdk.linkdiary.cn/", "language": "TypeScript", "license": "ISC", "license_family": "permissive", "maturity": "active", "member_repos": ["chengzuopeng/stock-sdk"], "name": "chengzuopeng/stock-sdk", "platform": ["browser", "cli", "cross-platform"], "pushed_at": "2026-08-19T06:46:27+00:00", "repo": "chengzuopeng/stock-sdk", "stars": 1899, "tags": ["stock-market", "stock-data", "a-share", "hong-kong-stocks", "us-stocks", "kline", "technical-indicators", "zero-dependency", "typescript", "quantitative-finance", "funds", "screener", "backtesting", "ai-ready", "cryptocurrency", "trading", "nodejs", "web-server"], "topics": ["free-stock-market-api", "stock-prices", "stocks", "stocks-api", "a-share", "ai-agent", "akshare", "finance", "financial-data", "fintech", "mcp", "nodejs", "quantitative-finance", "sdk", "stock", "stock-data", "stock-market", "technical-analysis", "trading", "typescript"], "urls": [], "use_cases": ["get real-time stock quotes in the browser without a backend", "fetch historical daily or minute K-line data for A-share, HK, and US stocks", "compute technical indicators like MACD, RSI, and KDJ on stock data", "build a stock market dashboard or data visualization demo", "prototype quantitative trading strategies in JavaScript", "query stock prices from the command line", "connect an AI agent to stock market data via MCP", "screen stocks and run local backtests"], "what_it_is": "A zero-dependency JavaScript/TypeScript SDK for fetching real-time quotes, K-line history, technical indicators, and extended market data for A-share, Hong Kong, US stocks, and funds directly in the browser or Node.js. It also ships a CLI and a built-in MCP server so AI tools can access stock data without Python or a backend service.", "when_to_avoid": ["you need guaranteed SLA-backed official exchange data feeds", "you rely on intraday fund NAV estimates, which were removed after the upstream source shut down", "you need markets beyond A-share, Hong Kong, US stocks, funds, futures, and options", "you require a Python ecosystem like akshare or tushare"], "when_to_choose": ["you are a frontend or Node.js developer who wants stock data without Python or a backend", "you need a zero-dependency, lightweight SDK that works in both browser and Node.js", "you want built-in technical indicators, signals, screening, and backtesting in one package", "you want to expose stock data to AI tools through an MCP server"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/stock-sdk", "repo": "chengzuopeng/stock-sdk", "role": "main", "score": 82}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:12:10.750998+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ae200df2ee01725b24c8af3c5329e1cc62b864915467a1a8dee297f78f3886d", "fetched_at": "2026-08-28T04:05:51.371470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chengzuopeng/stock-sdk"}, {"content_hash": "9a77f0105c22914156436dd1e50a517731f8816faf1e4b483385d5ffb2f79b70", "fetched_at": "2026-08-29T10:51:45.029082+00:00", "kind": "homepage", "missing": false, "url": "https://stock-sdk.linkdiary.cn/"}, {"content_hash": "9b8327b31e47e31c5bb6df5ceb2d8671fd5e64d67e00b7497984df399d0a0764", "fetched_at": "2026-08-29T10:51:45.031895+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/guide/getting-started"}, {"content_hash": "9557db66ce2637b0c24555e00d0dc3df6ab9d995dd2514d995f93b86583db36f", "fetched_at": "2026-08-29T10:51:45.037082+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stock-sdk"}, {"content_hash": "36509b6b5a421db6850d622364efac98dc07b2e80c5f7aca0dcd283f302e1a34", "fetched_at": "2026-08-29T10:51:45.034180+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/changelog"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:12:10.750998+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ae200df2ee01725b24c8af3c5329e1cc62b864915467a1a8dee297f78f3886d", "fetched_at": "2026-08-28T04:05:51.371470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chengzuopeng/stock-sdk"}, {"content_hash": "9a77f0105c22914156436dd1e50a517731f8816faf1e4b483385d5ffb2f79b70", "fetched_at": "2026-08-29T10:51:45.029082+00:00", "kind": "homepage", "missing": false, "url": "https://stock-sdk.linkdiary.cn/"}, {"content_hash": "9b8327b31e47e31c5bb6df5ceb2d8671fd5e64d67e00b7497984df399d0a0764", "fetched_at": "2026-08-29T10:51:45.031895+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/guide/getting-started"}, {"content_hash": "9557db66ce2637b0c24555e00d0dc3df6ab9d995dd2514d995f93b86583db36f", "fetched_at": "2026-08-29T10:51:45.037082+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stock-sdk"}, {"content_hash": "36509b6b5a421db6850d622364efac98dc07b2e80c5f7aca0dcd283f302e1a34", "fetched_at": "2026-08-29T10:51:45.034180+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/changelog"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:12:10.750998+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ae200df2ee01725b24c8af3c5329e1cc62b864915467a1a8dee297f78f3886d", "fetched_at": "2026-08-28T04:05:51.371470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chengzuopeng/stock-sdk"}, {"content_hash": "9a77f0105c22914156436dd1e50a517731f8816faf1e4b483385d5ffb2f79b70", "fetched_at": "2026-08-29T10:51:45.029082+00:00", "kind": "homepage", "missing": false, "url": "https://stock-sdk.linkdiary.cn/"}, {"content_hash": "9b8327b31e47e31c5bb6df5ceb2d8671fd5e64d67e00b7497984df399d0a0764", "fetched_at": "2026-08-29T10:51:45.031895+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/guide/getting-started"}, {"content_hash": "9557db66ce2637b0c24555e00d0dc3df6ab9d995dd2514d995f93b86583db36f", "fetched_at": "2026-08-29T10:51:45.037082+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stock-sdk"}, {"content_hash": "36509b6b5a421db6850d622364efac98dc07b2e80c5f7aca0dcd283f302e1a34", "fetched_at": "2026-08-29T10:51:45.034180+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/changelog"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:12:10.750998+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ae200df2ee01725b24c8af3c5329e1cc62b864915467a1a8dee297f78f3886d", "fetched_at": "2026-08-28T04:05:51.371470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chengzuopeng/stock-sdk"}, {"content_hash": "9a77f0105c22914156436dd1e50a517731f8816faf1e4b483385d5ffb2f79b70", "fetched_at": "2026-08-29T10:51:45.029082+00:00", "kind": "homepage", "missing": false, "url": "https://stock-sdk.linkdiary.cn/"}, {"content_hash": "9b8327b31e47e31c5bb6df5ceb2d8671fd5e64d67e00b7497984df399d0a0764", "fetched_at": "2026-08-29T10:51:45.031895+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/guide/getting-started"}, {"content_hash": "9557db66ce2637b0c24555e00d0dc3df6ab9d995dd2514d995f93b86583db36f", "fetched_at": "2026-08-29T10:51:45.037082+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stock-sdk"}, {"content_hash": "36509b6b5a421db6850d622364efac98dc07b2e80c5f7aca0dcd283f302e1a34", "fetched_at": "2026-08-29T10:51:45.034180+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/changelog"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:12:10.750998+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ae200df2ee01725b24c8af3c5329e1cc62b864915467a1a8dee297f78f3886d", "fetched_at": "2026-08-28T04:05:51.371470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chengzuopeng/stock-sdk"}, {"content_hash": "9a77f0105c22914156436dd1e50a517731f8816faf1e4b483385d5ffb2f79b70", "fetched_at": "2026-08-29T10:51:45.029082+00:00", "kind": "homepage", "missing": false, "url": "https://stock-sdk.linkdiary.cn/"}, {"content_hash": "9b8327b31e47e31c5bb6df5ceb2d8671fd5e64d67e00b7497984df399d0a0764", "fetched_at": "2026-08-29T10:51:45.031895+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/guide/getting-started"}, {"content_hash": "9557db66ce2637b0c24555e00d0dc3df6ab9d995dd2514d995f93b86583db36f", "fetched_at": "2026-08-29T10:51:45.037082+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stock-sdk"}, {"content_hash": "36509b6b5a421db6850d622364efac98dc07b2e80c5f7aca0dcd283f302e1a34", "fetched_at": "2026-08-29T10:51:45.034180+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/changelog"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:12:10.750998+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ae200df2ee01725b24c8af3c5329e1cc62b864915467a1a8dee297f78f3886d", "fetched_at": "2026-08-28T04:05:51.371470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chengzuopeng/stock-sdk"}, {"content_hash": "9a77f0105c22914156436dd1e50a517731f8816faf1e4b483385d5ffb2f79b70", "fetched_at": "2026-08-29T10:51:45.029082+00:00", "kind": "homepage", "missing": false, "url": "https://stock-sdk.linkdiary.cn/"}, {"content_hash": "9b8327b31e47e31c5bb6df5ceb2d8671fd5e64d67e00b7497984df399d0a0764", "fetched_at": "2026-08-29T10:51:45.031895+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/guide/getting-started"}, {"content_hash": "9557db66ce2637b0c24555e00d0dc3df6ab9d995dd2514d995f93b86583db36f", "fetched_at": "2026-08-29T10:51:45.037082+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stock-sdk"}, {"content_hash": "36509b6b5a421db6850d622364efac98dc07b2e80c5f7aca0dcd283f302e1a34", "fetched_at": "2026-08-29T10:51:45.034180+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/changelog"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.371470+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:12:10.750998+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ae200df2ee01725b24c8af3c5329e1cc62b864915467a1a8dee297f78f3886d", "fetched_at": "2026-08-28T04:05:51.371470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chengzuopeng/stock-sdk"}, {"content_hash": "9a77f0105c22914156436dd1e50a517731f8816faf1e4b483385d5ffb2f79b70", "fetched_at": "2026-08-29T10:51:45.029082+00:00", "kind": "homepage", "missing": false, "url": "https://stock-sdk.linkdiary.cn/"}, {"content_hash": "9b8327b31e47e31c5bb6df5ceb2d8671fd5e64d67e00b7497984df399d0a0764", "fetched_at": "2026-08-29T10:51:45.031895+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/guide/getting-started"}, {"content_hash": "9557db66ce2637b0c24555e00d0dc3df6ab9d995dd2514d995f93b86583db36f", "fetched_at": "2026-08-29T10:51:45.037082+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stock-sdk"}, {"content_hash": "36509b6b5a421db6850d622364efac98dc07b2e80c5f7aca0dcd283f302e1a34", "fetched_at": "2026-08-29T10:51:45.034180+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/changelog"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:12:10.750998+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ae200df2ee01725b24c8af3c5329e1cc62b864915467a1a8dee297f78f3886d", "fetched_at": "2026-08-28T04:05:51.371470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chengzuopeng/stock-sdk"}, {"content_hash": "9a77f0105c22914156436dd1e50a517731f8816faf1e4b483385d5ffb2f79b70", "fetched_at": "2026-08-29T10:51:45.029082+00:00", "kind": "homepage", "missing": false, "url": "https://stock-sdk.linkdiary.cn/"}, {"content_hash": "9b8327b31e47e31c5bb6df5ceb2d8671fd5e64d67e00b7497984df399d0a0764", "fetched_at": "2026-08-29T10:51:45.031895+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/guide/getting-started"}, {"content_hash": "9557db66ce2637b0c24555e00d0dc3df6ab9d995dd2514d995f93b86583db36f", "fetched_at": "2026-08-29T10:51:45.037082+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stock-sdk"}, {"content_hash": "36509b6b5a421db6850d622364efac98dc07b2e80c5f7aca0dcd283f302e1a34", "fetched_at": "2026-08-29T10:51:45.034180+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/changelog"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:12:10.750998+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ae200df2ee01725b24c8af3c5329e1cc62b864915467a1a8dee297f78f3886d", "fetched_at": "2026-08-28T04:05:51.371470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chengzuopeng/stock-sdk"}, {"content_hash": "9a77f0105c22914156436dd1e50a517731f8816faf1e4b483385d5ffb2f79b70", "fetched_at": "2026-08-29T10:51:45.029082+00:00", "kind": "homepage", "missing": false, "url": "https://stock-sdk.linkdiary.cn/"}, {"content_hash": "9b8327b31e47e31c5bb6df5ceb2d8671fd5e64d67e00b7497984df399d0a0764", "fetched_at": "2026-08-29T10:51:45.031895+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/guide/getting-started"}, {"content_hash": "9557db66ce2637b0c24555e00d0dc3df6ab9d995dd2514d995f93b86583db36f", "fetched_at": "2026-08-29T10:51:45.037082+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stock-sdk"}, {"content_hash": "36509b6b5a421db6850d622364efac98dc07b2e80c5f7aca0dcd283f302e1a34", "fetched_at": "2026-08-29T10:51:45.034180+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/changelog"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:12:10.750998+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ae200df2ee01725b24c8af3c5329e1cc62b864915467a1a8dee297f78f3886d", "fetched_at": "2026-08-28T04:05:51.371470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chengzuopeng/stock-sdk"}, {"content_hash": "9a77f0105c22914156436dd1e50a517731f8816faf1e4b483385d5ffb2f79b70", "fetched_at": "2026-08-29T10:51:45.029082+00:00", "kind": "homepage", "missing": false, "url": "https://stock-sdk.linkdiary.cn/"}, {"content_hash": "9b8327b31e47e31c5bb6df5ceb2d8671fd5e64d67e00b7497984df399d0a0764", "fetched_at": "2026-08-29T10:51:45.031895+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/guide/getting-started"}, {"content_hash": "9557db66ce2637b0c24555e00d0dc3df6ab9d995dd2514d995f93b86583db36f", "fetched_at": "2026-08-29T10:51:45.037082+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stock-sdk"}, {"content_hash": "36509b6b5a421db6850d622364efac98dc07b2e80c5f7aca0dcd283f302e1a34", "fetched_at": "2026-08-29T10:51:45.034180+00:00", "kind": "site_page", "missing": false, "url": "https://stock-sdk.linkdiary.cn/changelog"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 18, "rhythm": 98}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 264, "days_push": 14, "days_rel": 14, "gap_med": 6.0, "n_releases_24m": 27}, "score": 82, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}