当前位置: 首页 > article >正文

26山大软院创新实训--MarketClaw(三)

本周我进行了适配项目具体功能的skills的初步开发用于为小红书创作内容、撰写文章、生成封面图片和自动化发布。涵盖从内容创作到自动化发布的完整工作流程包括使用 Pillow 生成封面图片。一、顶层架构设计我的核心设计思考在写第一行代码前我花了大量时间设计架构 ——一开始我想把所有功能写在一个文件里但很快意识到小红书页面会迭代、封面样式会更新、发布流程会变化耦合代码完全无法维护。最终我确定了四层解耦架构这是整个 Skill 能稳定运行的核心地基数据规范层统一内容结构让代码能稳定解析内容图形渲染层自动化生成封面独立于业务逻辑浏览器自动化层执行发布操作只负责浏览器交互流程调度层串联所有模块管理状态、异常、版本设计原则单一职责、无强依赖、支持降级、跨平台兼容我的思考每一层都可以单独替换、升级比如未来换用 AI 生成封面只需要修改图形层不影响其他模块。二、技术选型我没有盲目选择热门技术而是针对小红书平台特性、需求痛点逐一测试最终确定技术栈每一个选型都有明确的理由。1.开发语言Python 3.102.封面生成Pillow尝试使用OpenCV但是太重、部署成本高试了在线 API但是有网络依赖而Pillow 纯本地、无依赖、速度快3.自动化发布Chrome CDP 协议试过 Selenium但是被小红书反爬直接拦截原生 CDP 最合规、最稳定4.数据 / 配置JSON Markdown三、四大核心模块模块 1数据规范层content-guide.md开发痛点自由创作的小红书文案格式混乱代码无法自动解析、填充、发布这是自动化的最大前提障碍。我的技术思考必须把非结构化文本 → 强约束结构化数据让代码能像读取配置文件一样读取内容从源头保证格式合规。技术原理基于JSON Schema数据结构化 设计固定字段、固定格式、固定约束机器可直接解析。{ title: ✨ 20字内 Emoji关键词, intro: 开头引入, sections: [{subtitle: 分段标题, content: 分段内容}], summary: 互动结尾, tags: [#标签1,#标签2] }特点强约束标题字数、标签数量、段落格式全部固定符合小红书流量规则无解析成本Python 一行 json.loads()即可读取无需复杂文本处理解耦内容和代码完全分离支持批量导入内容。一开始我用纯文本分隔符解析经常因为用户多打一个空格导致解析失败最终改用强 Schema 结构化彻底解决解析稳定性问题。模块 2图形渲染层gen_cover.py—— 技术核心这是我开发中耗时最长的模块解决渐变背景、跨平台中文乱码、文字排版溢出三大难题。核心技术 1线性渐变背景生成小红书封面必须用渐变背景手动设计效率极低需要纯代码实现平滑渐变。def create_gradient_bg(color_key: str) - Image.Image: # 创建小红书标准尺寸画布(1080×1440) img Image.new(RGB, (COVER_WIDTH, COVER_HEIGHT)) draw ImageDraw.Draw(img) start_rgb, end_rgb COLORS[color_key] # 逐行计算颜色插值实现平滑渐变 for y in range(COVER_HEIGHT): ratio y / COVER_HEIGHT r int(start_rgb[0] * (1 - ratio) end_rgb[0] * ratio) g int(start_rgb[1] * (1 - ratio) end_rgb[1] * ratio) b int(start_rgb[2] * (1 - ratio) end_rgb[2] * ratio) draw.line([(0, y), (COVER_WIDTH, y)], fill(r, g, b)) return img我一开始用PIL-gradient库结果部署时发现依赖冲突最终自己实现插值算法零依赖、兼容性拉满RGB 插值算法根据像素行的位置比例计算起始色到结束色的过渡值逐行渲染垂直方向逐行绘制保证渐变无断层、无锯齿固定尺寸严格匹配小红书官方要求发布无裁剪、无变形。核心技术 2跨平台中文字体自动探测解决乱码Linux/macOS 无统一中文字体路径Pillow 默认渲染中文会变成方框乱码这是 Python 图像处理的经典坑。所以我不能写死字体路径必须实现跨平台自动探测 兜底机制做到零配置运行。def get_cjk_font(size: int) - ImageFont.FreeTypeFont: # 枚举macOS/Linux 标准CJK字体路径优先级排序 SYSTEM_FONT_PATHS [ /Library/Fonts/Noto Sans CJK SC Bold.otf, /usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc ] # 自动检测系统可用字体 for font_path in SYSTEM_FONT_PATHS: if os.path.exists(font_path): return ImageFont.truetype(font_path, size) # 终极兜底加载系统默认字体 return ImageFont.load_default(sizesize)我先后尝试了打包字体进项目、写死路径、让用户手动配置三种方案最终自动探测方案完美解决所有问题路径优先级探测按系统常用字体路径依次检查找到可用字体立即加载跨平台兼容同时支持 macOS/Linux无需用户手动配置兜底保护极端环境下也能正常运行不崩溃。核心技术 3智能文字自动换行防溢出长标题会超出封面画布固定字数换行因为字体宽度不同依然会溢出。因此必须实时计算文本宽度字符级自适应分割而不是按字数分割。def auto_wrap_text(draw, text: str, font, max_width: int) - list: lines [] current_line # 逐字符测试超出宽度则换行 for char in text: test_line current_line char if draw.textlength(test_line, font) max_width: current_line test_line else: lines.append(current_line) current_line char lines.append(current_line) return lines一开始用每15个字换行结果英文、粗体字依然溢出改用字符级实时计算后彻底解决排版问题文本宽度实时计算调用 Pillow 原生 API 计算实际渲染宽度而非估算字符级分割精准控制每一行文字完美适配任意字体、字号无溢出、无重叠100% 适配小红书封面尺寸。模块 3自动化层browser-publish这是 Skill 的动作执行单元最大挑战是规避小红书反爬机制、稳定定位页面元素、持久化登录。核心技术 1持久化登录态免扫码、合规、防封号模拟登录会被小红书检测每次都扫码登录完全违背自动化初衷。我的想法是复用本地浏览器的登录数据不模拟登录、不抓包、不破解完全合规。# 启动持久化浏览器上下文保存Cookie/登录态 browser pw.chromium.launch_persistent_context( user_data_dir./browser_profile, # 本地存储登录数据 headlessFalse )我用 Selenium 模拟登录直接被小红书拦截用 Pyppeteer 登录态几分钟就失效最终采用原生持久化上下文这是实现自动化的标准合规方案用户数据持久化将浏览器的 Cookie、登录状态保存到本地文件夹原生浏览器行为和人工手动登录完全一致平台无法识别为自动化一次登录永久生效。核心技术 2语义化元素定位抗 UI 迭代小红书创作者中心经常改版CSS/XPath 选择器会直接失效自动化脚本完全跑不通。因此我选择放弃依赖页面结构的定位方式改用WAI-ARIA 语义化定位靠控件功能定位。# 语义化定位靠标题输入框、发布按钮功能定位而非页面结构 page.get_by_role(textbox, name标题).fill(title) page.get_by_role(button, name发布).click()我先后用了 CSS 选择器、XPath、正则匹配全部因为页面改版失效语义化定位是唯一能长期稳定运行的方案语义化定位基于控件的角色、文本功能定位和页面布局无关抗迭代小红书改版 UI只要功能不变脚本无需修改稳定性大幅提升。核心技术 3异常降级兜底自动化不可能 100% 稳定网络波动、页面异常都会导致失败不能让流程崩溃。因此要实现异常捕获 手动降级自动化失败立即切换为手动发布模式保证发布不中断。try: page.get_by_role(button, name发布).click() except TimeoutError: # 自动化失败触发兜底生成可复制内容手动发布 print(❌ 自动化失效切换手动兜底方案)能够实现的优点有全链路异常捕获捕获超时、元素缺失、网络错误所有异常无损降级不丢失数据不中断流程。模块 4流程调度层SKILL.md _meta.json四个模块分散独立无法一键执行没有版本管理、状态管理。因此要设计统一入口、串行执行、状态可控的调度器同时用 JSON 管理 Skill 元数据。def run_skill(note_data: dict): # 1. 解析结构化内容 content build_content(note_data) # 2. 生成标准化封面 generate_cover(**note_data) # 3. 执行浏览器自动化发布 publisher XiaohongshuPublisher() publisher.publish(titlenote_data[title], contentcontent)技术解析模块化调用无耦合单独调试任意模块串行执行一步失败立即停止避免无效操作元数据管理_meta.json记录版本、ID、时间支持迭代升级。四、技术总结开发的核心收获经过完整的技术攻坚我最终实现的这套Skill本质是技术的基本场景化落地用结构化数据解决内容解析难题从源头保证合规性用RGB 插值 字体探测 自适应排版解决封面自动化难题用原生 CDP 协议 语义化定位 持久化登录解决平台反爬与稳定性难题用四层解耦架构保证可维护、可扩展、可降级。五、后续技术演进规划视觉智能识别接入 CV 技术彻底无视页面 UI 变更批量 / 定时发布加入任务队列、定时调度支持规模化运营AI 内容增强自动优化标题、标签、正文提升流量状态持久化记录发布历史、失败原因支持断点续跑。六、总结本周初步实现了我们制定的小红书图文生成、自动发布功能并不代表最终成果后续还需与组员交流沟通一下看看有什么需要改进的地方。

相关文章:

26山大软院创新实训--MarketClaw(三)

本周我进行了适配项目具体功能的skills的初步开发,用于为小红书创作内容、撰写文章、生成封面图片和自动化发布。涵盖从内容创作到自动化发布的完整工作流程,包括使用 Pillow 生成封面图片。一、顶层架构设计:我的核心设计思考在写第一行代码…...

AI内容创作效率提升10倍的5个实用工具推荐

随着AI技术的快速发展,内容创作的方式正在被彻底重塑。从选题灵感、素材搜集、初稿撰写、排版优化到发布管理,AI工具正在每一个环节发挥作用。以下是5款经过我长期实战验证、真正能提升内容创作效率的AI工具:1. Notion AI — 一站式创作基地N…...

避开这5个坑,你的SAR回波仿真结果才靠谱 | MATLAB实战经验分享

避开这5个坑,你的SAR回波仿真结果才靠谱 | MATLAB实战经验分享 在合成孔径雷达(SAR)系统设计与算法验证过程中,回波仿真是不可或缺的关键环节。然而,即使对于有一定基础的工程师,也常常会在仿真过程中遇到结…...

3分钟掌握Firmware Extractor:Android固件提取的神器指南

3分钟掌握Firmware Extractor:Android固件提取的神器指南 【免费下载链接】Firmware_extractor Extract given archive to images 项目地址: https://gitcode.com/gh_mirrors/fi/Firmware_extractor 你是否曾经面对各种厂商的Android固件包感到无从下手&…...

《全域数学》 ·72分册·第X卷:兵法原本(第一编·第一章 全文精校版)【乖乖数学】

《全域数学》 72分册第X卷:兵法原本(第一编第一章 全文精校版)【乖乖数学】 作者:乖乖数学 成书:20269503《全域数学》兵法原本(第一编)构建了一套以“正(0)、奇(1)、变(∞)”三元本源为公理化基…...

深度解析安卓ROM解包技术:专业工具实战指南

深度解析安卓ROM解包技术:专业工具实战指南 【免费下载链接】unpackandroidrom 爬虫解包 Android ROM 项目地址: https://gitcode.com/gh_mirrors/un/unpackandroidrom 在安卓系统定制与安全分析领域,安卓ROM解包技术是开发者、安全研究人员和刷机…...

WSL2里systemctl用不了?试试这3种替代方案(含Docker Desktop配置)

WSL2环境下systemctl不可用的三大实用替代方案 如果你在WSL2的Ubuntu环境中尝试使用systemctl命令管理服务时遇到报错,不必感到沮丧。这并非你的操作失误,而是WSL2的设计特性所致。微软的Windows Subsystem for Linux第二版(WSL2)…...

告别手敲命令!个人开源 AI 运维神器 AITerm,用自然语言远程管理服务器

AITerm AI 驱动的智能终端管理工具,通过自然语言指令远程管理服务器。 项目地址:https://gitee.com/newpc/aiterm 简介 在日常运维服务器过程中,经常需要手动输入大量命令。AITerm 旨在通过自然语言交互,让 AI 自动完成这些任务…...

构建个人音频库:跨平台下载工具的技术实现与实践指南

构建个人音频库:跨平台下载工具的技术实现与实践指南 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 在数字音频内容日…...

告别死记硬背!用‘场景+功能’思维图解SAP FICO核心事务代码(附记忆技巧)

场景化拆解SAP FICO事务代码:从机械记忆到逻辑关联的实战方法论 每次面对SAP FICO模块中密密麻麻的事务代码时,你是否感觉像在背电话号码?那些以F开头的字母数字组合,看似毫无规律地排列在操作界面上。但当我第一次在项目现场看到…...

gRPC 与 Protobuf 实战指南

引言gRPC 是 Google 开源的高性能 RPC 框架,而 Protobuf(Protocol Buffers)则是其默认的序列化协议。两者结合带来了高性能、跨语言、契约优先的现代微服务通信方案。传统的 REST API 使用 JSON 或 XML 作为数据格式,存在以下问题…...

如何在Android手机上实现厘米级高精度定位:开源RTK方案完整指南

如何在Android手机上实现厘米级高精度定位:开源RTK方案完整指南 【免费下载链接】RtkGps Playing with rtklib on android 项目地址: https://gitcode.com/gh_mirrors/rt/RtkGps 还在为手机定位误差大而烦恼吗?想不想让你的Android设备也能实现专…...

解放游戏时间:MAA明日方舟助手如何让日常任务自动化成为现实

解放游戏时间:MAA明日方舟助手如何让日常任务自动化成为现实 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https…...

计算机网络复习(第五章):传输层

第5章 传输层知识点整理 传输层处在应用层和网络层之间,是端到端通信体系中非常关键的一层。网络层解决的是主机到主机之间如何把分组送达的问题,而传输层进一步把通信对象细化到主机中的具体应用进程,使不同主机上的进程可以像直接通信一样交…...

LLM 黑话手册:从 Token 到 Agent,一次搞懂 AI 时代的核心概念

LLM 黑话手册:从 Token 到 Agent,一次搞懂 AI 时代的核心概念 你用过 ChatGPT、Claude 或 DeepSeek 吗?如果有,你可能遇到过这些问题:明明跟 AI 聊得好好的,怎么突然它就不记得我刚才说过什么了&#xff1f…...

解锁新体验:如何用Video Speed Controller重塑你的视频观看习惯

解锁新体验:如何用Video Speed Controller重塑你的视频观看习惯 【免费下载链接】videospeed HTML5 video speed controller (for Google Chrome) 项目地址: https://gitcode.com/gh_mirrors/vi/videospeed 在信息爆炸的时代,视频已成为知识获取和…...

d2s-editor:暗黑破坏神2存档编辑难题的终极解决方案

d2s-editor:暗黑破坏神2存档编辑难题的终极解决方案 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾经因为暗黑破坏神2存档损坏而痛失数百小时的游戏进度?是否在尝试修改角色属性时因为复杂的二进…...

量子最优控制的鲁棒性优化与离散化误差修正

1. 量子最优控制的核心挑战与鲁棒性需求量子最优控制(Quantum Optimal Control, QOC)是量子计算实现高精度门操作的关键技术。在实际操作中,我们需要在控制精度和系统鲁棒性之间找到平衡点。传统方法通常采用间接轨迹优化,但这种方…...

Prompt Engineering与LangChain实战:从零构建AI应用开发指南

1. 从零到一:用Prompt Engineering与LangChain构建实用AI应用如果你对ChatGPT的对话能力感到惊叹,并开始思考如何将这种能力集成到你自己的Python应用里,比如让它帮你分析私人文档、自动处理工作流,或者构建一个专属的知识库助手&…...

Dell G15散热控制终极指南:开源替代方案tcc-g15完整教程

Dell G15散热控制终极指南:开源替代方案tcc-g15完整教程 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否曾经为Dell G15笔记本的过热问题而烦…...

【刷题】力扣739.每日温度

739. 每日温度 一开始错误代码&#xff1a; class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {stack<int> st;int lentemperatures.size();vector<int> res(len,0);// st.push(0);for(int i0;i<len;i){/…...

YOLO11涨点优化:特征融合优化 | 引入RepPAN结构,基于重参数化技术重构YOLO11的特征金字塔

一、开篇:YOLO11的Neck,真的够用了吗? 2024年9月30日,Ultralytics在YOLO Vision 2024(YV24)活动上正式发布了YOLO11模型。根据Ultralytics官方介绍,YOLO11引入了C3K2模块、增强版SPPF快速空间金字塔池化和C2PSA空间注意力机制三大核心创新,以更少的参数实现了更高的精…...

KingFusion|最近开发调试中遇到的几个问题及解决办法(2)

最近在用KingFusion软件做一个MES系统项目的实施&#xff1b;在开发调试过程中遇到一些问题&#xff0c;为了以后更好更快的在以后遇到同类型的问题&#xff0c;现将最近遇到问题及解决办法整理记录下来。01、报错&#xff1a;服务发现请求失败浏览器调试时报错&#xff1a;err…...

助睿实验作业1_完整版_带预留区

助睿实验作业1-订单利润分流数据加工一、实验背景1.1 实验目的本次实验旨在熟悉助睿零代码数据集成平台&#xff08;ETL平台&#xff09;的核心功能和操作方法&#xff0c;具体包括&#xff1a;掌握新建转换、添加组件、执行转换等基本操作流程熟悉表输入、记录集连接、字段选择…...

燃烧后CO2捕集系统的广义预测控制分数阶PID【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;查看文章底部二维码 &#xff08;1&#xff09;基于子空间辨识的PCC系统状态空间模型&#xff1a…...

自指拓扑场论:三维几何、粒子与相互作用V1.0(世毫九实验室原创研究)

自指拓扑场论&#xff1a;三维几何、粒子与相互作用【零自由参数&#xff08;0‑parameter&#xff09;】作者&#xff1a;方见华 单位&#xff1a;世毫九实验室 版本&#xff1a;V1.0 核心主张&#xff1a;以自指不动点与三维可平行化流形两条公理为唯一前提&#xff0c;无自…...

Legacy-iOS-Kit:如何用开源技术让经典iOS设备重获新生?

Legacy-iOS-Kit&#xff1a;如何用开源技术让经典iOS设备重获新生&#xff1f; 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-i…...

WorkshopDL:3分钟学会免费下载Steam创意工坊模组的终极方案

WorkshopDL&#xff1a;3分钟学会免费下载Steam创意工坊模组的终极方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在Epic Games或GOG平台购买了心仪的游戏&#xff…...

VECT 2.0勒索软件深度剖析:伪装成加密工具的致命数据擦除器

2026年4月28日&#xff0c;Check Point Research发布的技术报告震惊了全球网络安全界&#xff1a;近期肆虐的VECT 2.0勒索软件并非传统意义上的"文件加密工具"&#xff0c;而是一款存在致命设计缺陷的"数据销毁器"。对于任何超过128KB的文件&#xff0c;VE…...

XML数据解析与节点配置实操案例教程

XML数据解析与节点配置实操案例教程 一、文档概述 XML作为可扩展标记语言&#xff0c;具备结构清晰、跨平台兼容、自定义标签灵活的特性&#xff0c;广泛应用于配置文件存储、系统数据交互、接口报文传输、软件参数定义等开发场景。无论是后端服务配置、桌面应用参数读写&#…...