智能博客小助手(二)利用MCP我可以一键轰炸各个平台——小红书,知乎

智能博客小助手Github地址

GIthub地址:https://github.com/Victorzwx/IntelligentBlogAssitant

目前本项目只是一个空壳,后期会慢慢更新。

请大家多多Star,你们的Star才是我开源的动力。Star越多,才会有更多的人来完善这个项目,变成校招或者找实习的一大好项目!
本项目适合:

  • 在校生(研究生或者本科),想要拥有一个拿得出手的AI项目
  • 想玩一玩RAGMCP,体验新技术的人群
  • 想拥有一个属于自己的并且拿得出手的技术博客

目前处于基础建设,等陆续介绍完以后再更新代码。

知乎发文章MCP服务Github地址

GIthub地址:https://github.com/Victorzwx/zh_mcp_server/tree/master

  • 一种用于知乎发文章的模型上下文协议(MCP)服务器,使用者可以通过该服务与大模型自动生成文章并在知乎发文章。
  • 基于selenium和ChromeDriver实现自动发文章
  • 本文会从0开始搭建这个MCP服务,即使你是小白也能明白

一些说明

智能博客小助手来啦!学会后可以全自动经营一个技术博客,不需要经验小白也能有一个拿得出手的技术博客!

如果你已经充分了解什么是MCP,并且有过实战操作,请直接跳过第1部分MCP服务简单实操,直接从第2部分开始阅读。

但是如果你不知道什么是MCP,或者知道什么是MCP但是没有实际操作那么我建议你画一些时间来阅读并操作一下,这有利于你对MCP的理解和学习后面的小红书,知乎发文章MCP服务。

内容比较长,可以根据标题看你感兴趣的部分。

正文

1.MCP服务简单实操

1.1 什么是MCP?

MCP协议(Model Context Protocol)是一种协议,旨在为大型语言模型(LLM)提供标准化的外部数据源与工具连接方式,其核心目的是充当大模型与外部工具、数据源和行为(Actions)之间的交互“桥梁”。

大型语言模型在精确计算、实时信息获取(如天气)、与特定系统交互(如数据库、本地文件、API)等等方面存在局限性。

而MCP协议可以为大模型提供统一接口,开发者无需为对接各种不同的工具和数据源编写大量定制化代码,降低了集成复杂性,同时可以有效解决精确计算、实时信息获取(如天气)、与特定系统交互(如数据库、本地文件、API)等问题。

通过对大语言模型提供文字类任务也就是提示词直接进行某些操作,如可以通过高德的MCP服务实时获取某些地区的天气预报以及路线规划,也可以通过Github提供的MCP服务直接操作代码库,又或者通过自然语言直接操作Mysql,Redis等数据库。

这里只是简单的介绍什么是MCP协议,还有概念性的问题没有展开叙述,后面在我的AI专栏会陆续介绍。在这里,我们直接实战!

直接上手MCP,先明白这是怎么玩的,然后再慢慢的去补充理论。在我看来学习就应该这样 ,先理解这是什么,然后去动手操作去实现,之后再慢慢补充理论,最后再根据理论慢慢优化实操。

1.2 Cherry studio实操

1.2.1 直观感受小红书发帖MCP服务和知乎发文章MCP服务

先简单的玩一玩MCP服务,目前有许多应用都已经支持MCP,这里使用出来比较早的一款软件——Cherry studio。

这里不介绍怎么安装,可以自行搜索,直接安装就好。

在这里插入图片描述

这是Cherry studio的一个界面,可以看到,我就是在这上面测试小红书和知乎发帖的MCP服务。

这个执行过程是这样的:

  • 通过提示词要求大语言模型在知乎和小红书上发布文章
  • 大语言模型通过分析提示词并对比已对接的MCP服务
  • 根据分析结果选择需要调用的MCP服务(这里需要调用小红书发帖MCP服务和知乎发文章MCP服务)
  • 大语言模型把对应的参数传给这两个MCP服务作为入参
  • 这两个MCP服务就会根据入参执行相应的函数并把结果返回给大语言模型
  • 最后大语言模型再把结果转达给我们

