<!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">172 条</span>
</div>
<div class="info-item">
<span class="info-label">热点新闻</span>
<span class="info-value">8 条</span>
</div>
<div class="info-item">
<span class="info-label">生成时间</span>
<span class="info-value">02-13 20:46</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 warm">7 条</div>
</div>
<div class="word-index">1/2</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 top">3</span><span class="time-info">20时46分</span>
</div>
<div class="news-title"><a href="https://www.zhihu.com/question/2005346719148237010" target="_blank" class="news-link">因制作「奥特曼怀孕」等视频多名博主被罚,AI 二创的伦理边界在哪里?平台与创作者各自该承担什么责任?</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">2</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">贴吧</span><span class="rank-num high">4</span><span class="time-info">20时46分</span>
</div>
<div class="news-title"><a href="https://tieba.baidu.com/hottopic/browse/hottopic?topic_id=28350655&amp;topic_name=%E8%80%81%E7%A0%81%E5%86%9C%E8%A3%81%E5%91%98%E7%90%86%E7%94%B1%2B1%3A%E8%A2%ABAI%E4%BC%98%E5%8C%96" target="_blank" class="news-link">老码农裁员理由+1:被AI优化</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">3</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">贴吧</span><span class="rank-num ">7</span><span class="time-info">20时46分</span>
</div>
<div class="news-title"><a href="https://tieba.baidu.com/hottopic/browse/hottopic?topic_id=28350657&amp;topic_name=AI%E6%95%B4%E6%B4%BB%E6%97%A0%E5%BA%95%E7%BA%BF%2C%E8%B5%9B%E6%96%87%E6%BC%94%E5%91%98%E6%80%A5%E4%BA%86" target="_blank" class="news-link">AI整活无底线,赛文演员急了</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">4</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">华尔街见闻</span><span class="rank-num ">9</span><span class="time-info">20时46分</span>
</div>
<div class="news-title"><a href="https://wallstreetcn.com/articles/3765637" target="_blank" class="news-link">加剧AI恐慌!微软高管:大多数白领工作将在“未来12-18个月内”完全自动化</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">5</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">澎湃新闻</span><span class="rank-num ">10</span><span class="time-info">20时46分</span>
</div>
<div class="news-title"><a href="https://m.thepaper.cn/newsDetail_forward_32595090" target="_blank" class="news-link">澎湃AI晚新闻丨2026年2月12日</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">6</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">今日头条</span><span class="rank-num ">14</span><span class="time-info">20时46分</span>
</div>
<div class="news-title"><a href="https://www.toutiao.com/trending/7606174592784158251/" target="_blank" class="news-link">一个2.6万亿AI独角兽诞生</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">7</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">微博</span><span class="rank-num ">20</span><span class="time-info">20时46分</span>
</div>
<div class="news-title"><a href="https://s.weibo.com/weibo?q=%23%E8%BF%99%E4%B8%AA%E6%98%A5%E8%8A%82AI%E5%BE%88%E5%BF%99%23&t=31&band_rank=20&Refer=top" target="_blank" class="news-link">这个春节AI很忙</a>
</div>
</div>
</div>
</div>
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">股票 A股 上证 深证</div>
<div class="word-count ">1 条</div>
</div>
<div class="word-index">2/2</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 ">16</span><span class="time-info">20时46分</span>
</div>
<div class="news-title"><a href="https://www.toutiao.com/trending/7606243229087960622/" target="_blank" class="news-link">A股蛇年收官</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">
5条提及 · <span class="up">↑5%</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">3 条提及 <span style="color: #059669;">(↓100.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>