<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>YunFei&apos;s Blog</title><description>Coding日记</description><link>https://www.yunov.top/</link><language>zh_CN</language><item><title>RSS 订阅入门：从找到订阅源到高效阅读</title><link>https://www.yunov.top/posts/rss-subscribe/</link><guid isPermaLink="true">https://www.yunov.top/posts/rss-subscribe/</guid><description>一篇实用指南，教你如何找到 RSS 地址、使用阅读器订阅，并建立高效的信息流习惯。</description><pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;RSS（Really Simple Syndication）是一种开放的内容订阅方式。相比社交平台的“推荐流”，RSS 更像把你喜欢的网站装进自己的收件箱——想看谁、看多少、什么时候看，全由你说了算。&lt;/p&gt;
&lt;p&gt;:::tip[一句话总结]
RSS = 你自己掌控的信息流，不被算法牵着走。
:::&lt;/p&gt;
&lt;h2&gt;1. RSS 能解决什么问题&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;信息更可控&lt;/strong&gt;：你决定看什么，阅读器不会偷偷替你“优化”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更新更及时&lt;/strong&gt;：博客、播客、资讯站一更新就能收到提醒。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;阅读更安静&lt;/strong&gt;：无广告、无干扰，专注内容本身。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2. 如何找到 RSS 地址&lt;/h2&gt;
&lt;p&gt;多数网站都会提供订阅地址，找它就像找“订阅按钮”，常见位置与形式如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;页脚/导航栏&lt;/strong&gt;：会写 “RSS/订阅/Feed”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;约定路径&lt;/strong&gt;：&lt;code&gt;/rss.xml&lt;/code&gt;、&lt;code&gt;/feed.xml&lt;/code&gt;、&lt;code&gt;/atom.xml&lt;/code&gt;、&lt;code&gt;/feed&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;浏览器开发者工具&lt;/strong&gt;：查看网页源码里是否包含 &lt;code&gt;application/rss+xml&lt;/code&gt; 或 &lt;code&gt;application/atom+xml&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以本博客为例，默认订阅地址为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://www.yunov.top/rss.xml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note[小提示]
如果你部署在子路径或使用自定义域名，请把上面的地址替换成你的实际域名即可。
:::&lt;/p&gt;
&lt;h2&gt;3. 选择一个 RSS 阅读器&lt;/h2&gt;
&lt;p&gt;你可以根据平台选一个顺手的阅读器：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;桌面端&lt;/strong&gt;：NetNewsWire（macOS/iOS）、Reeder（macOS/iOS）、Fluent Reader（Windows/macOS/Linux）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web 端&lt;/strong&gt;：Feedly、Inoreader、Tiny Tiny RSS（自托管）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;阅读稍后&lt;/strong&gt;：Readwise Reader、Pocket（部分支持 RSS）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;选择标准也很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否多设备同步&lt;/li&gt;
&lt;li&gt;是否支持标签/文件夹&lt;/li&gt;
&lt;li&gt;是否支持全文抓取&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;4. 订阅步骤（通用）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;在阅读器里找到 &lt;strong&gt;Add / 订阅&lt;/strong&gt; 按钮&lt;/li&gt;
&lt;li&gt;粘贴 RSS 地址&lt;/li&gt;
&lt;li&gt;选个文件夹或标签“安放”它&lt;/li&gt;
&lt;li&gt;完成订阅，坐等更新就好&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;:::important[别忘了这一步]
第一次订阅后，给你的 RSS 源起个清晰的名字（比如「技术资讯」「写作灵感」），后期整理会轻松很多。
:::&lt;/p&gt;
&lt;h2&gt;5. 用好 RSS 的几个技巧&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;按主题分组&lt;/strong&gt;：比如「技术」「写作」「设计」「行业」。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;设置阅读窗口&lt;/strong&gt;：每天固定 10-20 分钟清理未读。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;善用过滤规则&lt;/strong&gt;：过滤低价值内容，只保留核心信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;导入/导出 OPML&lt;/strong&gt;：换阅读器时一键迁移。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;:::tip[OPML 是什么？]
它是 RSS 订阅源的「打包清单」。换阅读器时导出一次就能无缝搬家。
:::&lt;/p&gt;
&lt;h2&gt;6. 常见问题&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Q：订阅地址打不开？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;可能站点未开启 RSS，或地址不正确。试试在官网搜索 “RSS”，不行就联系站长确认。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：内容只显示摘要？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;部分站点会限制全文。可以试试阅读器的“全文抓取”功能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：订阅数量多了看不过来？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;减少低频站点、只保留高价值源，再设个“稍后阅读”分区更省心。&lt;/p&gt;
&lt;p&gt;:::warning[温馨提醒]
别一口气订太多源，信息焦虑会反弹。先从 5-10 个高质量站点开始，慢慢加。
:::&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;:::tip[给博主的话]
如果你也在搭建博客，强烈建议开启 RSS。它能把真正对你有价值的读者稳稳留在身边。
:::&lt;/p&gt;
</content:encoded></item><item><title>抖音视频更新监控</title><link>https://www.yunov.top/posts/douyin-monitor/</link><guid isPermaLink="true">https://www.yunov.top/posts/douyin-monitor/</guid><description>从零开始，完整部署抖音用户视频更新监控系统</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;📚 抖音用户视频更新监控系统&lt;/h1&gt;
&lt;p&gt;✅ 防置顶干扰 | ✅ 钉钉群推送 | ✅ 自动清理日志 | ✅ systemd 托管&lt;/p&gt;
&lt;p&gt;适用于 &lt;code&gt;Ubuntu/CentOS/Debian&lt;/code&gt; 等主流 Linux 发行版。&lt;/p&gt;
&lt;h2&gt;🧰 一、准备工作&lt;/h2&gt;
&lt;h3&gt;1. 准备事项&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;一台搭载 Linux 系统的云服务器，并且&lt;code&gt;部署好 Evil0ctal大佬的API&lt;/code&gt;
::github{repo=&quot;Evil0ctal/Douyin_TikTok_Download_API&quot;}&lt;/li&gt;
&lt;li&gt;一个钉钉群机器人账号并获取到 Webhook 地址&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;# 安装依赖（Ubuntu/Debian）
sudo apt update &amp;amp;&amp;amp; sudo apt install -y curl jq