是不是看着很懵?懵就对了,说明你不了解什么是MCP,通过阅读这篇文章你会有很大的收获!这篇文章的后面也会详细介绍如何实现小红书和知乎发文章的MCP服务器,请耐心的阅读。

通过上面的图片,应该可以有一个比较直观的感受。大语言模型是通过分析提示词来调用MCP服务并返回结果。其本质上MCP就是对Function Call的一种统一规范,要求Function Call必须按照协议来编写函数,让大语言模型可以直接调用。

接下来,进入真正的实战!

1.2.2 实操Cherry studio进行文件操作
1.2.2.1 购买DeepSeek API

既然要玩大语言模型,那必然需要可以自由调用的model,这里我们选择DeepSeek。直接进入:DeepSeek API文档
在这里插入图片描述这是目前的Token价格,还是比较便宜的,直接购买10元。不要舍不得花钱,学习AI应用开发不花钱是不可能的。而且10元真的不多。

DeepSeek有两种模型,分别是:

  1. DeepSeek-V3
  2. DeepSeek-R1

DeepSeek-R1是推理模型不支持MCP,DeepSeek-V3是非推理模型支持MCP,所以后面用到的都是DeepSeek-V3模型。

1.2.2.2 Cherry studio配置DeepSeek API

然后在Cherry studio中进行配置:
在这里插入图片描述

打开设置 -> 搜索深度求索 -> 输入你的API密匙和API地址 -> 启动深度求索

然后就可以愉快的玩耍了

在这里插入图片描述

进入聊天页面,设置为深度求索DeepSeek-V3模型,进行测试,如果有响应结果则恭喜你,你马上就要开始你的AI之旅了。

1.2.2.3 配置server-filesystem文件操作类MCP服务

在这里插入图片描述
MCP服务 -> 搜索MCP -> @modelcontextprotocol
找到server-filesystem,并打开其链接:server-filesystem

找到NPX
在这里插入图片描述
注意,难点又来了,因为这里又需要配置python的npx环境,如果你不知道这里可以去查一查,这里简单说一说。

npx指令可以理解为下载,类似于pip。

所以需要自行去安装npx,这里博主偷个懒,你们主动的去学习,去实操安装npx。

然后我们来看看其对接MCP服务的指令,command现在主流的有npx,uvx(NodeJs的安装操作,可以理解为python的pip),python,还有jar。

arg是调用该MCP服务时需要的参数。这里的"/Users/username/Desktop"和"/path/to/other/allowed/dir"需要换成自己电脑上有访问权限的路径,建议把这两个配置为一样的。

在这里插入图片描述
根据上面的配置,依次对应Cherry studio上的指令,尤其需要注意的是npx需要填写绝对路劲!这很重要,很多人都是因为这里只填写了npx而无法成功。

配置后,点击保存,如果不报错且变绿则说明你太厉害啦!配置成功。
在这里插入图片描述
这里的名称可以随意,重要的是参数一定要按照要求配置。需要说明的是,我们统一采用stdio模式,其他两个模式暂时不涉及。

然后就可以看到有哪些工具了,这些工具其实本质就是一个一个的函数。如下:
在这里插入图片描述

1.2.2.4 操作server-filesystem文件操作类MCP服务

如果你是小白并且一步一步操作到这里,一定会花比较多的时间,先给你掌声!

接下来,终于可以有阶段性的胜利了。

在此之前,一定要打开MCP服务:
在这里插入图片描述

这里很容易就忘记了,一定要打开。

这里我把我写的知乎发文章和小红书发文章的MCP服务也跟着打开。

然后,我们如果不清楚他有哪些功能,直接问大模型,不懂就问!

在这里插入图片描述

可以看到信息还蛮多的,这里我们只是用文件操作类相关的。

见证奇迹的时刻来了,什么是MCP服务,这一次可以很清楚的知道怎么玩MCP服务了:

在这里插入图片描述

是不是感觉很厉害!

