当前位置:首页>python>一个不会写代码的铲屎官,如何用AI和Python让自家猫咪自动发笔记?

一个不会写代码的铲屎官,如何用AI和Python让自家猫咪自动发笔记?

  • 2026-09-08 04:30:23
一个不会写代码的铲屎官,如何用AI和Python让自家猫咪自动发笔记?

🐱 我用代码让家里的黑猫成了小红书博主

📖 故事背景

家里养了一只黑猫,名字叫妮妮。她傲娇、贪吃,尤其喜欢在元宵节盯着汤圆看。突发奇想:能不能让妮妮自己当小红书博主?不用我动手,就能自动生成笔记、配图、发布,偶尔卖个萌吸粉。

于是,有了这个项目——妮妮的元宵节小红书自动发布。

🎯 项目目标

让家里的黑猫“妮妮”成为小红书博主,自动发布一篇元宵节主题笔记。

  • 猫咪视角第一人称文案
  • 真实猫咪照片
  • 从登录到发布全自动
  • 最终能在小红书个人主页看到笔记

📋 发布内容预览

标题《本喵的元宵节:汤圆是什么好吃的?》

正文(猫咪第一人称)喵~元宵节到了!铲屎官端来一碗白白圆圆的东西凑近闻了闻,糯糯香香的,芝麻馅儿直往鼻子里钻!可是!为什么不能给本喵吃啊?!铲屎官说什么糯米不好消化,还可能有木糖醇...看在芝麻馅儿这么香的份上,就原谅这个“猫猫禁食”的节日美食了!元宵节快乐呀,两脚兽们!

🛠️ 技术栈

组件
版本/工具
浏览器
Microsoft Edge 145.0
自动化框架
Selenium WebDriver
编程语言
Python 3.x
Cookie管理
xhs-toolkit
目标平台
小红书创作者服务平台

🔄 自动化发布流程

整个发布就像一条流水线,每一步都由代码自动完成:

  • 加载Cookie → 从 xhs_cookies.json 读取已登录状态
  • 访问小红书主站 → www.xiaohongshu.com 注入Cookie
  • 跳转创作者发布页 → creator.xiaohongshu.com/publish/publish
  • 切换图文模式 → 点击“上传图文”选项卡
  • 上传图片 → 通过JavaScript创建file input并发送图片路径
  • 输入标题 → 用JS直接设置input value并触发事件
  • 输入正文 → 用JS设置innerText并触发input/change事件
  • 点击发布按钮 → 多重选择器定位,确保找到
  • 验证成功 → URL出现 published=true,页面重置

⚠️ 踩坑与填坑(最精华的部分)

问题1:浏览器驱动选择

尝试
结果
原因
ChromeDriver
❌失败
没装Chrome,找不到驱动
EdgeDriver
✅成功
系统自带Edge,驱动匹配

结论:用系统自带的Edge,省去安装Chrome的麻烦。

问题2:文件上传不触发对话框

# ❌ 错误示范:直接点击上传按钮upload_button.click()   # 没反应,因为input是隐藏的# ✅ 正确姿势:创建隐藏的file input并send_keysdriver.execute_script("""    var input = document.createElement('input');    input.type = 'file';    input.accept = 'image/*';    document.body.appendChild(input);""")file_input.send_keys(image_path)

问题3:中文/Emoji输入乱码

# ❌ 直接send_keys可能乱码或漏字符element.send_keys("喵~🍡")# ✅ 使用JavaScript直接设置,并手动触发事件driver.execute_script("""    arguments[0].innerText = arguments[1];    arguments[0].dispatchEvent(new Event('input', { bubbles: true }));    arguments[0].dispatchEvent(new Event('change', { bubbles: true }));""", element, content)

问题4:控制台输出乱码

在脚本开头添加:

os.system('chcp 65001 > nul')   # 切换控制台编码为UTF-8

问题5:发布按钮定位不到

小红书页面按钮可能有多种写法,用选择器列表逐个尝试:

selectors = [    "//button[contains(text(), '发布')]",    "//button[.//text()='发布']",    "button[class*='publish']",]for selector in selectors:    try:        button = driver.find_element(By.XPATH, selector)        break    except:        continue

📝 核心代码片段(精选)

Cookie加载

with open('xhs_cookies.json', 'r', encoding='utf-8') as f:    cookies_data = json.load(f)cookies = cookies_data.get('cookies', [])for cookie in cookies:    driver.add_cookie({        'name': cookie['name'],        'value': cookie['value'],        'domain': '.xiaohongshu.com',        'path': '/',    })

图片上传完整逻辑