# CentOS/RHEL
sudo yum install -y curl jq
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;📁 二、创建项目目录与脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 创建项目目录
sudo mkdir -p /opt/douyin_monitor/log
sudo mkdir -p /opt/douyin_monitor/state

# 创建用户配置文件
sudo tee /opt/douyin_monitor/users.conf &amp;lt;&amp;lt; &apos;EOF&apos;
# 格式：sec_user_id|昵称
MS4wLjABAAAAL6z-C5MVaIclPFu9sugIIc3-NlH6v0V4uPu_XXzxxxx|xxx
MS4wLjABAAAA4MjTvxSsNOjHfi9kfyRdu0KMKxxxxxxxxxxxW0OKY|xxxxx
MS4wLjABAAAAbMuesG2mD_6W7wIdEEnsEA3x5oRtS7aNXoxxxxxxxxxxtcyBwyxTxt8gu_z|测试
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🔁 每行一个用户：&lt;code&gt;sec_user_id|昵称&lt;/code&gt;，支持注释 &lt;code&gt;#&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;📜 三、部署主监控脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo tee /opt/douyin_monitor/douyin_monitor.sh &amp;lt;&amp;lt; &apos;EOF&apos;
#!/bin/bash
# ========================================
# 抖音多用户视频更新监听脚本（防置顶 + 钉钉群机器人推送）
# 支持 .env 安全配置 | 使用钉钉群机器人推送通知
# ========================================

# =================== 路径配置 ===================
WORK_DIR=&quot;/opt/douyin_monitor&quot;
USERS_CONF=&quot;$WORK_DIR/users.conf&quot;
STATE_DIR=&quot;$WORK_DIR/state&quot;
LOG_FILE=&quot;$WORK_DIR/log/monitor.log&quot;
ENV_FILE=&quot;$WORK_DIR/.env&quot;

# API 配置
API_URL=&quot;http://你的服务器IP/api/douyin/web/fetch_user_post_videos&quot;
COUNT=10

# 创建必要目录
mkdir -p &quot;$STATE_DIR&quot; &quot;$WORK_DIR/log&quot;

# =================== 加载环境变量 ===================
if [ -f &quot;$ENV_FILE&quot; ]; then
    source &quot;$ENV_FILE&quot;
else
    echo &quot;❌ 错误：环境变量文件未找到 $ENV_FILE&quot; &amp;gt;&amp;amp;2
    exit 1
fi

# =================== 日志函数 ===================
log() {
    echo &quot;[$(date &apos;+%Y-%m-%d %H:%M:%S&apos;)] $1&quot; | tee -a &quot;$LOG_FILE&quot;
}