这是其分析提示词调用的工具(MCP服务)具体情况:
在这里插入图片描述
根据提示词并对比已对接的MCP服务,发现需要调用write_file函数,其传入的参数如上图。返回结果是:

"response": {
    "content": [
      {
        "type": "text",
        "text": "Successfully wrote to C:/Users/zwx/Desktop/text.txt"
      }
    ]
  }

这里需要稍微注意下,一定要填写你配置的路劲,否则没有权限操作,会返回报错信息:
在这里插入图片描述

我们再来看看创建的文件:
在这里插入图片描述
一切信息都对得上,现在你是否已经知道MCP是什么了,也已经体会到怎么实操MCP了,根据这些内容,你已经完全可以自己去找好玩的MCP服务,然后配置到Cherry Studio,就可以愉快的玩耍了!

2.小红书发布文章MCP服务器实现

2.1 一些说明

实际上,已经有人发布了小红书MCP服务器
在这里插入图片描述

但是为了适配我自己的博客智能小助手,我进行了一些小修改,但是修改不大,主要是借鉴其实现方式。

下文我会直接介绍我修改之后的小红书发布文章MCP服务器,并从0到1教你如何实现。

其源代码我放在智能博客小助手Github地址
GIthub地址:https://github.com/Victorzwx/IntelligentBlogAssitant

因为这是别人的工作,所以就不单独建代码仓库。

2.2 安装框架

程序猿的精髓是ctrl+c,ctrl+v。已经有人实现了这个功能,我们直接从它的源代码开始,不要怕,这里的代码很简单,在我的讲解下,你一定会明白的。直接从智能博客小助手Github地址
GIthub地址:https://github.com/Victorzwx/IntelligentBlogAssitant
处克隆代码,直接下载xhs_mcp_server.zip文件就好。

然后用PyCharm打开。

下图是源代码的结构:
在这里插入图片描述
代码不多,文件也不多,重点看server.py和write_xiaohongshu.py。

2.2 安装Trae.io

在正式完成这个项目之前,我们要正确的利用AI工具。如今的时代,一定要学会使用AI,让程序猿如猿添臂!

Trae.io官网安装国内版本,根据你的电脑安装适配你电脑操作系统的版本。

这真的是超级好东西。话不多说,开干。

用Trae打开这个文件夹:

在这里插入图片描述
然后把红色标记的文件拖到聊天框,然后输入指令,让它为我们分析代码,并添加注释。注意,这里要选择Claude-3.7,这是写代码地表最强!

然后发送,等待分析结果即可。

然后静下心来看看分析结果和代码注释,你就能大概了解这是在干什么了。

分析结果如下:
在这里插入图片描述

在这里插入图片描述

2.3 使用小红书发布文章MCP服务器

同样,再具体介绍怎么实现前,先玩起来,先知道它到底在干什么!

2.3.1 打开知乎发文章MCP服务Github地址

参考知乎发文章MCP服务Github地址
GIthub地址:https://github.com/Victorzwx/zh_mcp_server/tree/master

根据知乎发文章MCP服务器的使用,来使用小红书发布笔记MCP服务器,其实现原理一样,只是操作的对象不一样。

在这里插入图片描述

这个地址详细介绍了如何知乎发文章MCP服务器,我们根据其步骤一步一步来。

2.3.2 安装配置环境

首先,需要保证的是Python的版本至少是3.10.

建议使用方式1来安装配置环境,如上面的图。

然后在小红书发布笔记MCP服务器代码所在文件夹下的终端执行运行代码:

pip install -r requirements.txt

然后安装ChromeDriver,本项目依赖于谷歌浏览器,所以电脑上需要安装谷歌浏览器。134.0.6998.166是谷歌浏览器的版本号,需要手动查询使用者电脑上的谷歌浏览器版本。

npx @puppeteer/browsers install chromedriver@134.0.6998.166

2.3.2 保存cookie

因为代码简单,环境也很简单,只需要几步就安装好了。

接下来是执行:

python -m xhs_mcp_server.__login__

