{
"service": "www.cls.cn",
"page": "https://www.cls.cn/subject/{id}",
"title": "题材库 - 题材详情 (Subject Detail)",
"summary": "单个题材详情。一次返回该题材下的 articles(新闻文章流)、plate(关联股票板块行情)、fund(关联主题基金指数)、top_articles(置顶解读)。这是财联社把『新闻 ↔ 板块 ↔ 主题基金』串成闭环的核心接口——投资题材型(人工智能、半导体芯片…)的 plate 与 fund 字段有值,新闻频道型题材(环球市场情报、盘面直播…)这两字段为 null。注意 fund 给的是『主题基金指数』聚合层(CLS 内部代码+涨跌幅),不是可交易 ETF 的代码,详见 caveats。",
"method": "GET",
"endpoint": "https://www.cls.cn/api/subject/detail/{id}",
"signing": {
"required": true,
"algorithm": "sign = md5( sha1( urlencode(sorted(params)) ) ),params 先并入固定三件套。注意 {id} 是路径段不是 query 参数,不参与签名",
"fixed_params": {
"app": "CailianpressWeb",
"os": "web",
"sv": "8.4.6"
},
"python": "import hashlib,urllib.parse\nsubject_id=1103\np={'app':'CailianpressWeb','os':'web','sv':'8.4.6'}\nqs=urllib.parse.urlencode(sorted(p.items()))\nsign=hashlib.md5(hashlib.sha1(qs.encode()).hexdigest().encode()).hexdigest()\nurl=f'https://www.cls.cn/api/subject/detail/{subject_id}?{qs}&sign={sign}'"
},
"params": {
"id": {
"type": "integer",
"required": true,
"in": "path",
"description": "题材 ID(来自 subject-hot-newest),如 1103",
"example": "1103"
}
},
"response": {
"envelope": "{ errno:0, data:{ ... } }",
"data_fields": {
"id": "题材 ID",
"name": "题材名称",
"description": "题材简介",
"attention_num": "关注人数",
"articles": "关联文章/新闻数组(article_id, article_title, ...)—— 新闻流",
"top_articles": "置顶解读文章",
"plate": "关联股票板块(投资题材有值,新闻频道型为 null)。结构 {plate_id, plate_symbol:cls80xxx, plate_name, plate_change, stocks:[...]}",
"fund": "关联主题基金指数(投资题材有值,新闻频道型为 null)。结构 {fund_id:cls80xxx, fund_name, change, tag:'主题基金'}。change 是真实独立涨跌(与同题材 plate_change 不同),代表该主题基金篮子的聚合表现",
"reporter_card": "记者主理人信息"
},
"fund_object_fields": {
"fund_id": "CLS 内部主题基金指数代码(cls80xxx,与同题材股票板块共用题材号,但是另一条指数序列)",
"fund_name": "主题基金名称(如『人工智能』『芯片产业链』)",
"change": "★真实涨跌幅(小数)。实测 cls80207:股票板块 +0.64% vs 主题基金 -1.12%,证明是独立标的而非股票篮子",
"tag": "固定 '主题基金'"
}
},
"example_call": "见 signing.python(subject_id=1103)",
"related_maps": [
"www.cls.cn/api/subject/hotAndNewestSubject.json",
"x-quote.cls.cn/web_quote/plate/stocks.json"
],
"caveats": [
"必须签名,需带 Referer: https://www.cls.cn/",
"plate 与 fund 字段仅在投资题材型 subject 下有值;纯新闻频道型题材为 null。如何区分:先调 subject-hot-newest 拿 id,再调本接口看 plate/fund 是否非空",
"fund 给的是『主题基金指数』聚合层:有 CLS 内部代码(cls80xxx)+ 名称 + 真实涨跌幅,但【不是】可交易 ETF 的产品代码(如 159819)",
"无法展开为 ETF 清单:用 fund_id(cls80xxx)调 plate-stocks 返回的是个股篮子,不是 ETF;专用基金端点(plate/funds、plate/etf、fund_list 等)实测全部 9004 not found;前端也无 fund 类 XHR",
"要落到具体 ETF(代码/净值),需用 fund_name 去外部基金库(如东财/天天基金)做一次『主题名 → ETF』匹配,CLS 不提供这层",
"★『新闻↔指数基金/ETF』信息流:用基金频道 id 调本接口取 articles[] —— 公募基金动态(1349)、易方达指数通(10011)、易方达基金(8478)(基金类目 1110 下还有更多品牌频道)。这些文章把市场事件直接关联到具体 ETF:ETF 名称+代码写在 article_title 文本里(如『科创芯片ETF易方达(589130)』),用正则 [((](\\d{6})[))] 提取、按 5x/15x/16x 开头过滤即得 ETF 代码;每篇同时带结构化 stock_list / plate_list / subjects。实测前15篇约11篇含 ETF 代码。这是 CLS 唯一的新闻→ETF 关联(ETF 不在行情系统,只能编辑写进正文)。每篇 articles[] 带 article_time(Unix 秒)= 该 ETF 新闻的发布时间(电报时间)",
"时段行为:articles(新闻流)7×24 实时更新;plate_change / fund.change 受交易时段约束,盘后实测(15:38)为当日收盘值(冻结,与盘中末值一致)"
],
"confidence": 0.85,
"auto_discovered": true,
"last_verified": "2026-06-16"
}
单个题材详情。一次返回该题材下的 articles(新闻文章流)、plate(关联股票板块行情)、fund(关联主题基金指数)、top_articles(置顶解读)。这是财联社把『新闻 ↔ 板块 ↔ 主题基金』串成闭环的核心接口——投资题材型(人工智能、半导体芯片…)的 plate 与 fund 字段有值,新闻频道型题材(环球市场情报、盘面直播…)这两字段为 null。注意 fund 给的是『主题基金指数』聚合层(CLS 内部代码+涨跌幅),不是可交易 ETF 的代码,详见 caveats。
| Parameter | Description |
|---|---|
| id | required 题材 ID(来自 subject-hot-newest),如 1103 e.g. 1103 |