## 小红书自动化发布设计 ### 需求 因为小红书发布的内容格式等限制,比如必须附加图片/视频,title和content字数限制.....,需考虑: 1. markdown中的那些内容裁剪到小红书,发布到小红书上的内容放在markdown文章内容(可以是图片、文字、表格等任何markown元素)段前: ``` 一段文字、一张图片或表格…… ``` 2. 内容实用css进行渲染后转化为图片,渲染css作为主题,可以自行定义。 另需考虑: - 小红书登录需要能够记录cookie,简化自动化登录过程。 - 自动化发布过程,应模拟用户参数(用户环境指纹等),规避平台拦截。 - 文章发布方式,参考公众号发布,右键点“发布到小红书”或者批量发布 4. 三类内容发布: - 图文内容在小红书WEB版本上入口相同“上传图文”。 图文内容:解析markdown中正文中的图片上传。 - 视频内容使用“上传视频”入口。视频从markdown正文中获取上传。 - 文字内容在小红书WEB版本上入口相同“上传图文”。 - 使用markdown header中的image tag定义的图片。 - 文字内容转化为图片 ### 小红书CSS选择器 #### STEP 1 ![[xhspublisher.png]] **CSS选择器** ① div.publish-video .btn ② div.group-list .publish-card:nth-child(1) .image ③ div.group-list .publish-card:nth-child(2) .image #### STEP 21 发布笔记 ![[xhspublisher-2.png]] **CSS选择器** ① div.publish-video .btn ② div.outarea.upload-c .creator-tab:nth-child(1) ③ div.outarea.upload-c .creator-tab:nth-child(3) ④ div.outarea.upload-c .upload-content button #### STEP 22 上传视频 点击上传视频后( ② div.outarea.upload-c .creator-tab:nth-child(1) ) ![[xhspublisher-3.png]] ![[xhspublisher-6.png]] **CSS选择器** ① .cover-container .stage div:first-child 判断出现文字“上传成功”,**设计为异步等待?不阻塞标题及内容输入等其他操作。** ② .titleInput .d-text ③ #quillEditor.ql-editor ④ #topicBtn ⑤ .media-extension .plugin:nth-child(2) .d-select-placeholder ⑥ .media-settings>div>div:nth-child(2) .d-select-description ⑦ .el-radio-group label:nth-child(1) input - 立即发布 .el-radio-group label:nth-child(2) input - 定时发布 .el-radio-group .date-picker input - 时间2025-06-21 15:14 ⑧ .publishBtn #### STEP 31 上传图片 点击上传图片后(③ div.outarea.upload-c .creator-tab:nth-child(3) ) ![[xhspublisher-7.png]] **CSS选择器** ① .publish-c .media-area-new .img-upload-area .entry ② .titleInput .d-text ③ #quillEditor .ql-editor ④ #topicBtn ⑤ .media-extension .plugin:nth-child(2) .d-select-placeholder ⑥ .media-settings>div>div:nth-child(2) .d-select-description ⑦ .el-radio-group label:nth-child(1) input - 立即发布 .el-radio-group label:nth-child(2) input - 定时发布 .el-radio-group .date-picker input - 时间2025-06-21 15:14 ⑧ .publishBtn ### Markdown解析 ### 数据结构 #### 数据来源 - markdown header 解析markdown笔记的header部分: image : 封面图片,文字内容的封面图片 xhstitle : **新增**,小红书标题 xhsdate : **定时发布**时间,不存在或留空表示**立即发布** xhstags : **新增**,作为小红书的#tags,并加入原header中的tags内容。 xhswhere : 小红书中**你在哪里/地点**。 xhsopen : yes-公开可见,no-仅自己可见 - markdown content 解析markdown内容,并获取[xhs内容/] - 数据结构 xhsdata = { "filename": { "title": "Labubu爆火现象", "date": "2025-06-19 11:00", "tags": ["潮玩","labubu"……], "where": "杭州市西湖风景名胜区", "open": "yes", "content": ["line1","line2","line3"……] } } ### 小红书发布流程 - 利用selenium登录,首次输入phone number,并记录cookie。以后尝试读取cookies自动登录,无法登陆则重新输入phone number。 - 发布文章 ### AI大模型 使用**豆包火山引擎** #### 代码生成 ### CONFIG 解析markdown内容时,每页内容的行数和总字数限制 page-line-number-limit page-line-word-count-limit page-word-count-limit --- ### ideas #### 20250901 从不同的源爬取内容,渲染成图片,发布到小红书。 - douban读书摘录、影评,高赞(如top3)内容。 - 自己ibook读书标注。 输入书名/电影名,完成内容采集和发布。(打标签❓) 配置: - 分类:书评、影评、游记 - 来源:豆瓣书摘,豆瓣评论,ibook标注 ### notes - 游记,拍照是在说明“添加说明”中增加照片描述。说明格式:filename 地点 景物 description ``` for f in *.jpg; do sips -g description "$f" | awk -F: '/description/ {print f, $2}' f="$f"; done (venv) gavin@GavinsMAC Downloads % sips -g all IMG_7015.jpg /Users/gavin/Downloads/IMG_7015.jpg pixelWidth: 1320 pixelHeight: 2425 typeIdentifier: public.jpeg format: jpeg formatOptions: default dpiWidth: 216.000 dpiHeight: 216.000 samplesPerPixel: 3 bitsPerSample: 8 hasAlpha: no space: RGB profile: sRGB IEC61966-2.1 description: 航班✈️ ``` todolist: - 调用大模型进行内容、图片、视频创作。 [AI大模型](#AI大模型) - 字体和模版随机选择,引入随机性 闪念: - 内容框架 & 内容分页展示,文字 + 装饰图,装饰图大模型自动生成。 - markdown header 中定义模版 - **使用html作为中间的渲染过程**,增强渲染的灵活性和丰富度。markdown - html - 图片 ### 链接&参考 - [xhs_ai_publisher](https://github.com/yourusername/xhs_ai_publisher.git) - [豆包大模型控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/openManagement?LLM=%7B%7D&OpenTokenDrawer=false&tab=LLM) - [selenium with python](https://selenium-python-zh.readthedocs.io/en/latest/) - [selenium WebDriver](https://www.selenium.dev/zh-cn/documentation/webdriver/) - [markdown-it](https://markdown-it.docschina.org)