注意,在小红书发布笔记MCP服务器代码所在文件夹下的终端执行运行代码:

等待几秒钟,会弹出一个谷歌浏览器界面:

在这里插入图片描述

然后在谷歌浏览器输入你的电话号码并发送验证码。

注意:

  • 手机号码是已经注册过小红书账号
  • **验证码要输入到终端!**这很重要
  • 保持网络纯净

在这里插入图片描述

然后再次运行改代码,验证是否成功保存cookie,再次运行时不需要有任何操作,耐心等待即可。

在这里插入图片描述

如果没有要求输入验证码,直接显示使用cookies登录成功则代表成功保存cookie。

2.3.2 取消无头浏览器模式

然后我们再修改一下代码,让它不要以无头浏览器模式运行(后面会介绍)。

在这里插入图片描述

在这里插入图片描述
将上传视频和上传笔记都修改一下,设置headless为False。

这样,通过大语言模型调用该MCP服务时可以观察到代码的具体运行过程。

2.3.3 Cherry Studio配置小红书发布笔记MCP服务

在这里插入图片描述

这个配置就很简单了,不过需要注意的是,一定要保证小红书发布笔记MCP服务器代码所在的文件夹是系统变量,否则执行代码时不知道什么是xhs_mcp_server。

xhs_mcp_server是项目和文件夹的名字。

如果出现下面的状态,则代表配置成功。

在这里插入图片描述

2.3.4 操作MCP服务小红书发布笔记MCP服务

在这里插入图片描述

我们只测试发布笔记,不测试发布视频,如果你们有兴趣可自行尝试。

根据上面的提示来编写提示词。这里一共有3个参数:

  • title 笔记的标题,不可超过20个字符
  • conten 笔记的内容
  • images 笔记附带的图片,必须为本地文件

然后根据参数要求来编写提示词:

在这里插入图片描述
记得打开小红书MCP服务器。

提示词如下:

# 给你一个任务
## 发布笔记到小红书
## title 为 我学会了如何使用小红书发布笔记MCP服务
## content 为 {内容}。
        - {内容}的主要意思是:经过不懈努力,不断尝试,终于手动操作成功,实现了小红书发布笔记MCP服务,这可太不容易了!
        - {内容}需要扩写,不可以写这么短,但也不能太长,控制再500字左右
        - {内容}要饱含情感,显示出作者的努力和不断尝试
        - {内容}一定要写的像人,可以出现少许的错误,一定不可以写的太完美
## images 为 "C:\Users\zwx\Desktop\123.png"

然后静等程序运行,因为关闭了无头模式,所以可以看到浏览器的具体操作过程,注意,运行的时候不要操作浏览器,否则可能失败,这也是为什么默认打开无头浏览器模式的原因。

打开无头浏览器模式后,程序运行就不会显示的出现浏览器,而是再后台运行。

部分运行截图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

小红书端的运行结果:

在这里插入图片描述

可以看到成功了!结合大预言模型实现自动发帖,只需要给其一个主题,内容就可以让大模型自动生成了,现在你体会到MCP的魅力了吗?

但是可以注意到笔记内容:

(附上截图证明我真的成功了!)

这是因为提示词没有写好,需要修改提示词,修改后就可以避免这个情况了。至于怎么才能写好提示词,这会在后面慢慢更新,新时代下提示词就是新的代码,学好怎么写这个代码至关重要!

接下来,我们就要继续介绍实现原理以及知乎发布文章MCP服务了!

是不是很兴奋?或者很煎熬,内容太多啦,什么时候学的完,我也蛮煎熬的,写这些内容要花很长很长的时间,不过一想到你们会给我的两个Github项目都带你上小Star我就动力满满!!!

2.3.4 小红书发布笔记MCP服务实现原理

2.3.4.1 如何构建一个MCP服务器

​​MCP(Model Context Protocol)​​ 核心架构包含:

  • ​​MCP Server​​(MCP服务器):提供工具和资源的服务端,通过装饰器定义可调用接口。
  • ​​MCP Client(MCP客户端)​​:连接服务器的客户端(如 Cursor IDE),负责将用户请求转发给服务器。
  • ​​Tools(工具)​​:服务器暴露的函数,允许大模型执行如文件操作、API 调用等任务。

