
Cctv News Fetcher
Pull dated CCTV Xinwen Lianbo headline summaries via a Bun script so agents can cite official Chinese evening-news items in research or content workflows.
Overview
CCTV News Fetcher is an agent skill for the Grow phase (content) that downloads dated Xinwen Lianbo news items and returns JSON summaries via a Bun crawler script.
Install
npx skills add https://github.com/kirkluokun/awesome-a-stock-openclawskills --skill cctv-news-fetcherWhat is this skill?
- Fetches Xinwen Lianbo items for a specific date such as 20250210 via news_crawler.js
- Returns JSON array of date, title, and content fields per article
- Runs with Bun: bun skills/cctv-news-fetcher/scripts/news_crawler.js <date>
- Parses CCTV web pages using node-html-parser
- Example prompt pattern: “获取 20250210 的新闻联播摘要”
- Example JSON returns multiple {date, title, content} objects per run
- Depends on node-html-parser ^7.0.2
Adoption & trust: 1 installs on skills.sh; 51 GitHub stars; 1/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
What problem does it solve?
You need CCTV evening-news text for a specific date but manual browsing and copy-paste does not scale inside agent-driven research or content pipelines.
Who is it for?
Solo builders tracking Chinese policy or macro headlines from Xinwen Lianbo for briefings, dashboards, or Mandarin content drafts.
Skip if: Builders who do not need CCTV sources, lack Bun, or require licensed commercial news APIs with SLAs and redistribution rights.
When should I use this skill?
User asks for a Xinwen Lianbo or CCTV news summary for a specific YYYYMMDD date (e.g. 获取 20250210 的新闻联播摘要).
What do I get? / Deliverables
The agent runs the crawler for your date and yields a JSON list of titles and content snippets you can summarize, cite, or store in a editorial workflow.
- JSON array of news items with date, title, and content fields
Recommended Skills
Journey fit
Evening-news ingestion supports Grow-phase content intelligence—monitoring narratives and drafting summaries—not core product coding. Content subphase covers curated news feeds and editorial inputs; this skill fetches structured title/body snippets for a given YYYYMMDD date.
How it compares
Date-targeted CCTV scraper skill—not a general WebSearch replacement or multilingual RSS aggregator.
Common Questions / FAQ
Who is cctv-news-fetcher for?
Indie researchers, content operators, and agent users who routinely need structured 新闻联播 summaries for a known calendar date.
When should I use cctv-news-fetcher?
Use it in Grow (content) when drafting digests from official broadcasts, or in Idea (research) when validating macro narratives against a specific bulletin date.
Is cctv-news-fetcher safe to install?
It executes a network-backed Bun script against third-party pages; review the Security Audits panel on this Prism page and audit scripts/news_crawler.js before running in production workspaces.
SKILL.md
READMESKILL.md - Cctv News Fetcher
{ "owner": "yuhangch", "slug": "cctv-news-fetcher", "displayName": "CCTV News Fetcher", "latest": { "version": "1.0.0", "publishedAt": 1770012122426, "commit": "https://github.com/clawdbot/skills/commit/82dd093379ca8d42c2a9b449bae91c454b45f129" }, "history": [] } # Example Usage ## Prompt "获取 20250210 的新闻联播摘要" ## Internal Execution The agent will run: ```bash bun skills/cctv-news-fetcher/scripts/news_crawler.js 20250210 ``` ## Result [ { "date": "20250210", "title": "全国铁路完成固定资产投资439亿元", "content": "央视网消息(新闻联播):1月全国铁路完成固定资产投资439亿元,同比增长3.2%..." }, ... ] { "name": "cctv-news-fetcher", "version": "1.0.0", "description": "Fetch news from CCTV", "main": "scripts/news_crawler.js", "dependencies": { "node-html-parser": "^7.0.2" } } const { parse } = require('node-html-parser'); async function fetchOlderNews(date) { const url = `https://cctv.cntv.cn/lm/xinwenlianbo/${date}.shtml`; try { const response = await fetch(url); const text = await response.text(); const rawList = text.match(/title_array_01\((.*)/g) || []; const pageUrls = rawList.slice(1).map(item => item.match(/(http.*)/)?.[0].split('\'')[0] || ''); const headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', 'Cache-Control': 'no-cache', 'Cookie': 'cna=DLYSGBDthG4CAbRVCNxSxGT6', 'Host': 'tv.cctv.com', 'Pragma': 'no-cache', 'Proxy-Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36' }; const data = await Promise.all(pageUrls.map(async pageUrl => { try { const pageResponse = await fetch(pageUrl, { headers }); const pageText = await pageResponse.text(); const soup = parse(pageText); const title = soup.querySelector('h3')?.text.replace('[视频]', '').trim() || ''; const content = soup.querySelector('.cnt_bd')?.text.replace(/\n/g, ' ').trim() || ''; return { date, title, content }; } catch (err) { console.error(`Error fetching page ${pageUrl}:`, err.message); return null; } })); return data.filter(item => item !== null); } catch (err) { console.error(`Error fetching older news for ${date}:`, err.message); return []; } } async function fetchMidNews(date) { const url = `https://cctv.cntv.cn/lm/xinwenlianbo/${date}.shtml`; try { const response = await fetch(url); const text = await response.text(); const soup = parse(text); const pageUrls = soup.querySelectorAll('#contentELMT1368521805488378 li a') .slice(1) .map(a => a.getAttribute('href') || ''); const headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', 'Cache-Control': 'no-cache', 'Cookie': 'cna=DLYSGBDthG4CAbRVCNxSxGT6', 'Host': 'tv.cctv.com', 'Pragma': 'no-cache', 'Proxy-Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36' }; const data =