# 创建/查找文件输入框result = driver.execute_script("""    var inputs = document.querySelectorAll('input[type="file"]');    if (inputs.length === 0) {        var input = document.createElement('input');        input.type = 'file';        input.accept = 'image/*';        document.body.appendChild(input);    }    return inputs.length;""")# 上传文件file_input = driver.find_element(By.CSS_SELECTOR, 'input[type="file"]')file_input.send_keys(image_path)

标题与正文填充

# 标题driver.execute_script("""    arguments[0].value = arguments[1];    arguments[0].dispatchEvent(new Event('input', { bubbles: true }));    arguments[0].dispatchEvent(new Event('change', { bubbles: true }));""", title_input, title)# 正文(支持换行和emoji)driver.execute_script("""    arguments[0].innerText = arguments[1];    arguments[0].dispatchEvent(new Event('input', { bubbles: true }));    arguments[0].dispatchEvent(new Event('change', { bubbles: true }));""", content_input, content)

✅ 成功标志

脚本运行结束后,检查:

  • URL变化:页面跳转到 https://creator.xiaohongshu.com/publish/publish?published=true
  • 页面重置:发布页回到初始上传状态
  • 无错误弹窗:控制台无异常,浏览器无红字提示
  • 打开小红书App,个人主页已经出现了妮妮的第一篇笔记!🎉

💡 经验总结 & 最佳实践

关键点
建议
Cookie有效期
定期重新获取,避免登录过期
图片格式
使用jpg/png,大小<32MB
内容长度
正文控制在1000字以内,过长可能被截断
话题标签
5-10个相关标签,增加曝光
发布时间
晚间19:00-22:00流量最佳

🔗 相关资源

  • 脚本位置:替换为你的本地脚本路径
  • Cookie文件:替换为你的本地Cookie文件路径
  • 图片素材:替换为你的本地图片素材路径

🐾 后记

第一次跑通脚本时,看着浏览器自动打开、填写、点击,最后跳出“发布成功”,那种成就感难以形容。虽然第二天笔记就被平台风控了(笑),但这趟技术探索让我收获满满:

  • 从完全不懂代码,到能看懂Selenium报错
  • 从手动复制粘贴,到享受自动化的快感
  • 给自家猫咪建了个“数字分身”,感觉她真的活在了互联网里

⚠️ 不足与反思:第二天就被平台禁了!

就在我沉浸在“发布成功”的喜悦中时,第二天打开小红书,发现妮妮的笔记已经被删除,账号也收到了“操作异常”的警告。这说明基础的自动化脚本触碰了平台的风控红线。

🧐 为什么会这样?

  • Selenium的自动化特征太明显
    :用Selenium启动的浏览器会留下`navigator.webdriver`为`true`的指纹,还有固定的启动参数、窗口尺寸等,很容易被风控系统识别为“机器人”。
  • 操作节奏过于规律
    :脚本里用的是固定的`time.sleep(3)`,每次点击间隔一模一样,真人可不会这么精确。
  • 缺少真实用户行为痕迹
    :浏览器是全新的实例,没有浏览历史、cookies、缓存,就像个刚出厂的手机,太可疑了。

🔧 后续技术改进方向(写给同样想尝试的朋友)

如果你也想做类似的自动化,又希望账号活得久一点,可以考虑以下升级方案:

  1. 改用更隐蔽的自动化工具
    放弃Selenium,改用 Playwright 的 CDP模式(Chrome DevTools Protocol)。这种模式可以直接连接你日常使用的浏览器(比如你正在看网页的Edge),让它“亲手”操作小红书,而不是新造一个机器人。这样所有的浏览器指纹、历史记录、登录态都是真实的,风控很难察觉。
  2. 模拟真人的操作节奏
    - 在每次点击前加入随机等待,比如`random.uniform(1.5, 3.5)`秒。- 用`page.mouse.move()`模拟鼠标的自然移动轨迹,而不是直接跳到按钮上点击。- 输入文字时模拟逐字敲击的延迟,比如每个字符间隔50~150毫秒。
  3. 使用真实的用户数据目录
    启动浏览器时指定一个固定的用户数据目录(`--user-data-dir`),这样每次运行都复用同一个浏览器环境,包含cookies、历史记录、扩展,看起来更像真人。
  4. 定时更新Cookie,避免长期暴露
    Cookie会过期,可以写个小脚本每个月重新扫码登录一次。
  5. 内容策略也要优化
    不要每天固定时间发,发布频率和时段要随机化。话题标签别堆太多,5~8个精准的就好。

这次我真正理解了“反爬”与“反反爬”的博弈。技术总是在对抗中进步,而每一次踩坑都是宝贵的经验。希望妮妮的下一版脚本能更“人类”,走得更远~

如果你也对AI自动化、宠物博主感兴趣,欢迎留言交流。也许下次,妮妮会发一篇“我是如何被代码控制的”独白呢?

最新文章

随机文章