其中Tools(工具)的定义是放到MCP Server中。但是这样的描述比较抽象,换一种更直接的说法:

想要写一个MCP服务器,首先要忘记它是一个MCP服务器,只需要按照正常思维去编写一个一个的功能函数,然后再引入MCP相关的包,加上一个注解。

以Windos环境为例,用一个很简单的例子(server.py):

import os
from mcp.server.fastmcp import FastMCP

# 初始化 MCP 服务器实例
mcp = FastMCP()

@mcp.tool()
def get_desktop_files() -> list:
    """
    获取当前用户桌面上的所有文件列表
    (注释是给大模型看的,需明确描述功能和返回格式)
    """
    desktop_path = os.path.expanduser("~/Desktop")  # 跨平台路径处理
    return os.listdir(desktop_path)

if __name__ == "__main__":
    # 启动服务器,使用标准输入输出通信
    mcp.run(transport='stdio')

就这样,一个简单的MCP服务器就开发完成了,在Python代码中只需要引入FastMCP然后创建一个MCP服务器实例并在开发好的功能函数上添加@mcp.tool()注解。

在上面的例子中这整个代码充当的角色就是MCP服务器,而里面的功能函数get_desktop_files()则是Tools(工具),值得注意的是每个功能函数一定要写好注释,这是大语言模型理解和调用MCP服务器对应工具的关键!

然后就可以在MCP客户端配置这个MCP服务器了:

{
    "desktop-file-server": {
      "command": "python",
      "args": ["/path/to/your/server.py"],  // 替换为服务器脚本实际路径
    }
}

如在Cherry Studio(这是上面提到的截至目前为止最受欢迎的MCP客户端)中进行配置:
在这里插入图片描述

然后点击保存就可以了。

然后来测试一下:
在这里插入图片描述
结果如下:
在这里插入图片描述
这里的参考链接:9行代码实现MCP Server示例

2.3.4.2 构建小红书发布笔记MCP服务

通过上面的例子,你应该对如何写一个MCP服务器有一个清晰的认知。

接下来,我们来看看如何实现小红书发布笔记MCP服务器的实现,同样,让我们先抛开MCP,先想一想如何通过代码实现在小红书发布笔记(或者上传视频)。然后再引入MCP相关的包,加上一个注解即可。

其实有很多实现方案,这个项目我会提供两种方案:

  • 基于selenium模拟web页面用户交互行为实现发布笔记
  • 解析URL通过Http请求实现发布笔记

这篇文章涉及到的小红书和知乎都是基于selenium模拟web页面用户交互行为而实现发布笔记。

那什么是selenium呢?

Selenium 是一款​​开源的 Web 自动化工具​​,最初设计用于 Web 应用的自动化测试,现已扩展至网页数据抓取、自动化操作等领域。其核心功能是通过代码模拟用户在浏览器中的操作,例如点击按钮、输入文本、提交表单等,实现​​动态网页交互​​的自动化。

其可以模拟真实用户行为(如鼠标移动、Cookie 管理),可以降低被网站封禁的风险。因为后台很难识别我么是否使用了Selenium。

之前我们也在Cherry Studio使用过小红书发布笔记MCP服务,并在在使用前关闭了无头浏览器模式,清晰的观察到了大语言模型在调用发布笔记这个工具时的具体过程,可以很清晰的知道,其核心原理就是通过Cookie在谷歌浏览器登录小红书账号,然后找到创作者中心,并上传图片,然后输入标题,输入文章内容,最后点击发布笔记。

所以这里一共涉及到两个核心点:

  1. 保存Cookie
  2. 操作谷歌浏览器

Cookie中保存了加密后的个人信息,通过Cookie我们就可以不需要再次登录账号就可以直接登录小红书账号。

我们直接来看源码。先来看看write_xiaohongshu.py文件的代码:

在这里插入图片描述

