
Cctv News Fetcher
- 89 installs
- 61 repo stars
- Updated March 16, 2026
- kirkluokun/awesome-a-stock-openclawskills
CCTV News Fetcher is an agent skill (content) that downloads dated Xinwen Lianbo news items and returns JSON summaries via a Bun crawler script.
About
CCTV News Fetcher is a narrow integration skill for builders who need machine-readable slices of China’s flagship evening news broadcast, not a general news API. Given a date stamp, the agent runs a Bun crawler against cctv.cntv.cn listing pages, walks linked articles, and returns JSON objects with date, title, and excerpted content—useful for macro research, localized newsletters, or agent notebooks that must ground claims in primary state-media wording. Solo operators in cross-border SaaS, finance, or policy blogging can automate “what did the bulletin emphasize on this day?” without maintaining their own scraper. The skill assumes network access and a Bun runtime plus the declared node-html-parser dependency. It is intentionally phase-specific: you invoke it when content or research needs that source, not as a journey-wide methodology. Prism lists it so discoverability is by task (“CCTV 新闻联播 summary”) rather than generic web-search skills that may not hit these URLs reliably.
- 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 的新闻联播摘要”
Cctv News Fetcher by the numbers
- 89 all-time installs (skills.sh)
- +1 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #850 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/kirkluokun/awesome-a-stock-openclawskills --skill cctv-news-fetcherAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 89 |
|---|---|
| repo stars | ★ 61 |
| Security audit | 1 / 3 scanners passed |
| Last updated | March 16, 2026 |
| Repository | kirkluokun/awesome-a-stock-openclawskills ↗ |
What it does
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.
Who is it for?
Best when you're tracking Chinese policy or macro headlines from Xinwen Lianbo for briefings, dashboards, or Mandarin content drafts.
Skip if: Skip if you 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 you get
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
By the numbers
- Example JSON returns multiple {date, title, content} objects per run
- Depends on node-html-parser ^7.0.2
Files
CCTV News Fetcher
This skill allows you to fetch summary titles and content from the CCTV News Broadcast for any specific date.
Usage
You can ask the agent to:
- "Fetch CCTV news for 20250210"
- "Give me the news highlights for yesterday"
Instructions
When the user asks for news from a specific date: 1. Format the date as YYYYMMDD. If the user says "yesterday" or "today", calculate the date relative to the current local time. 2. Execute the script at {baseDir}/scripts/news_crawler.js using bun or node.
- Command:
bun {baseDir}/scripts/news_crawler.js <YYYYMMDD>
3. Parse the JSON output and summarize it for the user. Group news by "Domestic" and "International" if possible based on titles, or just list the highlights.
Configuration
The skill depends on node-html-parser. Ensure bun is installed in the environment.
{
"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:
bun skills/cctv-news-fetcher/scripts/news_crawler.js 20250210Result
[ { "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 = 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 mid news for ${date}:`, err.message);
return [];
}
}
async function fetchRecentNews(date) {
const url = `https://tv.cctv.com/lm/xwlb/day/${date}.shtml`;
try {
const response = await fetch(url);
const text = await response.text();
const soup = parse(text);
const pageUrls = soup.querySelectorAll('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 = 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() || soup.querySelector('.tit')?.text.trim() || '';
const content = soup.querySelector('.cnt_bd')?.text.replace(/\n/g, ' ').trim() || soup.querySelector('.content_area')?.text.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 recent news for ${date}:`, err.message);
return [];
}
}
async function main() {
let date = process.argv[2];
if (!date) {
const today = new Date();
date = today.toISOString().slice(0, 10).replace(/-/g, '');
}
console.log(`Fetching news for date: ${date}...`);
// Try recent first, as per original logic
let news = await fetchRecentNews(date);
if (news.length === 0) {
console.log("No news found via recent crawler, trying mid...");
news = await fetchMidNews(date);
}
if (news.length === 0) {
console.log("No news found via mid crawler, trying older...");
news = await fetchOlderNews(date);
}
console.log(JSON.stringify(news, null, 2));
}
if (require.main === module) {
main().catch(err => {
console.error("Critical error:", err);
process.exit(1);
});
}
module.exports = {
fetchRecentNews,
fetchMidNews,
fetchOlderNews
};
Related skills
How it compares
Date-targeted CCTV scraper skill—not a general WebSearch replacement or multilingual RSS aggregator.
FAQ
Who is cctv-news-fetcher for?
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.