# =================== 推送通知（钉钉群机器人）===================
send_notification() {
    local title=&quot;$1&quot;
    local content=&quot;$2&quot;
    local video_url=&quot;$3&quot;
    local cover_url=&quot;$4&quot;
    local webhook_url=&quot;https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN&quot;
    # local webhook_url=&quot;https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN&quot; 替换为你自己的群机器人webhook地址

    # 构造整体跳转 ActionCard 消息格式
    local json_data=$(cat &amp;lt;&amp;lt;EOF
{
    &quot;msgtype&quot;: &quot;actionCard&quot;,
    &quot;actionCard&quot;: {
        &quot;title&quot;: &quot;$title&quot;,
        &quot;text&quot;: &quot;$content&quot;,
        &quot;singleTitle&quot;: &quot;点击观看&quot;,
        &quot;singleURL&quot;: &quot;$video_url&quot;
    }
}
EOF
)

    # 推送通知
    curl -s -X POST &quot;$webhook_url&quot; \
        -H &quot;Content-Type: application/json&quot; \
        -d &quot;$json_data&quot; \
        &amp;gt;&amp;gt; &quot;$LOG_FILE&quot; 2&amp;gt;&amp;amp;1 &amp;amp;

    log &quot;📤 推送通知至钉钉群机器人&quot;
}