这里的函数按照功能划分主要可以分为三类:

  • 获取谷歌浏览器驱动(ChromeDriver)
  • 登录小红书账号
  • 发布笔记

我们想要操作谷歌浏览器首先需要获得谷歌浏览器驱动(ChromeDriver),其是谷歌浏览器专用的自动化驱动工具,只有成功在代码中加载出谷歌浏览器驱动(ChromeDriver)才能通过代码操作谷歌浏览器。

我们先来体会一下获得谷歌浏览器驱动(ChromeDriver)。用Trae打开这个项目,把write_xiaohongshu.py拖入到聊天框,然后让它帮我们写一个关于login的测试函数:

import os
import sys
import time
import logging
from write_xiaohongshu import XiaohongshuPoster

# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger('test_login')

def test_login():
    """测试小红书登录功能"""
    try:
        logger.info("开始测试登录功能")
        
        # 获取当前目录作为数据存储路径
        path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "data")
        # 确保目录存在
        os.makedirs(path, exist_ok=True)
        
        # 创建 XiaohongshuPoster 实例
        logger.info(f"使用路径: {path}")
        poster = XiaohongshuPoster(path)
        
        # 尝试登录
        logger.info("尝试登录小红书")
        login_success = poster.login()
        
        # 检查登录结果
        if login_success:
            logger.info("登录成功")
            # 检查 cookies 文件是否存在
            cookies_file = os.path.join(path, "xiaohongshu_cookies.json")
            if os.path.exists(cookies_file):
                logger.info(f"Cookies 文件已保存: {cookies_file}")
            else:
                logger.error(f"Cookies 文件未保存: {cookies_file}")
        else:
            logger.error("登录失败")
        
        # 等待 2 秒
        time.sleep(2)
        
        # 关闭浏览器
        logger.info("关闭浏览器")
        poster.close()
        
        return login_success
    except Exception as e:
        logger.error(f"测试登录功能时发生错误: {str(e)}")
        import traceback
        traceback.print_exc()
        return False

def main():
    """主函数"""
    # 运行测试
    result = test_login()
    # 打印结果
    if result:
        print("测试通过: 登录功能正常")
    else:
        print("测试失败: 登录功能异常")

if __name__ == "__main__":
    main()

然后用Pycharm打开这个代码文件夹,debug这个测试函数,建议在下面的地方打断点:
在这里插入图片描述
直接Degub,然后一行一行的查看代码。

主要有以下几个点需要注意:

这里是设置为无头浏览器模式,你可以把它理解为后台打开浏览器,但是没有页面渲染过程,在电脑图形界面是看不到浏览器已经被打开,但是后台却在运行。

这里的代码我自己加上的,因为如果不开启无头模式,可能会因为对浏览器的一些操作导致发布笔记失败,但是如果其在后台运行就不会出现这个情况。
在这里插入图片描述
然后是加载谷歌浏览器的驱动,这里有许多加载方法,别人发布的源码中是没有这个代码的,我加上这个代码是因为我在使用大语言模型来使用小红书发布笔记MCP服务器时报错说加载谷歌浏览器驱动,所以我是用Trae加上了这些代码,让它针对Windos系统添加了一些其他加载谷歌浏览器驱动的方法。
在这里插入图片描述

继续Debug下去:
在这里插入图片描述
Cookie是保存在xiaohongshu_cookies.json文件下的

在这里插入图片描述

_load_cookies通过加载xiaohongshu_cookies.json文件内的Cookie信息,把他们全部加载到小红书创作者中心https://creator.xiaohongshu.com中,并刷新,如果Cookie正确就可以成功登录小红书创作者中心。但是这里并没有刷新页面的代码,所以加载Cookie后并不会显示登录后小红书创作者中心。

继续Debug下去:
在这里插入图片描述

在这里插入图片描述

可以看到login()的步骤同样是访问小红书创作者中心登录页面https://creator.xiaohongshu.com/login并使用_load_cookies函数加载xiaohongshu_cookies.json内的Cookie,然后刷新页面,如果Cookie正确页面就会跳转。

