We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lizouzt/TrendRadar'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>热点新闻分析</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js" integrity="sha512-BNaRQnYJYiPSqHHDb58B0yaPfCu+Wgds8Gp/gU33kqBtgNS4tSPHuGibyoeqMV/TJlSKda6FXzoEyYGjTe+vXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<style>
* { box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
margin: 0;
padding: 16px;
background: #fafafa;
color: #333;
line-height: 1.5;
}
.container {
max-width: 600px;
margin: 0 auto;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 2px 16px rgba(0,0,0,0.06);
}
.header {
background: linear-gradient(135deg, #7a72ff 0%, #3aafed 100%);
color: #fff;
padding: 32px 24px;
text-align: center;
position: relative;
}
.save-buttons {
position: absolute;
top: 16px;
right: 16px;
display: flex;
gap: 8px;
}
.save-btn {
background: rgba(255, 255, 255, 0.2);
border: 1px solid rgba(255, 255, 255, 0.3);
color: white;
padding: 8px 16px;
border-radius: 6px;
cursor: pointer;
font-size: 13px;
font-weight: 500;
transition: all 0.2s ease;
backdrop-filter: blur(10px);
white-space: nowrap;
}
.save-btn:hover {
background: rgba(255, 255, 255, 0.3);
border-color: rgba(255, 255, 255, 0.5);
transform: translateY(-1px);
}
.save-btn:active {
transform: translateY(0);
}
.save-btn:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.header-title {
font-size: 22px;
font-weight: 700;
margin: 0 0 20px 0;
}
.header-info {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
font-size: 14px;
opacity: 0.95;
}
.info-item {
text-align: center;
}
.info-label {
display: block;
font-size: 12px;
opacity: 0.8;
margin-bottom: 4px;
}
.info-value {
font-weight: 600;
font-size: 16px;
}
.content {
padding: 24px;
}
.word-group {
margin-bottom: 40px;
}
.word-group:first-child {
margin-top: 0;
}
.word-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
padding-bottom: 8px;
border-bottom: 1px solid #f0f0f0;
}
.word-info {
display: flex;
align-items: center;
gap: 12px;
}
.word-name {
font-size: 17px;
font-weight: 600;
color: #1a1a1a;
}
.word-count {
color: #666;
font-size: 13px;
font-weight: 500;
}
.word-count.hot { color: #dc2626; font-weight: 600; }
.word-count.warm { color: #ea580c; font-weight: 600; }
.word-index {
color: #999;
font-size: 12px;
}
.news-item {
margin-bottom: 20px;
padding: 16px 0;
border-bottom: 1px solid #f5f5f5;
position: relative;
display: flex;
gap: 12px;
align-items: center;
}
.news-item:last-child {
border-bottom: none;
}
.news-item.new::after {
content: "NEW";
position: absolute;
top: 12px;
right: 0;
background: #fbbf24;
color: #92400e;
font-size: 9px;
font-weight: 700;
padding: 3px 6px;
border-radius: 4px;
letter-spacing: 0.5px;
}
.news-number {
color: #999;
font-size: 13px;
font-weight: 600;
min-width: 20px;
text-align: center;
flex-shrink: 0;
background: #f8f9fa;
border-radius: 50%;
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-start;
margin-top: 8px;
}
.news-content {
flex: 1;
min-width: 0;
padding-right: 40px;
}
.news-item.new .news-content {
padding-right: 50px;
}
.news-header {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 8px;
flex-wrap: wrap;
}
.source-name {
color: #666;
font-size: 12px;
font-weight: 500;
}
.rank-num {
color: #fff;
background: #6b7280;
font-size: 10px;
font-weight: 700;
padding: 2px 6px;
border-radius: 10px;
min-width: 18px;
text-align: center;
}
.rank-num.top { background: #dc2626; }
.rank-num.high { background: #ea580c; }
.time-info {
color: #999;
font-size: 11px;
}
.count-info {
color: #059669;
font-size: 11px;
font-weight: 500;
}
.news-title {
font-size: 15px;
line-height: 1.4;
color: #1a1a1a;
margin: 0;
}
.news-link {
color: #2563eb;
text-decoration: none;
}
.news-link:hover {
text-decoration: underline;
}
.news-link:visited {
color: #7c3aed;
}
.topic-trend-section {
margin-top: 40px;
padding-top: 24px;
border-top: 2px solid #f0f0f0;
}
.topic-trend-title {
color: #1a1a1a;
font-size: 16px;
font-weight: 600;
margin: 0 0 20px 0;
}
.viral-topic-item {
padding: 16px 0;
border-bottom: 1px solid #f5f5f5;
}
.viral-topic-item:last-child {
border-bottom: none;
}
.viral-topic-header {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 12px;
}
.viral-topic-keyword {
font-size: 16px;
font-weight: 600;
}
.topic-item {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 0;
border-bottom: 1px solid #f9f9f9;
}
.topic-item:last-child {
border-bottom: none;
}
.viral-topic-stats {
font-size: 12px;
color: #666;
}
.viral-topic-stats .new { color: #dc2626; font-weight: bold; }
.viral-topic-stats .up { color: #f59e0b; font-weight: bold; }
.viral-topic-stats .level-high { color: #dc2626; font-weight: bold; }
.viral-topic-stats .level-mid { color: #f59e0b; font-weight: bold; }
.viral-sample-titles {
list-style: none;
padding-left: 16px;
margin: 0;
font-size: 13px;
}
.viral-sample-titles li {
color: #666;
padding: 4px 0;
position: relative;
}
.viral-sample-titles li::before { content: '▪'; position: absolute; left: -14px; color: #ccc; }
.new-section {
margin-top: 40px;
padding-top: 24px;
border-top: 2px solid #f0f0f0;
}
.new-section-title {
color: #1a1a1a;
font-size: 16px;
font-weight: 600;
margin: 0 0 20px 0;
}
.new-source-group {
margin-bottom: 24px;
}
.new-source-title {
color: #666;
font-size: 13px;
font-weight: 500;
margin: 0 0 12px 0;
padding-bottom: 6px;
border-bottom: 1px solid #f5f5f5;
}
.new-item {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 0;
border-bottom: 1px solid #f9f9f9;
}
.new-item:last-child {
border-bottom: none;
}
.new-item-number {
color: #999;
font-size: 12px;
font-weight: 600;
min-width: 18px;
text-align: center;
flex-shrink: 0;
background: #f8f9fa;
border-radius: 50%;
width: 20px;
height: 20px;
display: flex;
align-items: center;
justify-content: center;
}
.new-item-rank {
color: #fff;
background: #6b7280;
font-size: 10px;
font-weight: 700;
padding: 3px 6px;
border-radius: 8px;
min-width: 20px;
text-align: center;
flex-shrink: 0;
}
.new-item-rank.top { background: #dc2626; }
.new-item-rank.high { background: #ea580c; }
.new-item-content {
flex: 1;
min-width: 0;
}
.new-item-title {
font-size: 14px;
line-height: 1.4;
color: #1a1a1a;
margin: 0;
}
.error-section {
background: #fef2f2;
border: 1px solid #fecaca;
border-radius: 8px;
padding: 16px;
margin-bottom: 24px;
}
.error-title {
color: #dc2626;
font-size: 14px;
font-weight: 600;
margin: 0 0 8px 0;
}
.error-list {
list-style: none;
padding: 0;
margin: 0;
}
.error-item {
color: #991b1b;
font-size: 13px;
padding: 2px 0;
font-family: 'SF Mono', Consolas, monospace;
}
.footer {
margin-top: 32px;
padding: 20px 24px;
background: #f8f9fa;
border-top: 1px solid #e5e7eb;
text-align: center;
}
.footer-content {
font-size: 13px;
color: #6b7280;
line-height: 1.6;
}
.footer-link {
color: #4f46e5;
text-decoration: none;
font-weight: 500;
transition: color 0.2s ease;
}
.footer-link:hover {
color: #7c3aed;
text-decoration: underline;
}
.project-name {
font-weight: 600;
color: #374151;
}
@media (max-width: 480px) {
body { padding: 12px; }
.header { padding: 24px 20px; }
.content { padding: 20px; }
.footer { padding: 16px 20px; }
.header-info { grid-template-columns: 1fr; gap: 12px; }
.news-header { gap: 6px; }
.news-content { padding-right: 45px; }
.news-item { gap: 8px; }
.new-item { gap: 8px; }
.news-number { width: 20px; height: 20px; font-size: 12px; }
.save-buttons {
position: static;
margin-bottom: 16px;
display: flex;
gap: 8px;
justify-content: center;
flex-direction: column;
width: 100%;
}
.save-btn {
width: 100%;
}
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<div class="save-buttons">
<button class="save-btn" onclick="saveAsImage()">保存为图片</button>
<button class="save-btn" onclick="saveAsMultipleImages()">分段保存</button>
</div>
<div class="header-title">热点新闻分析</div>
<div class="header-info">
<div class="info-item">
<span class="info-label">报告类型</span>
<span class="info-value">实时分析</span>
</div>
<div class="info-item">
<span class="info-label">新闻总数</span>
<span class="info-value">101 条</span>
</div>
<div class="info-item">
<span class="info-label">热点新闻</span>
<span class="info-value">1 条</span>
</div>
<div class="info-item">
<span class="info-label">生成时间</span>
<span class="info-value">12-11 14:19</span>
</div>
</div>
</div>
<div class="content">
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">ai 人工智能</div>
<div class="word-count ">1 条</div>
</div>
<div class="word-index">1/1</div>
</div>
<div class="news-item new">
<div class="news-number">1</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">抖音</span><span class="rank-num ">9</span><span class="time-info">14时19分</span>
</div>
<div class="news-title"><a href="https://www.douyin.com/hot/2332984" target="_blank" class="news-link">我国AI产业规模突破9000亿元</a>
</div>
</div>
</div>
</div>
<div class="topic-trend-section">
<div class="topic-trend-title">🔥 异常热度话题</div>
<div class="viral-topic-item">
<div class="viral-topic-header">
<div class="viral-topic-keyword">红楼梦</div>
<div class="viral-topic-stats">
3条提及 · <span class="up">↑3%</span> · <span class="level-mid">中热度</span>
</div>
</div>
<ul class="viral-sample-titles"><li>红学专家否认《红楼梦》是悼明之作</li><li>“红学”专家否认《红楼梦》悼明</li><li>南大教授称《红楼梦》索隐只是玩梗,学术上是不成立的,依据是什么?学术界经历过哪些考证?</li></ul></div>
<div class="viral-topic-item">
<div class="viral-topic-header">
<div class="viral-topic-keyword">人民日报</div>
<div class="viral-topic-stats">
3条提及 · <span class="up">↑3%</span> · <span class="level-mid">中热度</span>
</div>
</div>
<ul class="viral-sample-titles"><li>人民日报:个别地方重“上”轻“下”</li><li>人民日报:年轻干部决不能在盲目“内卷”中乱了方寸</li><li>人民日报:让领导干部能上能下成为常态</li></ul></div>
<div class="viral-topic-item">
<div class="viral-topic-header">
<div class="viral-topic-keyword">鲍威尔</div>
<div class="viral-topic-stats">
3条提及 · <span class="up">↑3%</span> · <span class="level-mid">中热度</span>
</div>
</div>
<ul class="viral-sample-titles"><li>今夜美联储决议“剧本”:决议降息,鲍威尔“鹰派讲话”,哈塞特、贝森特“鸽派对冲”?</li><li>鲍威尔:购债规模未来几个月或维持较高水平,就业市场逐步降温但慢于预期,目前利率下能耐心等待(附全文)</li><li>鲍威尔:美联储转向观望策略 目前加息不是基本预期</li></ul></div>
<div class="viral-topic-item">
<div class="viral-topic-header">
<div class="viral-topic-keyword">狙击蝴蝶</div>
<div class="viral-topic-stats">
3条提及 · <span class="up">↑3%</span> · <span class="level-mid">中热度</span>
</div>
</div>
<ul class="viral-sample-titles"><li>狙击蝴蝶 女主赋魅</li><li>狙击蝴蝶</li><li>狙击蝴蝶 删减吻戏</li></ul></div></div>
<div class="topic-trend-section">
<div class="topic-trend-title">✨ 关注话题趋势</div>
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">国产替代</div>
<div class="word-count">2 条提及 <span style="color: #dc2626;">(↑0.00%)</span></div>
</div>
</div>
<div class="news-item">
<div class="news-content" style="padding-right: 0;">
<img src="data:image/png;base64,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" alt="国产替代 趋势图" style="width: 100%; height: auto;" />
</div>
</div>
</div></div>
</div>
<div class="footer">
<div class="footer-content">
</div>
</div>
</div>
<script>
async function saveAsImage() {
const button = event.target;
const originalText = button.textContent;
try {
button.textContent = '生成中...';
button.disabled = true;
window.scrollTo(0, 0);
// 等待页面稳定
await new Promise(resolve => setTimeout(resolve, 200));
// 截图前隐藏按钮
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'hidden';
// 再次等待确保按钮完全隐藏
await new Promise(resolve => setTimeout(resolve, 100));
const container = document.querySelector('.container');
const canvas = await html2canvas(container, {
backgroundColor: '#ffffff',
scale: 1.5,
useCORS: true,
allowTaint: false,
imageTimeout: 10000,
removeContainer: false,
foreignObjectRendering: false,
logging: false,
width: container.offsetWidth,
height: container.offsetHeight,
x: 0,
y: 0,
scrollX: 0,
scrollY: 0,
windowWidth: window.innerWidth,
windowHeight: window.innerHeight
});
buttons.style.visibility = 'visible';
const link = document.createElement('a');
const now = new Date();
const filename = `TrendRadar_热点新闻分析_${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}_${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}.png`;
link.download = filename;
link.href = canvas.toDataURL('image/png', 1.0);
// 触发下载
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
button.textContent = '保存成功!';
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
} catch (error) {
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'visible';
button.textContent = '保存失败';
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
}
}
async function saveAsMultipleImages() {
const button = event.target;
const originalText = button.textContent;
const container = document.querySelector('.container');
const scale = 1.5;
const maxHeight = 5000 / scale;
try {
button.textContent = '分析中...';
button.disabled = true;
// 获取所有可能的分割元素
const newsItems = Array.from(container.querySelectorAll('.news-item'));
const wordGroups = Array.from(container.querySelectorAll('.word-group'));
const newSection = container.querySelector('.new-section');
const errorSection = container.querySelector('.error-section');
const header = container.querySelector('.header');
const footer = container.querySelector('.footer');
// 计算元素位置和高度
const containerRect = container.getBoundingClientRect();
const elements = [];
// 添加header作为必须包含的元素
elements.push({
type: 'header',
element: header,
top: 0,
bottom: header.offsetHeight,
height: header.offsetHeight
});
// 添加错误信息(如果存在)
if (errorSection) {
const rect = errorSection.getBoundingClientRect();
elements.push({
type: 'error',
element: errorSection,
top: rect.top - containerRect.top,
bottom: rect.bottom - containerRect.top,
height: rect.height
});
}
// 按word-group分组处理news-item
wordGroups.forEach(group => {
const groupRect = group.getBoundingClientRect();
const groupNewsItems = group.querySelectorAll('.news-item');
// 添加word-group的header部分
const wordHeader = group.querySelector('.word-header');
if (wordHeader) {
const headerRect = wordHeader.getBoundingClientRect();
elements.push({
type: 'word-header',
element: wordHeader,
parent: group,
top: groupRect.top - containerRect.top,
bottom: headerRect.bottom - containerRect.top,
height: headerRect.height
});
}
// 添加每个news-item
groupNewsItems.forEach(item => {
const rect = item.getBoundingClientRect();
elements.push({
type: 'news-item',
element: item,
parent: group,
top: rect.top - containerRect.top,
bottom: rect.bottom - containerRect.top,
height: rect.height
});
});
});
// 添加新增新闻部分
if (newSection) {
const rect = newSection.getBoundingClientRect();
elements.push({
type: 'new-section',
element: newSection,
top: rect.top - containerRect.top,
bottom: rect.bottom - containerRect.top,
height: rect.height
});
}
// 添加footer
const footerRect = footer.getBoundingClientRect();
elements.push({
type: 'footer',
element: footer,
top: footerRect.top - containerRect.top,
bottom: footerRect.bottom - containerRect.top,
height: footer.offsetHeight
});
// 计算分割点
const segments = [];
let currentSegment = { start: 0, end: 0, height: 0, includeHeader: true };
let headerHeight = header.offsetHeight;
currentSegment.height = headerHeight;
for (let i = 1; i < elements.length; i++) {
const element = elements[i];
const potentialHeight = element.bottom - currentSegment.start;
// 检查是否需要创建新分段
if (potentialHeight > maxHeight && currentSegment.height > headerHeight) {
// 在前一个元素结束处分割
currentSegment.end = elements[i - 1].bottom;
segments.push(currentSegment);
// 开始新分段
currentSegment = {
start: currentSegment.end,
end: 0,
height: element.bottom - currentSegment.end,
includeHeader: false
};
} else {
currentSegment.height = potentialHeight;
currentSegment.end = element.bottom;
}
}
// 添加最后一个分段
if (currentSegment.height > 0) {
currentSegment.end = container.offsetHeight;
segments.push(currentSegment);
}
button.textContent = `生成中 (0/${segments.length})...`;
// 隐藏保存按钮
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'hidden';
// 为每个分段生成图片
const images = [];
for (let i = 0; i < segments.length; i++) {
const segment = segments[i];
button.textContent = `生成中 (${i + 1}/${segments.length})...`;
// 创建临时容器用于截图
const tempContainer = document.createElement('div');
tempContainer.style.cssText = `
position: absolute;
left: -9999px;
top: 0;
width: ${container.offsetWidth}px;
background: white;
`;
tempContainer.className = 'container';
// 克隆容器内容
const clonedContainer = container.cloneNode(true);
// 移除克隆内容中的保存按钮
const clonedButtons = clonedContainer.querySelector('.save-buttons');
if (clonedButtons) {
clonedButtons.style.display = 'none';
}
tempContainer.appendChild(clonedContainer);
document.body.appendChild(tempContainer);
// 等待DOM更新
await new Promise(resolve => setTimeout(resolve, 100));
// 使用html2canvas截取特定区域
const canvas = await html2canvas(clonedContainer, {
backgroundColor: '#ffffff',
scale: scale,
useCORS: true,
allowTaint: false,
imageTimeout: 10000,
logging: false,
width: container.offsetWidth,
height: segment.end - segment.start,
x: 0,
y: segment.start,
windowWidth: window.innerWidth,
windowHeight: window.innerHeight
});
images.push(canvas.toDataURL('image/png', 1.0));
// 清理临时容器
document.body.removeChild(tempContainer);
}
// 恢复按钮显示
buttons.style.visibility = 'visible';
// 下载所有图片
const now = new Date();
const baseFilename = `TrendRadar_热点新闻分析_${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}_${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}`;
for (let i = 0; i < images.length; i++) {
const link = document.createElement('a');
link.download = `${baseFilename}_part${i + 1}.png`;
link.href = images[i];
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// 延迟一下避免浏览器阻止多个下载
await new Promise(resolve => setTimeout(resolve, 100));
}
button.textContent = `已保存 ${segments.length} 张图片!`;
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
} catch (error) {
console.error('分段保存失败:', error);
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'visible';
button.textContent = '保存失败';
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
}
}
document.addEventListener('DOMContentLoaded', function() {
window.scrollTo(0, 0);
});
</script>
</body>
</html>