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">36 条</span>
</div>
<div class="info-item">
<span class="info-label">热点新闻</span>
<span class="info-value">0 条</span>
</div>
<div class="info-item">
<span class="info-label">生成时间</span>
<span class="info-value">12-11 05:13</span>
</div>
</div>
</div>
<div class="content">
<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">
7条提及 · <span class="new">新话题</span> · <span class="level-high">高热度</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">
5条提及 · <span class="new">新话题</span> · <span class="level-high">高热度</span>
</div>
</div>
<ul class="viral-sample-titles"><li>特朗普:泽连斯基要开始接受现实了</li><li>特朗普:泽连斯基拿了千亿却丢25%国土</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">
4条提及 · <span class="up">↑4%</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>轰炸机抵近东京700公里外?中方回应</li><li>中国公民未对中日之间的危机产生共鸣?中方回应</li></ul></div>
<div class="viral-topic-item">
<div class="viral-topic-header">
<div class="viral-topic-keyword">26</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>26 岁闵超受聘浙大博导,校方回应其博士论文外审全优,申请提前一年博士毕业,还有哪些信息值得关注?</li><li>「住宅限高令」密集出台,最高「80 米、 26 层」成大趋势,如何看待这一转变?将怎样影响房地产模式?</li><li>26 岁浙大博导闵超论文外审全优,公众为何对「年轻有为」频发质疑?</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">1 条提及 <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>