极度科技-免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发

免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发

当前为 2024-10-16 提交的版本,查看 最新版本

// ==UserScript==
// @name         极度科技-免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发
// @namespace    http://cs.06001.cn/
// @version      1.4
// @description  免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发
// @author       极度科技(157574701/jdwl06001)
// @match        https://weibo.com/u/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=weibo.com
// @grant        GM_xmlhttpRequest
// @grant        GM_setValue
// @grant        GM_getValue
// @connect      weibo.com
// @connect      dashscope.aliyuncs.com
// ==/UserScript==

(function() {
    'use strict';

    console.log("Weibo Latest Post Monitor with Auto-Like, Comment, Repost 脚本已加载。");

    // 初始化设置
    const DEFAULT_INTERVAL = 5000; // 默认5秒
    const SETTING_KEY = 'weibo_monitor_settings';
    const LIKED_MIDS_KEY = 'weibo_liked_mids';
    const COMMENTED_MIDS_KEY = 'weibo_commented_mids';
    const REPOSTED_MIDS_KEY = 'weibo_reposted_mids';

    // 获取或设置默认配置
    let settings = GM_getValue(SETTING_KEY, {
        interval: DEFAULT_INTERVAL,
        autoLike: false,
        autoComment: false,
        autoRepost: false,
        aiApiKey: ''
    });

    // 获取已执行的操作列表
    let likedMids = GM_getValue(LIKED_MIDS_KEY, []);
    let commentedMids = GM_getValue(COMMENTED_MIDS_KEY, []);
    let repostedMids = GM_getValue(REPOSTED_MIDS_KEY, []);

    // 1. 自动提取UID
    const url = window.location.href;
    const uidMatch = url.match(/https:\/\/weibo\.com\/u\/(\d+)/);
    if (!uidMatch || uidMatch.length < 2) {
        alert("无法从URL中提取UID,请确保URL格式为 https://weibo.com/u/UID");
        console.error("URL不匹配或未找到UID:", url);
        return;
    }
    const uid = uidMatch[1];
    console.log("提取到的UID:", uid);

    // 2. 获取当前页面的Cookie
    const cookie = document.cookie;
    if (!cookie) {
        alert("无法获取Cookie,请确保已登录微博并重试。");
        console.error("未获取到Cookie。");
        return;
    }

    // 3. 从Cookie中解析XSRF-TOKEN
    const xsrfMatch = cookie.match(/XSRF-TOKEN=([^;]+)/);
    if (!xsrfMatch) {
        alert("未找到XSRF-TOKEN,请检查Cookie是否包含该项。");
        console.error("未找到XSRF-TOKEN:", cookie);
        return;
    }
    const xsrfToken = decodeURIComponent(xsrfMatch[1]);
    console.log("提取到的XSRF-TOKEN:", xsrfToken);

    // 4. 创建配置面板
    function createConfigPanel() {
        // 检查是否已存在配置面板
        if (document.getElementById('weibo-config-panel')) return;

        const panel = document.createElement('div');
        panel.id = 'weibo-config-panel';
        panel.style.position = 'fixed';
        panel.style.top = '10px';
        panel.style.right = '10px';
        panel.style.padding = '15px';
        panel.style.backgroundColor = 'rgba(0, 0, 0, 0.8)';
        panel.style.color = '#fff';
        panel.style.borderRadius = '8px';
        panel.style.zIndex = '10000';
        panel.style.fontSize = '14px';
        panel.style.boxShadow = '0 0 10px rgba(0,0,0,0.5)';
        panel.style.maxWidth = '300px';

        panel.innerHTML = `
            <h3 style="margin-top:0; text-align:center;">微博监控设置</h3>
            <label>
                监控间隔 (秒):
                <input type="number" id="monitor-interval" min="1" value="${settings.interval / 1000}" style="width: 60px; margin-left: 10px;">
            </label>
            <br><br>
            <label>
                <input type="checkbox" id="auto-like" ${settings.autoLike ? 'checked' : ''}>
                自动点赞
            </label>
            <br>
            <label>
                <input type="checkbox" id="auto-comment" ${settings.autoComment ? 'checked' : ''}>
                自动评论
            </label>
            <br>
            <label>
                <input type="checkbox" id="auto-repost" ${settings.autoRepost ? 'checked' : ''}>
                自动转发
            </label>
            <br><br>
            <label>
                千义通问 API Key:
                <input type="text" id="ai-api-key" value="${settings.aiApiKey}" placeholder="请输入千义通问 API Key" style="width: 100%;">
            </label>
            <br><br>
            <button id="save-settings" style="padding: 5px 10px; cursor: pointer;">保存设置</button>
            <button id="close-panel" style="padding: 5px 10px; cursor: pointer; margin-left: 10px;">关闭</button>
            <br><br>
            <div style="font-size: 12px; color: #ffcc00;">
                极度科技-免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发联系157574701(备注免费js脚本)[功能:1.自动获取登录账号的Cookie+Token2.自动检测当页博主第一页所有帖子3.自动筛选判断最新帖子4.可设置是否点赞、是否评论、是否.自动检测博主最新发布帖子5.可设置是否点赞、是否评论、是否转发6.可对接ai自动生成回复内容和转发内容]千义通问 API Key申请地址:https://bailian.console.aliyun.com/?apiKey=1#/api-key
(需登录阿里云且实名账号,赠送100万Token 免费额度有效期为180天)
            </div>
        `;

        document.body.appendChild(panel);

        // 绑定事件
        document.getElementById('save-settings').addEventListener('click', () => {
            const intervalInput = document.getElementById('monitor-interval').value;
            const autoLikeInput = document.getElementById('auto-like').checked;
            const autoCommentInput = document.getElementById('auto-comment').checked;
            const autoRepostInput = document.getElementById('auto-repost').checked;
            const aiApiKeyInput = document.getElementById('ai-api-key').value.trim();

            const newSettings = {
                interval: parseInt(intervalInput) * 1000,
                autoLike: autoLikeInput,
                autoComment: autoCommentInput,
                autoRepost: autoRepostInput,
                aiApiKey: aiApiKeyInput
            };

            // 更新设置
            GM_setValue(SETTING_KEY, newSettings);
            settings = newSettings;
            console.log("设置已保存:", settings);

            alert("设置已保存,页面即将刷新以应用新设置。");
            window.location.reload();
        });

        document.getElementById('close-panel').addEventListener('click', () => {
            panel.style.display = 'none';
        });
    }

    // 5. 创建信息显示区域
    function createInfoDisplay() {
        let infoDiv = document.getElementById('latest-post-info');
        if (!infoDiv) {
            infoDiv = document.createElement('div');
            infoDiv.id = 'latest-post-info';
            infoDiv.style.position = 'fixed';
            infoDiv.style.bottom = '10px';
            infoDiv.style.right = '10px';
            infoDiv.style.padding = '10px';
            infoDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
            infoDiv.style.color = '#fff';
            infoDiv.style.borderRadius = '5px';
            infoDiv.style.zIndex = '10000';
            infoDiv.style.fontSize = '14px';
            infoDiv.style.maxWidth = '300px';
            infoDiv.style.boxShadow = '0 0 10px rgba(0,0,0,0.5)';
            document.body.appendChild(infoDiv);
        }
        return infoDiv;
    }

    // 6. 转换时间格式
    function convertTime(createdAt) {
        const date = new Date(createdAt);
        return date.toLocaleString();
    }

    // 7. 发送点赞请求
    function sendLike(mid) {
        const likeUrl = `https://weibo.com/ajax/statuses/setLike`;

        const likePayload = JSON.stringify({ id: mid });

        GM_xmlhttpRequest({
            method: "POST",
            url: likeUrl,
            headers: {
                "Content-Type": "application/json",
                "X-XSRF-TOKEN": xsrfToken,
                "Referer": `https://weibo.com/u/${uid}`,
                "Origin": "https://weibo.com"
            },
            data: likePayload,
            onload: function(response) {
                if (response.status !== 200) {
                    console.error(`点赞请求失败,状态码:${response.status}`);
                    infoDiv.innerHTML += `<br>❌ 点赞失败 MID: ${mid}`;
                    return;
                }

                try {
                    const json = JSON.parse(response.responseText);
                    if (json.ok === 1) {
                        console.log(`点赞成功,MID: ${mid}`);
                        // 记录已点赞的mid
                        if (!likedMids.includes(mid)) {
                            likedMids.push(mid);
                            GM_setValue(LIKED_MIDS_KEY, likedMids);
                        }
                        // 更新显示信息
                        infoDiv.innerHTML += `<br>✅ 已点赞 MID: ${mid}`;
                    } else {
                        console.warn(`点赞失败,MID: ${mid}`);
                        infoDiv.innerHTML += `<br>❌ 点赞失败 MID: ${mid}`;
                    }
                } catch (e) {
                    console.error("解析点赞响应数据时发生错误:", e);
                }
            },
            onerror: function(error) {
                console.error("点赞请求过程中发生错误:", error);
                infoDiv.innerHTML += `<br>❌ 点赞请求错误 MID: ${mid}`;
            }
        });
    }

    // 8. 发送评论请求
    function sendComment(mid, commentContent, retryCount = 0) {
        const commentUrl = `https://weibo.com/ajax/comments/create`;

        const commentPayload = `id=${mid}&comment=${encodeURIComponent(commentContent)}&pic_id=&is_repost=0&comment_ori=0&is_comment=0`;

        GM_xmlhttpRequest({
            method: "POST",
            url: commentUrl,
            headers: {
                "Content-Type": "application/x-www-form-urlencoded",
                "X-XSRF-TOKEN": xsrfToken,
                "Referer": `https://weibo.com/u/${uid}`,
                "Origin": "https://weibo.com"
            },
            data: commentPayload,
            onload: function(response) {
                if (response.status !== 200) {
                    console.error(`评论请求失败,状态码:${response.status}`);
                    if (retryCount < 3) {
                        console.log(`重试评论请求,MID: ${mid},第 ${retryCount + 1} 次`);
                        sendComment(mid, commentContent, retryCount + 1);
                    } else {
                        console.warn(`评论失败,MID: ${mid},已达到最大重试次数`);
                        infoDiv.innerHTML += `<br>❌ 评论失败 MID: ${mid}`;
                    }
                    return;
                }

                try {
                    const json = JSON.parse(response.responseText);
                    if (json.ok === 1) {
                        console.log(`评论成功,MID: ${mid}`);
                        // 记录已评论的mid
                        if (!commentedMids.includes(mid)) {
                            commentedMids.push(mid);
                            GM_setValue(COMMENTED_MIDS_KEY, commentedMids);
                        }
                        // 更新显示信息
                        infoDiv.innerHTML += `<br>💬 已评论 MID: ${mid}`;
                    } else {
                        console.warn(`评论失败,MID: ${mid},原因: ${json.message}`);
                        if (retryCount < 3) {
                            console.log(`重试评论请求,MID: ${mid},第 ${retryCount + 1} 次`);
                            sendComment(mid, commentContent, retryCount + 1);
                        } else {
                            console.warn(`评论失败,MID: ${mid},已达到最大重试次数`);
                            infoDiv.innerHTML += `<br>❌ 评论失败 MID: ${mid}`;
                        }
                    }
                } catch (e) {
                    console.error("解析评论响应数据时发生错误:", e);
                    if (retryCount < 3) {
                        console.log(`重试评论请求,MID: ${mid},第 ${retryCount + 1} 次`);
                        sendComment(mid, commentContent, retryCount + 1);
                    } else {
                        console.warn(`评论失败,MID: ${mid},已达到最大重试次数`);
                        infoDiv.innerHTML += `<br>❌ 评论失败 MID: ${mid}`;
                    }
                }
            },
            onerror: function(error) {
                console.error("评论请求过程中发生错误:", error);
                if (retryCount < 3) {
                    console.log(`重试评论请求,MID: ${mid},第 ${retryCount + 1} 次`);
                    sendComment(mid, commentContent, retryCount + 1);
                } else {
                    console.warn(`评论失败,MID: ${mid},已达到最大重试次数`);
                    infoDiv.innerHTML += `<br>❌ 评论请求错误 MID: ${mid}`;
                }
            }
        });
    }

    // 9. 发送转发请求
    function sendRepost(mid, repostContent, retryCount = 0) {
        const repostUrl = `https://weibo.com/ajax/statuses/normal_repost`;

        const repostPayload = `id=${mid}&comment=${encodeURIComponent(repostContent)}&pic_id=&is_repost=0&comment_ori=0&is_comment=0&visible=0&share_id=`;

        GM_xmlhttpRequest({
            method: "POST",
            url: repostUrl,
            headers: {
                "Content-Type": "application/x-www-form-urlencoded",
                "X-XSRF-TOKEN": xsrfToken,
                "Referer": `https://weibo.com/u/${uid}`,
                "Origin": "https://weibo.com"
            },
            data: repostPayload,
            onload: function(response) {
                if (response.status !== 200) {
                    console.error(`转发请求失败,状态码:${response.status}`);
                    if (retryCount < 3) {
                        console.log(`重试转发请求,MID: ${mid},第 ${retryCount + 1} 次`);
                        sendRepost(mid, repostContent, retryCount + 1);
                    } else {
                        console.warn(`转发失败,MID: ${mid},已达到最大重试次数`);
                        infoDiv.innerHTML += `<br>❌ 转发失败 MID: ${mid}`;
                    }
                    return;
                }

                try {
                    const json = JSON.parse(response.responseText);
                    if (json.ok === 1) {
                        console.log(`转发成功,MID: ${mid}`);
                        // 记录已转发的mid
                        if (!repostedMids.includes(mid)) {
                            repostedMids.push(mid);
                            GM_setValue(REPOSTED_MIDS_KEY, repostedMids);
                        }
                        // 更新显示信息
                        infoDiv.innerHTML += `<br>🔁 已转发 MID: ${mid}`;
                    } else {
                        console.warn(`转发失败,MID: ${mid},原因: ${json.message}`);
                        if (retryCount < 3) {
                            console.log(`重试转发请求,MID: ${mid},第 ${retryCount + 1} 次`);
                            sendRepost(mid, repostContent, retryCount + 1);
                        } else {
                            console.warn(`转发失败,MID: ${mid},已达到最大重试次数`);
                            infoDiv.innerHTML += `<br>❌ 转发失败 MID: ${mid}`;
                        }
                    }
                } catch (e) {
                    console.error("解析转发响应数据时发生错误:", e);
                    if (retryCount < 3) {
                        console.log(`重试转发请求,MID: ${mid},第 ${retryCount + 1} 次`);
                        sendRepost(mid, repostContent, retryCount + 1);
                    } else {
                        console.warn(`转发失败,MID: ${mid},已达到最大重试次数`);
                        infoDiv.innerHTML += `<br>❌ 转发失败 MID: ${mid}`;
                    }
                }
            },
            onerror: function(error) {
                console.error("转发请求过程中发生错误:", error);
                if (retryCount < 3) {
                    console.log(`重试转发请求,MID: ${mid},第 ${retryCount + 1} 次`);
                    sendRepost(mid, repostContent, retryCount + 1);
                } else {
                    console.warn(`转发失败,MID: ${mid},已达到最大重试次数`);
                    infoDiv.innerHTML += `<br>❌ 转发请求错误 MID: ${mid}`;
                }
            }
        });
    }

    // 10. 使用AI生成评论内容
    async function generateAIComment(postText) {
        if (!settings.aiApiKey) {
            console.warn("未提供AI API Key,使用默认评论。");
            return "极度科技-免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发联系157574701(备注免费js脚本)[功能:1.自动获取登录账号的Cookie+Token2.自动检测当页博主第一页所有帖子3.自动筛选判断最新帖子4.可设置是否点赞、是否评论、是否.自动检测博主最新发布帖子5.可设置是否点赞、是否评论、是否转发6.可对接ai自动生成回复内容和转发内容]";
        }

        try {
            const response = await fetch('https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': `Bearer ${settings.aiApiKey}`
                },
                body: JSON.stringify({
                    model: "qwen-turbo",
                    messages: [
                        { role: 'system', content: '你是一个评论大师,按照这个帖子内容给我写一条十字左右的评论' },
                        { role: 'user', content: postText }
                    ]
                })
            });

            if (!response.ok) {
                console.error(`AI 请求失败,状态码:${response.status}`);
                return "极度科技-免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发联系157574701(备注免费js脚本)[功能:1.自动获取登录账号的Cookie+Token2.自动检测当页博主第一页所有帖子3.自动筛选判断最新帖子4.可设置是否点赞、是否评论、是否.自动检测博主最新发布帖子5.可设置是否点赞、是否评论、是否转发6.可对接ai自动生成回复内容和转发内容]";
            }

            const data = await response.json();
            const aiComment = data.choices && data.choices[0].message.content.trim();
            if (aiComment) {
                console.log(`AI生成的评论: ${aiComment}`);
                return aiComment;
            } else {
                console.warn("AI 未生成有效的评论,使用默认评论。");
                return "极度科技-免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发联系157574701(备注免费js脚本)[功能:1.自动获取登录账号的Cookie+Token2.自动检测当页博主第一页所有帖子3.自动筛选判断最新帖子4.可设置是否点赞、是否评论、是否.自动检测博主最新发布帖子5.可设置是否点赞、是否评论、是否转发6.可对接ai自动生成回复内容和转发内容]";
            }
        } catch (error) {
            console.error("AI生成评论时发生错误:", error);
            return "极度科技-免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发联系157574701(备注免费js脚本)[功能:1.自动获取登录账号的Cookie+Token2.自动检测当页博主第一页所有帖子3.自动筛选判断最新帖子4.可设置是否点赞、是否评论、是否.自动检测博主最新发布帖子5.可设置是否点赞、是否评论、是否转发6.可对接ai自动生成回复内容和转发内容]";
        }
    }

    // 11. 使用AI生成转发内容
    async function generateAIRepost(postText) {
        if (!settings.aiApiKey) {
            console.warn("未提供AI API Key,使用默认转发内容。");
            return "极度科技-免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发联系157574701(备注免费js脚本)[功能:1.自动获取登录账号的Cookie+Token2.自动检测当页博主第一页所有帖子3.自动筛选判断最新帖子4.可设置是否点赞、是否评论、是否.自动检测博主最新发布帖子5.可设置是否点赞、是否评论、是否转发6.可对接ai自动生成回复内容和转发内容]";
        }

        try {
            const response = await fetch('https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': `Bearer ${settings.aiApiKey}`
                },
                body: JSON.stringify({
                    model: "qwen-turbo",
                    messages: [
                        { role: 'system', content: '你是一个评论大师,按照这个帖子内容给我写一条十字左右的转发内容' },
                        { role: 'user', content: postText }
                    ]
                })
            });

            if (!response.ok) {
                console.error(`AI 请求失败,状态码:${response.status}`);
                return "极度科技-免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发联系157574701(备注免费js脚本)[功能:1.自动获取登录账号的Cookie+Token2.自动检测当页博主第一页所有帖子3.自动筛选判断最新帖子4.可设置是否点赞、是否评论、是否.自动检测博主最新发布帖子5.可设置是否点赞、是否评论、是否转发6.可对接ai自动生成回复内容和转发内容]";
            }

            const data = await response.json();
            const aiRepost = data.choices && data.choices[0].message.content.trim();
            if (aiRepost) {
                console.log(`AI生成的转发内容: ${aiRepost}`);
                return aiRepost;
            } else {
                console.warn("AI 未生成有效的转发内容,使用默认转发内容。");
                return "极度科技-免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发联系157574701(备注免费js脚本)[功能:1.自动获取登录账号的Cookie+Token2.自动检测当页博主第一页所有帖子3.自动筛选判断最新帖子4.可设置是否点赞、是否评论、是否.自动检测博主最新发布帖子5.可设置是否点赞、是否评论、是否转发6.可对接ai自动生成回复内容和转发内容]";
            }
        } catch (error) {
            console.error("AI生成转发内容时发生错误:", error);
            return "极度科技-免费版AI自动监控微博最新帖子并可选自动点赞、评论、转发联系157574701(备注免费js脚本)[功能:1.自动获取登录账号的Cookie+Token2.自动检测当页博主第一页所有帖子3.自动筛选判断最新帖子4.可设置是否点赞、是否评论、是否.自动检测博主最新发布帖子5.可设置是否点赞、是否评论、是否转发6.可对接ai自动生成回复内容和转发内容]";
        }
    }

    // 12. 获取并处理最新帖子
    async function fetchLatestPost() {
        const apiUrl = `https://weibo.com/ajax/statuses/mymblog?uid=${uid}&page=1&feature=0`;
        console.log("请求URL:", apiUrl);

        GM_xmlhttpRequest({
            method: "GET",
            url: apiUrl,
            headers: {
                "X-XSRF-TOKEN": xsrfToken,
                "Referer": `https://weibo.com/u/${uid}`
            },
            onload: async function(response) {
                console.log("请求完成,状态码:", response.status);
                if (response.status !== 200) {
                    console.error(`请求失败,状态码:${response.status}`, response.responseText);
                    infoDiv.innerHTML = `请求失败,状态码:${response.status}`;
                    return;
                }

                try {
                    const json = JSON.parse(response.responseText);
                    console.log("响应JSON数据:", json);
                    if (!json.data || !json.data.list || json.data.list.length === 0) {
                        console.warn("未找到微博数据。");
                        infoDiv.innerHTML = `未找到微博数据。`;
                        return;
                    }

                    const posts = json.data.list;
                    let latestPost = null;
                    let latestDate = null;

                    // 遍历所有帖子,找出最新的
                    posts.forEach(post => {
                        const mid = post.mid;
                        const createdAt = post.created_at;
                        const date = new Date(createdAt);
                        console.log(`帖子 MID: ${mid}, 发布时间: ${createdAt}`);
                        if (!latestDate || date > latestDate) {
                            latestDate = date;
                            latestPost = post;
                        }
                    });

                    if (latestPost) {
                        const latestMid = latestPost.mid;
                        const latestCreatedAt = convertTime(latestPost.created_at);
                        const postText = latestPost.text;
                        // 检查是否已点赞、评论、转发
                        const alreadyLiked = likedMids.includes(latestMid);
                        const alreadyCommented = commentedMids.includes(latestMid);
                        const alreadyReposted = repostedMids.includes(latestMid);

                        // 显示结果
                        infoDiv.innerHTML = `<strong>最新微博:</strong><br> MID: ${latestMid}<br> 发布时间: ${latestCreatedAt}`;

                        // 自动点赞
                        if (settings.autoLike && !alreadyLiked) {
                            sendLike(latestMid);
                        } else if (alreadyLiked) {
                            infoDiv.innerHTML += `<br>👍 已点赞该微博。`;
                        }

                        // 自动评论
                        if (settings.autoComment && !alreadyCommented) {
                            const commentContent = await generateAIComment(postText);
                            sendComment(latestMid, commentContent);
                        } else if (alreadyCommented) {
                            infoDiv.innerHTML += `<br>💬 已评论该微博。`;
                        }

                        // 自动转发
                        if (settings.autoRepost && !alreadyReposted) {
                            const repostContent = await generateAIRepost(postText);
                            sendRepost(latestMid, repostContent);
                        } else if (alreadyReposted) {
                            infoDiv.innerHTML += `<br>🔁 已转发该微博。`;
                        }
                    } else {
                        console.warn("未找到最新的帖子。");
                        infoDiv.innerHTML = `未找到最新的帖子。`;
                    }

                } catch (e) {
                    console.error("解析响应数据时发生错误:", e);
                    infoDiv.innerHTML = `解析响应数据时发生错误。`;
                }
            },
            onerror: function(error) {
                console.error("请求过程中发生错误:", error);
                infoDiv.innerHTML = `请求过程中发生错误。`;
            }
        });
    }

    // 13. 创建配置按钮
    function createConfigButton() {
        let button = document.getElementById('weibo-config-button');
        if (!button) {
            button = document.createElement('button');
            button.id = 'weibo-config-button';
            button.innerText = '设置';
            button.style.position = 'fixed';
            button.style.top = '10px';
            button.style.right = '20px'; // 调整位置,避免与设置面板重叠
            button.style.padding = '10px';
            button.style.backgroundColor = '#4CAF50';
            button.style.color = '#fff';
            button.style.border = 'none';
            button.style.borderRadius = '5px';
            button.style.cursor = 'pointer';
            button.style.zIndex = '10000';
            button.style.boxShadow = '0 0 5px rgba(0,0,0,0.3)';
            document.body.appendChild(button);

            button.addEventListener('click', () => {
                createConfigPanel();
            });
        }
    }

    // 14. 创建信息显示区域
    const infoDiv = createInfoDisplay();

    // 15. 创建配置按钮
    createConfigButton();

    // 16. 初始调用
    fetchLatestPost();

    // 17. 设置定时任务
    let monitorInterval = settings.interval;
    setInterval(() => {
        console.log("定时任务:获取最新帖子");
        fetchLatestPost();
    }, monitorInterval);

})();