如果cookie不正确就会运行下面的代码:
在这里插入图片描述

  • 访问小红书创作者中心登录页面https://creator.xiaohongshu.com/login
  • 通过web页面交互获取输入验证码的内容
  • 获取登录按钮,然后触发click事件

这里涉及到部分前端html相关的知识,先来看看小红书创作者中心登录页面https://creator.xiaohongshu.com/login前端页面的源码,打开开发者面板 -> Element
在这里插入图片描述
Element下面的就是这个html页面的前端源码。

当我们在前端页面输入小红书账号的电话号码,然后点击发送验证码,我们的手机就会收到验证码,然后,我们把验证码输入到终端,这些步骤在前面有提到过。

注意:

  • 手机号码是已经注册过小红书账号
  • **验证码要输入到终端!**这很重要
  • 保持网络纯净

现在我们来解析一下这是怎么做的,因为selenium是来模拟浏览器的用户行为,我们使用谷歌浏览器驱动访问了这个页面,然后点击获取验证码,这个时候我们把验证码在前端页面输入验证码然后点击登录就可以成功登录了,但是现在我们要使用代码来模拟这个过程。

先在Element下面的就是这个html页面的前端源码输入:crt+f。然后搜索"input[placeholder=‘验证码’]"

在这里插入图片描述

可以看到当我们鼠标移动到这个这行代码上,左边的页面会有部分颜色发生变化,这是在告诉开发者,右侧代码和左侧渲染后元素的对应关系。

如果使用代码可以获得这种关系是否就可以模拟真实的用户行为?

但是要怎么做呢?我也不会,问Trae,先复制这一行html代码,然后输入以下内容:

我有一个html代码,我现在想使用Selenium来获取该元素的输入,HTML代码如下:

<input placeholder="验证码" class="css-19z0sa3 css-1ge5flv dyn" value="">

返回结果:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4f73b578dde34767bba88aa39143552b.png在这里插入图片描述

可以看到,返回了多种方式,只需要选择其中一种即可。这里我选的是第一种方式:

        # 输入验证码
        verification_code = input("请输入验证码: ")
        # 定位验证码输入框
        code_input = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[placeholder='验证码']")))
        # 清空输入框
        code_input.clear()
        # 输入验证码
        code_input.send_keys(verification_code)

现在我们获得了验证码,下一步要做的就是通过代码获取登录按钮,然后触发click事件。方法是不是学会了?

在html源码种一行一行定位,找到登录按钮对应的html,然后把html发给大模型,告诉大模型我要通过Selenium来获登录按钮,并触发click事件。
在这里插入图片描述
然后继续Debug:
在这里插入图片描述

代码_save_cookies会将登录成功后的Cookie保存到xiaohongshu_cookies.json文件。

然后下次再调试login时就可以直接登录成功了。

是不是感觉很简单?

然后是发布笔记post_article函数。

这里其实就比较简单了,其核心是

  • 访问小红书创作者中心登录页面https://creator.xiaohongshu.com/login
  • 点击图文上传
  • 上传图片
  • 然后上传标题和文章
  • 获取发布按钮并触发click事件

在这里插入图片描述

在这里插入图片描述
具体的代码就不再赘述,如有兴趣,可让Trae编写测试代码,然后Debug。

正式使用时建议关闭无头浏览器模式。

3.知乎发布文章MCP服务器实现

3.1 一些说明

知乎发文章MCP服务器已经上传到魔搭社区的MCP广场,可以去搜索看看。
在这里插入图片描述
这是本人开发的第一个MCP服务,也可前往Github查看如何使用:
知乎发文章MCP服务Github地址
GIthub地址:https://github.com/Victorzwx/zh_mcp_server/tree/master

值得注意的是,魔搭社区上传的教程顺序有一点乱,建议详细看看这一章节或者Github上的指引。

3.2 使用知乎发文章MCP服务器

参考如下步骤:
在这里插入图片描述

3.2.1 克隆代码

git https://github.com/Victorzwx/zh_mcp_server.git