# =================== 检查用户更新 ===================
check_user() {
    local sec_user_id=&quot;$1&quot;
    local nickname=&quot;$2&quot;

    log &quot;🔍 检查用户: $nickname (sec_user_id: $sec_user_id)&quot;

    local response
    response=$(curl -s -G \
        --data-urlencode &quot;sec_user_id=$sec_user_id&quot; \
        --data-urlencode &quot;count=$COUNT&quot; \
        &quot;$API_URL&quot;)

    # 检查接口返回
    if ! echo &quot;$response&quot; | jq -e &apos;.code == 200&apos; &amp;gt;/dev/null; then
        local msg=$(echo &quot;$response&quot; | jq -r &apos;.msg // &quot;未知错误&quot;&apos;)
        log &quot;❌ 请求失败: $msg&quot;
        return 1
    fi

    # 提取非置顶最新视频（按时间倒序）
    local latest=$(echo &quot;$response&quot; | jq -r &apos;
        .data.aweme_list[]?
        | select(.is_top != 1)
        | .create_time |= tonumber
        | .
    &apos; | jq -s &apos;sort_by(-.create_time) | .[0] // empty&apos;)

    [ -z &quot;$latest&quot; ] &amp;amp;&amp;amp; {
        log &quot;⚠️ 未获取到有效视频数据&quot;
        return 1
    }

    local new_id=$(echo &quot;$latest&quot; | jq -r &apos;.aweme_id&apos;)
    local title=$(echo &quot;$latest&quot; | jq -r &apos;.item_title // .desc // &quot;无标题&quot;&apos;)
    local create_time=$(echo &quot;$latest&quot; | jq -r &apos;.create_time&apos;)
    local time_str=$(date -d &quot;@$create_time&quot; &quot;+%Y-%m-%d %H:%M:%S&quot;)
    local cover_url=$(echo &quot;$latest&quot; | jq -r &apos;.cover_original_scale.url_list[0] // &quot;&quot;&apos;)
    local state_file=&quot;$STATE_DIR/${sec_user_id}.txt&quot;
    local old_id=$(cat &quot;$state_file&quot; 2&amp;gt;/dev/null || echo &quot;&quot;)

    if [ -z &quot;$old_id&quot; ]; then
        log &quot;🆕 首次记录: $new_id&quot;
        echo &quot;$new_id&quot; &amp;gt; &quot;$state_file&quot;
    elif [ &quot;$new_id&quot; != &quot;$old_id&quot; ]; then
        log &quot;🎉 检测到新视频: $new_id&quot;

        # 构造 ActionCard 消息内容
        local message_content=&quot;### 新视频发布

用户：$nickname

标题：$title

时间：$time_str

检测时间：$(date &apos;+%Y-%m-%d %H:%M:%S&apos;)&quot;

        # 如果有封面图，添加到最下面
        if [ -n &quot;$cover_url&quot; ]; then
            message_content=&quot;$message_content

![视频封面]($cover_url)&quot;
        fi

        send_notification &quot;$nickname 发布新视频&quot; &quot;$message_content&quot; &quot;https://www.douyin.com/video/$new_id&quot; &quot;$cover_url&quot;
        echo &quot;$new_id&quot; &amp;gt; &quot;$state_file&quot;
    else
        log &quot;✅ 无更新&quot;
    fi
}

# =================== 主函数 ===================
main() {
    log &quot;✅ 抖音监控服务已启动（使用钉钉群机器人推送）&quot;

    while true; do
        while IFS=&apos;|&apos; read -r sec_user_id nickname || [ -n &quot;$sec_user_id&quot; ]; do
            # 跳过空行或注释
            [[ -z &quot;$sec_user_id&quot; || &quot;$sec_user_id&quot; =~ ^[[:space:]]*# ]] &amp;amp;&amp;amp; continue

            # 清理空白字符
            sec_user_id=$(echo &quot;$sec_user_id&quot; | xargs)
            nickname=$(echo &quot;$nickname&quot; | xargs)

            check_user &quot;$sec_user_id&quot; &quot;$nickname&quot;

            # 随机延迟 3~8 秒，避免请求过快
            sleep $((3 + RANDOM % 6))
        done &amp;lt; &quot;$USERS_CONF&quot;

        # 记录本轮完成并显示等待时间（15~40秒）
        local wait_time=$((15 + RANDOM % 26))
        log &quot;💤 本轮检测完成，等待 $wait_time 秒后重新检测...&quot;
        sleep $wait_time
    done
}

# 启动主程序
main
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;设置可执行权限&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo chmod +x /opt/douyin_monitor/douyin_monitor.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;⚙️ 四、配置 systemd 服务（开机自启）&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo tee /etc/systemd/system/douyin-monitor.service &amp;lt;&amp;lt; &apos;EOF&apos;
[Unit]
Description=抖音用户视频更新监控服务
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/douyin_monitor
ExecStart=/bin/bash /opt/douyin_monitor/douyin_monitor.sh
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;启用服务&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 重载 systemd
sudo systemctl daemon-reexec
sudo systemctl daemon-reload

# 启用并启动服务
sudo systemctl enable douyin-monitor.service
sudo systemctl start douyin-monitor.service
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🧹 五、配置日志自动清理（每日轮转）&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo tee /etc/logrotate.d/douyin-monitor &amp;lt;&amp;lt; &apos;EOF&apos;
/opt/douyin_monitor/log/monitor.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    copytruncate
    su root root
}
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✅ 系统通过 &lt;code&gt;systemd timer&lt;/code&gt; 自动运行 logrotate，无需额外设置&lt;/p&gt;
&lt;h2&gt;🔍 六、验证与调试&lt;/h2&gt;
&lt;h3&gt;1. 查看服务状态&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl status douyin-monitor.service
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. 查看实时日志&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;tail -f /opt/douyin_monitor/log/monitor.log
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. 手动触发一次日志轮转（测试）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo logrotate -f /etc/logrotate.conf
ls -la /opt/douyin_monitor/log/
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;📌 七、关键配置说明&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;文件&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;th&gt;注意事项&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/opt/douyin_monitor/users.conf&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;用户列表&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sec_user_id|昵称&lt;/code&gt;，每行一个&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/opt/douyin_monitor/douyin_monitor.sh&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;主脚本&lt;/td&gt;
&lt;td&gt;修改后需重启服务&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/etc/systemd/system/douyin-monitor.service&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;服务托管&lt;/td&gt;
&lt;td&gt;修改后需 &lt;code&gt;daemon-reload&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/etc/logrotate.d/douyin-monitor&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;日志清理&lt;/td&gt;
&lt;td&gt;保留 7 天，自动压缩&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;🛠️ 八、常见维护命令&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 启动服务
sudo systemctl start douyin-monitor.service

# 停止服务
sudo systemctl stop douyin-monitor.service

# 重启服务
sudo systemctl restart douyin-monitor.service

# 查看状态
sudo systemctl status douyin-monitor.service

# 查看日志
tail -f /opt/douyin_monitor/log/monitor.log

# 重新加载配置（修改 service 文件后）
sudo systemctl daemon-reload
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;✅ 九、功能总结&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;功能&lt;/th&gt;
&lt;th&gt;是否支持&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;监听多个抖音用户&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;排除置顶视频干扰&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;精准识别非置顶最新&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;钉钉群推送通知&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;通过钉钉群机器人&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;自动清理日志&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;保留 7 天，自动压缩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开机自启&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;systemd 托管&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;随机检测间隔&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;避免被限流&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;📎 十、注意事项&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;替换 Webhook URL&lt;/strong&gt;：将脚本中的 &lt;code&gt;YOUR_ACCESS_TOKEN&lt;/code&gt; 替换为你自己的钉钉群机器人 Access Token&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;获取 sec_user_id&lt;/strong&gt;：可通过抖音分享链接解析，或使用浏览器开发者工具抓包获取&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;权限问题&lt;/strong&gt;：所有文件归 &lt;code&gt;root&lt;/code&gt; 所有，确保脚本可读写&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API 服务&lt;/strong&gt;：需要部署对应的抖音 API 服务，脚本默认调用本地 &lt;code&gt;http://localhost/api/douyin/web/fetch_user_post_videos&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Fuwari 博客，精美的静态博客</title><link>https://www.yunov.top/posts/fuwari-deployment-guide/</link><guid isPermaLink="true">https://www.yunov.top/posts/fuwari-deployment-guide/</guid><description>详细介绍如何从零开始部署 Fuwari 精美静态博客，并展示其强大的 Markdown 扩展语法</description><pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Fuwari 是一个基于 Astro 构建的精美静态博客模板，拥有流畅的动画、响应式设计和丰富的功能。本文将详细介绍如何从零开始部署你的 Fuwari 博客，并展示其强大的 Markdown 扩展语法。&lt;/p&gt;
&lt;h2&gt;📋 前置要求&lt;/h2&gt;
&lt;p&gt;在开始之前，请确保你的系统已安装以下工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Node.js&lt;/strong&gt;：版本 &amp;gt;= 20&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pnpm&lt;/strong&gt;：版本 &amp;gt;= 9（推荐使用 pnpm 作为包管理器）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;安装 pnpm&lt;/h3&gt;
&lt;p&gt;如果你还没有安装 pnpm，可以运行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -g pnpm
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🚀 第一步：创建项目&lt;/h2&gt;
&lt;p&gt;有多种方式可以创建 Fuwari 博客项目：&lt;/p&gt;
&lt;h3&gt;方式一：使用 GitHub 模板&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;访问 &lt;a href=&quot;https://github.com/saicaca/fuwari&quot;&gt;Fuwari GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;点击 &quot;Use this template&quot; → &quot;Generate a new repository&quot;&lt;/li&gt;
&lt;li&gt;为你的新仓库命名并创建&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;方式二：Fork 仓库&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;访问 &lt;a href=&quot;https://github.com/saicaca/fuwari&quot;&gt;Fuwari GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;点击右上角的 &quot;Fork&quot; 按钮&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;方式三：使用命令行工具&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;npm create fuwari@latest
# 或者
pnpm create fuwari@latest
# 或者
yarn create fuwari
# 或者
bun create fuwari@latest
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;📥 第二步：克隆项目并安装依赖&lt;/h2&gt;
&lt;p&gt;创建仓库后，将项目克隆到本地：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/你的用户名/你的仓库名.git
cd 你的仓库名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装项目依赖：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pnpm install
pnpm add sharp
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：&lt;code&gt;sharp&lt;/code&gt; 是一个图像处理库，用于图片优化，建议安装以提高性能。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;⚙️ 第三步：配置博客&lt;/h2&gt;
&lt;p&gt;编辑 &lt;code&gt;src/config.ts&lt;/code&gt; 文件来个性化你的博客：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export const siteConfig: SiteConfig = {
  title: &quot;你的博客标题&quot;,
  subtitle: &quot;你的博客副标题&quot;,
  lang: &quot;zh_CN&quot;,
  themeColor: {
    hue: 50,
    fixed: false,
  },
  // ... 其他配置项
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 &lt;code&gt;astro.config.mjs&lt;/code&gt; 中配置你的网站 URL：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export default defineConfig({
  site: &quot;https://你的域名.com&quot;,
  base: &quot;/&quot;,
  trailingSlash: &quot;always&quot;,
  // ... 其他配置
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;✍️ 第四步：创建第一篇文章&lt;/h2&gt;
&lt;p&gt;使用以下命令创建新文章：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pnpm new-post 我的-first-文章
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将在 &lt;code&gt;src/content/posts/&lt;/code&gt; 目录下创建一个新的 Markdown 文件。编辑文件内容，文章的 frontmatter 如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: 我的 First 文章
published: 2026-02-03
description: 这是我的第一篇文章
image: ./cover.jpg # 可选的封面图
tags: [标签1, 标签2]
category: 分类
draft: false # 设置为 true 可以保存为草稿
---
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🧪 第五步：本地预览&lt;/h2&gt;
&lt;p&gt;在部署之前，你可以先在本地预览博客效果：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pnpm dev
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;访问 &lt;code&gt;http://localhost:4321&lt;/code&gt; 查看你的博客。&lt;/p&gt;
&lt;p&gt;构建生产版本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pnpm build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;预览构建后的网站：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pnpm preview
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🌐 第六步：部署到平台&lt;/h2&gt;
&lt;h3&gt;Vercel 部署（推荐）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;将代码推送到 GitHub&lt;/li&gt;
&lt;li&gt;访问 &lt;a href=&quot;https://vercel.com&quot;&gt;Vercel&lt;/a&gt; 并登录&lt;/li&gt;
&lt;li&gt;点击 &quot;Add New Project&quot;&lt;/li&gt;
&lt;li&gt;导入你的 GitHub 仓库&lt;/li&gt;
&lt;li&gt;Vercel 会自动检测 Astro 项目，点击 &quot;Deploy&quot;&lt;/li&gt;
&lt;li&gt;等待部署完成，即可获得你的博客链接&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Netlify 部署&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;将代码推送到 GitHub&lt;/li&gt;
&lt;li&gt;访问 &lt;a href=&quot;https://netlify.com&quot;&gt;Netlify&lt;/a&gt; 并登录&lt;/li&gt;
&lt;li&gt;点击 &quot;Add new site&quot; → &quot;Import an existing project&quot;&lt;/li&gt;
&lt;li&gt;选择你的 GitHub 仓库&lt;/li&gt;
&lt;li&gt;构建命令设置为：&lt;code&gt;pnpm build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;发布目录设置为：&lt;code&gt;dist&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击 &quot;Deploy site&quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;GitHub Pages 部署&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;创建 &lt;code&gt;.github/workflows/deploy.yml&lt;/code&gt; 文件：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;name: Deploy to GitHub Pages

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: &quot;npm&quot;
      - run: npm install -g pnpm
      - run: pnpm install
      - run: pnpm build
      - uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./dist
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;在 GitHub 仓库设置中，将 Pages 源设置为 &lt;code&gt;gh-pages&lt;/code&gt; 分支&lt;/li&gt;
&lt;li&gt;推送代码，GitHub Actions 会自动部署&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Cloudflare Pages 部署&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;将代码推送到 GitHub&lt;/li&gt;
&lt;li&gt;访问 &lt;a href=&quot;https://pages.cloudflare.com&quot;&gt;Cloudflare Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;点击 &quot;Create a project&quot; → &quot;Connect to Git&quot;&lt;/li&gt;
&lt;li&gt;选择你的 GitHub 仓库&lt;/li&gt;
&lt;li&gt;构建命令：&lt;code&gt;pnpm build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;输出目录：&lt;code&gt;dist&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击 &quot;Save and Deploy&quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Cloudflare Workers 部署&lt;/h3&gt;
&lt;p&gt;如果你选择了 Cloudflare Workers 部署，项目已经包含了 &lt;code&gt;wrangler.toml&lt;/code&gt; 配置文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;name = &quot;fuwari&quot;
compatibility_date = &quot;2026-02-03&quot;

[assets]
directory = &quot;./dist&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;部署步骤：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 构建项目
pnpm build

# 部署到 Cloudflare Workers
npx wrangler pages deploy dist
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;✨ Fuwari 核心特性&lt;/h2&gt;
&lt;h3&gt;🎨 精美的 UI 设计&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;流畅的页面过渡动画&lt;/li&gt;
&lt;li&gt;精心设计的配色方案&lt;/li&gt;
&lt;li&gt;完全响应式布局，支持移动端&lt;/li&gt;
&lt;li&gt;支持 &lt;strong&gt;明暗模式&lt;/strong&gt; 切换&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;📑 自动目录生成&lt;/h3&gt;
&lt;p&gt;文章会根据标题自动生成目录（TOC），支持滚动高亮和点击跳转。&lt;/p&gt;
&lt;h3&gt;🔍 内置搜索功能&lt;/h3&gt;
&lt;p&gt;基于 Pagefind 的全文搜索功能，无需配置即可使用。&lt;/p&gt;
&lt;h3&gt;📡 RSS 订阅支持&lt;/h3&gt;
&lt;p&gt;自动生成 RSS 订阅源，方便读者订阅。&lt;/p&gt;
&lt;h3&gt;🎯 评论功能&lt;/h3&gt;
&lt;p&gt;支持集成多种评论系统。&lt;/p&gt;
&lt;h3&gt;💬 丰富的 Markdown 扩展语法&lt;/h3&gt;
&lt;p&gt;Fuwari 支持多种 Markdown 扩展语法，让文章更加丰富多彩。&lt;/p&gt;
&lt;h2&gt;📝 Fuwari Markdown 扩展语法详解&lt;/h2&gt;
&lt;h3&gt;1. GitHub 仓库卡片&lt;/h3&gt;
&lt;p&gt;你可以添加链接到 GitHub 仓库的动态卡片，仓库信息从 GitHub API 实时获取。&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;saicaca/fuwari&quot;}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;::github{repo=&quot;&amp;lt;owner&amp;gt;/&amp;lt;repo&amp;gt;&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;示例：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;::github{repo=&quot;saicaca/fuwari&quot;}
::github{repo=&quot;vercel/next.js&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. 警告框（Admonitions）&lt;/h3&gt;
&lt;p&gt;支持五种类型的警告框，用于突出显示重要信息。&lt;/p&gt;
&lt;h4&gt;Note - 注意&lt;/h4&gt;
&lt;p&gt;:::note
突出显示用户应该注意的信息，即使是在快速浏览时。
:::&lt;/p&gt;
&lt;h4&gt;Tip - 提示&lt;/h4&gt;
&lt;p&gt;:::tip
帮助用户更成功的可选信息。
:::&lt;/p&gt;
&lt;h4&gt;Important - 重要&lt;/h4&gt;
&lt;p&gt;:::important
用户成功所必需的关键信息。
:::&lt;/p&gt;
&lt;h4&gt;Warning - 警告&lt;/h4&gt;
&lt;p&gt;:::warning
由于潜在风险而需要立即注意的关键内容。
:::&lt;/p&gt;
&lt;h4&gt;Caution - 谨慎&lt;/h4&gt;
&lt;p&gt;:::caution
操作的负面潜在后果。
:::&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基本语法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:::note
注意内容
:::

:::tip
提示内容
:::
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;自定义标题：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;:::note[自定义标题]
这是一个带有自定义标题的注释。
:::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:::note[自定义标题]
这是一个带有自定义标题的注释。
:::
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;GitHub 语法支持：&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
也支持 GitHub 风格的语法。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; [!NOTE]
&amp;gt; 这是 GitHub 风格的注释。

&amp;gt; [!TIP]
&amp;gt; 这是 GitHub 风格的提示。
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. 剧透（Spoiler）&lt;/h3&gt;
&lt;p&gt;你可以在文本中添加剧透内容，鼠标悬停时显示。&lt;/p&gt;
&lt;p&gt;内容 :spoiler[是隐藏的 &lt;strong&gt;剧透内容&lt;/strong&gt;]！&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;内容 :spoiler[是隐藏的 **剧透内容**]！
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;4. Expressive Code 代码块&lt;/h3&gt;
&lt;p&gt;Fuwari 使用 Expressive Code 提供强大的代码块功能，支持多种高亮和标记方式。&lt;/p&gt;
&lt;h4&gt;语法高亮&lt;/h4&gt;
&lt;p&gt;Expressive Code 会自动根据语言标识符进行语法高亮。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;console.log(&quot;这段代码是语法高亮的！&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```js
console.log(&quot;代码&quot;);
```
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;代码块标题&lt;/h4&gt;
&lt;p&gt;使用 &lt;code&gt;title&lt;/code&gt; 属性添加标题，或在代码第一行添加注释。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function hello() {
  console.log(&quot;Hello, World!&quot;);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!-- index.html --&amp;gt;
&amp;lt;div&amp;gt;文件名注释示例&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```js title=&quot;文件名.js&quot;
代码内容;
```

```html
&amp;lt;!-- 路径/文件名 --&amp;gt;
&amp;lt;div&amp;gt;内容&amp;lt;/div&amp;gt;
```
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;终端框架&lt;/h4&gt;
&lt;p&gt;自动检测 shell 类型（bash、powershell、sh 等），以终端风格展示命令。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;终端示例&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Write-Output &quot;这个有标题！&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```bash
命令
```

```powershell title=&quot;终端标题&quot;
命令
```
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;行高亮标记&lt;/h4&gt;
&lt;p&gt;在语言标识符后添加花括号，指定行号或范围进行高亮。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 第 1 行会被高亮
// 第 2 行普通
// 第 3-5 行会被高亮
console.log(&quot;第 3 行&quot;);
console.log(&quot;第 4 行&quot;);
console.log(&quot;第 5 行&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```js {1, 3-5}
代码;
```
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;行标记类型（ins、del）&lt;/h4&gt;
&lt;p&gt;使用 &lt;code&gt;del&lt;/code&gt; 和 &lt;code&gt;ins&lt;/code&gt; 属性标记删除和插入的行。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function demo() {
  console.log(&quot;这行被标记为已删除&quot;);
  console.log(&quot;这行被标记为已插入&quot;);
  console.log(&quot;这行被标记为已插入&quot;);
  console.log(&quot;普通行&quot;);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```js del={2} ins={3-4}
代码;
```
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;行内文本标记&lt;/h4&gt;
&lt;p&gt;在语言标识符后添加引号包裹要标记的文本。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function demo() {
  console.log(&quot;标记特定文本&quot;);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```js &quot;要标记的文本&quot;
代码;
```
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;正则表达式标记&lt;/h4&gt;
&lt;p&gt;使用斜杠包裹正则表达式来匹配和标记文本。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;console.log(&quot;单词 yes 和 yep 将被标记。&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```ts /正则表达式/
代码;
```
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;类似 diff 的语法&lt;/h4&gt;
&lt;p&gt;使用 &lt;code&gt;diff&lt;/code&gt; 语言标识符，&lt;code&gt;+&lt;/code&gt; 表示插入，&lt;code&gt;-&lt;/code&gt; 表示删除。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;+这一行将被标记为已插入
-这一行将被标记为已删除
这是一常规行
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```diff
+新增行
-删除行
普通行
```
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;自动换行&lt;/h4&gt;
&lt;p&gt;使用 &lt;code&gt;wrap&lt;/code&gt; 属性启用或禁用自动换行。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 启用自动换行
function getLongString() {
  return &quot;这是一个非常长的字符串，会自动换行&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```js wrap
代码;
```

```js wrap=false
代码;
```
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;可折叠部分&lt;/h4&gt;
&lt;p&gt;使用 &lt;code&gt;collapse&lt;/code&gt; 属性指定要折叠的行范围，点击可展开/收起。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 这部分代码会被折叠
import { boilerplate } from &quot;example&quot;;

// 这部分可见
console.log(&quot;可见代码&quot;);

// 这部分也会被折叠
boilerplate.cleanup();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```js collapse={1-3, 7-9}
代码;
```
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;行号&lt;/h4&gt;
&lt;p&gt;使用 &lt;code&gt;showLineNumbers&lt;/code&gt; 启用行号，&lt;code&gt;startLineNumber&lt;/code&gt; 设置起始行号。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 显示行号
console.log(&quot;第 2 行&quot;);
console.log(&quot;第 3 行&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;// 从第 10 行开始编号
console.log(&quot;第 11 行&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```js showLineNumbers
代码;
```

```js showLineNumbers startLineNumber=10
代码;
```
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;5. 数学公式&lt;/h3&gt;
&lt;p&gt;支持 LaTeX 数学公式，包括行内公式和块级公式。&lt;/p&gt;
&lt;p&gt;行内公式：$E = mc^2$&lt;/p&gt;
&lt;p&gt;块级公式：&lt;/p&gt;
&lt;p&gt;$$
\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
$$&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
f(x) &amp;amp;= x^2 + 2x + 1 \
&amp;amp;= (x + 1)^2
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;行内公式：$E = mc^2$

块级公式：

$$
\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
$$
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;6. 图片查看器&lt;/h3&gt;
&lt;p&gt;点击图片会自动打开 Lightbox 查看器，支持缩放和切换。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.unsplash.com/photo-1518770660439-4636190af475?w=800&quot; alt=&quot;示例图片&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt; 使用标准 Markdown 图片语法即可，点击查看器会自动启用。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;![图片描述](图片URL)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;📝 常用命令&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm install&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;安装依赖&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm dev&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;启动开发服务器&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm build&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;构建生产版本&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm preview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;预览构建结果&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm new-post &amp;lt;filename&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;创建新文章&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm format&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;格式化代码&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm lint&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;检查代码规范&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;🎯 总结&lt;/h2&gt;
&lt;p&gt;通过以上步骤，你已经成功部署了自己的 Fuwari 博客！Fuwari 提供了丰富的功能和精美的设计，非常适合个人博客、技术文档等内容网站。&lt;/p&gt;
&lt;h3&gt;Fuwari 的主要优势&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;零配置搜索&lt;/strong&gt;：基于 Pagefind 的静态搜索，无需后端&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;丰富的 Markdown 扩展&lt;/strong&gt;：支持警告框、代码高亮、数学公式等&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优秀的性能&lt;/strong&gt;：Astro 构建的静态站点，加载速度快&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;现代化设计&lt;/strong&gt;：流畅的动画和精美的 UI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;易于定制&lt;/strong&gt;：清晰的配置文件和主题系统&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你在部署过程中遇到任何问题，可以参考 &lt;a href=&quot;https://github.com/saicaca/fuwari&quot;&gt;Fuwari 官方文档&lt;/a&gt; 或在 GitHub 上提交 Issue。&lt;/p&gt;
&lt;p&gt;祝你博客写作愉快！🎉&lt;/p&gt;
</content:encoded></item></channel></rss>