diff --git a/website/src/pages/index.astro b/website/src/pages/index.astro
index 20b073c..caeb051 100644
--- a/website/src/pages/index.astro
+++ b/website/src/pages/index.astro
@@ -3,6 +3,15 @@ import BaseLayout from '../layouts/BaseLayout.astro';
import faqs from '../config/faqs.json';
import { product, siteUrl, plainText } from '../lib/site';
+const capabilities = [
+ { title: '监测本地微信推送', description: '后台发现并保存本机微信中的文章链接,开启处理后按公众号范围和发布时间筛选、去重入库。扫描与处理独立控制,停止扫描后仍可处理已保存链接。' },
+ { title: '同步公众号最新文章', description: '开启主页识别,在微信中手动打开目标公众号主页完成登记,再按需同步首页文章。自动去重,不影响历史采集进度。' },
+ { title: '按需采集历史文章', description: '按追加篇数或截止日期采集历史,支持暂停和检查点续采。会话过期时,按提示重新打开公众号主页,更新后继续原任务。' },
+ { title: '下载正文与图片', description: '单篇、勾选或整号批量下载,自动跳过已有正文。正文与图片保存在自己的电脑里,可在文章库筛选和离线阅读。' },
+ { title: '导出自己的文章资料库', description: '同时导出 Markdown 和保留正文排版的 HTML,附可搜索目录、共享图片与 CSV 清单。下载完成后,单篇、批量或整号都能导出。' },
+ { title: '掌握任务进度与请求节奏', description: '分别管理首页同步、历史采集与正文下载,查看进度、请求记录和日志。可配置各类请求间隔、正文与图片并发,以及列表与文章请求预算。' },
+];
+
const schema = [
{ '@type': 'SoftwareApplication', name: product.name, url: siteUrl(), applicationCategory: 'UtilitiesApplication', operatingSystem: 'Windows', downloadUrl: product.download, license: `${product.repository}/blob/main/LICENSE`, description: product.description, offers: { '@type': 'Offer', price: '0', priceCurrency: 'CNY' } },
{ '@type': 'FAQPage', mainEntity: faqs.map((faq) => ({ '@type': 'Question', name: faq.question, acceptedAnswer: { '@type': 'Answer', text: plainText(faq.answerHtml) } })) },
@@ -24,6 +33,20 @@ const schema = [
开源项目地址 ↗
+
+ 功能一览 / v2.0.1
+ Mpider 可以做什么
+ 从发现文章到离线归档,把想留下的公众号内容留在自己手里。
+
+ {capabilities.map((capability, index) => (
+ -
+ {String(index + 1).padStart(2, '0')}
+
{capability.title}
+ {capability.description}
+
+ ))}
+
+
FAQ / 风险与透明
使用之前,先了解这些。
diff --git a/website/src/styles/site.css b/website/src/styles/site.css
index d4b2836..451bee3 100644
--- a/website/src/styles/site.css
+++ b/website/src/styles/site.css
@@ -26,6 +26,14 @@
#mpider-landing .kp-link-main { background: var(--kp-yellow); color: #192219; border-color: var(--kp-yellow); }
#mpider-landing .kp-source { margin: 0.875rem 0 0; }
#mpider-landing .kp-source a { display: inline-flex; align-items: center; min-height: 2.75rem; color: var(--kp-muted); font-size: 0.75rem; text-decoration: underline; text-underline-offset: 0.3125rem; }
+ #mpider-landing .kp-capabilities { position: relative; z-index: 1; max-width: 46.5rem; margin: 0 auto; padding: 0 2rem 4rem; scroll-margin-top: 1.5rem; }
+ #mpider-landing .kp-capabilities h2 { margin-bottom: 0.75rem; }
+ #mpider-landing .kp-capabilities-intro { margin: 0 0 1.75rem; color: var(--kp-muted); font-size: 0.875rem; line-height: 1.9; }
+ #mpider-landing .kp-capabilities-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem 2rem; margin: 0; padding: 0; list-style: none; }
+ #mpider-landing .kp-capabilities-grid li { padding-top: 1.25rem; }
+ #mpider-landing .kp-capability-number { display: inline-block; padding: 0.1875rem 0.375rem; background: var(--kp-yellow); color: #192219; font-size: 0.6875rem; font-weight: 700; }
+ #mpider-landing .kp-capabilities-grid h3 { margin: 0.75rem 0 0.5rem; font-size: 1rem; line-height: 1.6; }
+ #mpider-landing .kp-capabilities-grid p { margin: 0; color: var(--kp-muted); font-size: 0.875rem; line-height: 1.9; }
#mpider-landing .kp-faq { position: relative; z-index: 1; max-width: 46.5rem; margin: 0 auto; padding: 0 2rem 4rem; scroll-margin-top: 1.5rem; }
#mpider-landing .kp-faq-label { margin: 0 0 0.5625rem; color: var(--kp-muted); font-size: 0.6875rem; letter-spacing: .12em; }
#mpider-landing h2 { margin: 0 0 1.625rem; color: var(--kp-ink); font-size: clamp(1.5625rem,4.2cqw,2rem); line-height: 1.4; font-weight: 800; letter-spacing: -.04em; }
@@ -41,6 +49,7 @@
#mpider-landing .kp-answer li { padding-left: 0.125rem; margin-bottom: 0.3125rem; }
@media (max-width:40rem) {
#mpider-landing .kp-links { grid-template-columns: 1fr; gap: 0.5625rem; }
+ #mpider-landing .kp-capabilities-grid { grid-template-columns: 1fr; }
}
@media (max-width:30rem) {
#mpider-landing .kp-header { padding: 1.25rem 1.25rem 0; gap: 0.75rem; }
@@ -48,6 +57,7 @@
#mpider-landing .kp-hero { min-height: 36.875rem; padding: 2.5rem 1.25rem 3.875rem; }
#mpider-landing .kp-description { margin: 1.375rem 0; font-size: 0.8125rem; }
#mpider-landing .kp-faq { padding: 0 1.25rem 2.5rem; }
+ #mpider-landing .kp-capabilities { padding: 0 1.25rem 2.5rem; }
#mpider-landing .kp-answer { padding-right: 0; font-size: 0.8125rem; }
#mpider-landing summary { gap: 0.75rem; font-size: 0.875rem; }
}