3.2.2 环境配置前提

建议在Windows环境下运行

python版本要求 >= 3.10

  • 方式1:

配置环境要求满足 requirements.txt 文件的要求

  • selenium>=4.0.0
  • requests>=2.25.1
  • mcp>=0.1.0
  • webdriver-manager>=3.8.0
    可以通过如下代码安装:
pip install -r requirements.txt

然后安装ChromeDriver,本项目依赖于谷歌浏览器,134.0.6998.166是版本号,需要手动查询使用者电脑上的谷歌浏览器版本

npx @puppeteer/browsers install chromedriver@134.0.6998.166
  • 方式2:

运行setup_environment.py,如果该方式失败则有可能是ChromeDriver版本不正确,建议以方式1重新安装

python setup_environment.py

3.2.3 保存个人cookie

在该代码文件夹下运行保存cookie的代码:

python -m zh_mcp_server.__login__
  • 注意运行后会自动打开谷歌浏览器
  • 在谷歌浏览器输入使用者的手机账号,然后点击获取验证码
  • 然后,将得到的验证码输入到Terminal,即运行python -m zh_mcp_server.__login__的终端,这很重要!

在这里插入图片描述
然后将获取的验证码输入验证码输入到Terminal!即运行python -m zh_mcp_server.__login__的终端,这很重要!

然后将获取的验证码输入验证码输入到Terminal!即运行python -m zh_mcp_server.__login__的终端,这很重要!

然后将获取的验证码输入验证码输入到Terminal!即运行python -m zh_mcp_server.__login__的终端,这很重要!

3.2.4 关闭无头浏览器模式

代码定位如下图所示:
在这里插入图片描述

3.2.5 在MCP客户端(如Cherry Studio)配置MCP服务

通过python的方式运行

"zh_mcp_server": {
      "command": "python",
      "args": [
        "-m",
        "zh_mcp_server"
      ]
 }

具体的配置可参考下图:
在这里插入图片描述

然后就可以使用了,先来看看有哪些参数:
在这里插入图片描述
更具体的要求看如下描述,这些都是根据知乎发文章的规定而限制的。

发布文章到知乎
    Args:
        title: 文章标题,不多于100个字符
        content: 文章内容,不少于9个字
        images: 文章封面图片路径,可以是单个字符串路径或包含一个路径的列表,也可以为空,只能是本地文件
        topic: 文章话题,如果为None则根据标题前4个字符选择最相关的话题(这里仅根据标题来寻找话题极有可能找不到),最好为输入为已存在的话题否则无法成功发帖

根据参数写提示词,让大语言模型完成发文章的任务。

提示词如下:

# 写一篇文章并直接发布到知乎,要求如下:
## 图片封面使用"C:\Users\zwx\Desktop\123.png"
## 标题为:我学会了如何使用知乎发布笔记MCP服务
## 内容为:为 {内容}。
        - {内容}的主要意思是:经过不懈努力,不断尝试,终于手动操作成功,实现了知乎发布笔记MCP服务,这可太不容易了!
        - {内容}需要扩写,不可以写这么短,但也不能太长,控制再500字左右
        - {内容}要饱含情感,显示出作者的努力和不断尝试
        - {内容}一定要写的像人,可以出现少许的错误,一定不可以写的太完美

在Cherry Studio中的具体操作:
在这里插入图片描述

这里和小红书发布文章MCP服务器一样关闭了无头模式,是可以观察到具体运行过程的,先看看Cherry Studio中的运行结果:

在这里插入图片描述

再来看看知乎中的结果:

在这里插入图片描述
可以看到,效果很不错,只要有一个好的提示词就可以有好的文章!

未完待续

智能博客小助手Github地址GIthub地址:https://github.com/Victorzwx/IntelligentBlogAssitant
知乎发文章MCP服务Github地址
GIthub地址:https://github.com/Victorzwx/zh_mcp_server/tree/master

今天写了太长时间啦~我先休息下,暂时把这部分内容发出来,让你们先看看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇湘Victor.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值