
social-auto-upload 小红书上传 Skillsau CLI 的登录、cookie 校验与视频/图文发布实战【免费下载链接】social-auto-upload自动化上传视频到社交媒体抖音、小红书、视频号、tiktok、youtube、bilibili项目地址: https://gitcode.com/GitHub_Trending/so/social-auto-upload本文围绕skills/xiaohongshu-upload/SKILL.md及其配套参考文档展开完整讲解 social-auto-upload 项目中sauCLI 的小红书子命令体系如何通过login生成或刷新账号 cookie、用check校验 cookie 有效性、用upload-video/upload-note发布视频与图文笔记。读完后你可以不阅读任何 uploader 源码仅凭命令契约和参数说明就在本地或 Agent 环境中搭起一条稳定、可复现的小红书自动化发布工作流。Skill 的定位以 sau CLI 为主接口social-auto-upload 是一个支持抖音、小红书、视频号、TikTok、YouTube、Bilibili 等多平台自动上传的项目。在“让 AI Agent 稳定操作平台”这个场景下直接阅读 uploader/ 下的浏览器自动化源码成本高、易漂移因此项目把小红书的操作封装成了一个 Skillskills/xiaohongshu-upload/SKILL.md。该 Skill 给执行者人或 Agent定下了三条纪律这也是整篇文档的骨架优先把sau作为主接口。所有小红书操作都通过sau xiaohongshu ...子命令完成而不是去调 Python 模块。不要假设当前环境一定能读取仓库源码也不要一开始就去读uploader/目录。只有在命令不可用或 CLI 执行失败时才回退到故障排查说明references/troubleshooting.md。这种设计把“使用面”和“实现面”明确切开Skill 文档负责命令契约源码uploader/xiaohongshu_uploader/main.py 等只作为契约背后的实现支撑。功能概览与元数据约定Skill 定义了四个核心动作构成小红书自动化的最小闭环功能命令入口说明小红书登录sau xiaohongshu login --account name生成或刷新指定账号的 cookiecookie 校验sau xiaohongshu check --account name检查指定账号 cookie 是否有效视频上传sau xiaohongshu upload-video ...上传并发布小红书视频图文上传sau xiaohongshu upload-note ...上传并发布小红书图文四类动作对应不同的元数据约定这一约定在整个 CLI 契约中反复出现视频使用title desc tags标题、视频描述、逗号分隔的话题标签图文使用title note tags标题、图文正文、逗号分隔的话题标签。这一点在源码层面可以得到印证。sau_cli.py 中定义了两个请求数据类XiaohongshuVideoUploadRequest含video_file、title、description、tags、thumbnail_file等字段和XiaohongshuNoteUploadRequest含image_files、title、note、tags等字段与文档中的元数据约定一一对应——视频多一个可选封面字段图文多一个note正文字段而--thumbnail在图文命令中并不存在这与契约文档“upload-note没有--thumbnail”的描述一致。默认工作流先前提后契约再执行SKILL.md 给出的默认工作流是一个严格的四步顺序先确认 references/runtime-requirements.md 里的运行前提再确认 references/cli-contract.md 里的命令契约执行匹配的sau xiaohongshu ...命令如果命令失败再看 references/troubleshooting.md。这个顺序的隐含逻辑是绝大多数“不会用”的问题都出在环境层sau 是否可调用、浏览器是否安装而不是命令层。因此排障时也应逆向操作先验证环境再怀疑参数。运行前提详解runtime-requirements.md 声明该 Skill 默认假设当前环境已经具备已安装social-auto-upload可以调用sau命令或至少有等效调用方式已为patchright安装 Chromium。推荐安装方式是在项目根目录执行uv pip install -e .安装 patchright 浏览器。由于浏览器二进制体积大文档给出了走国内镜像的安装方式Windows PowerShell$env:PLAYWRIGHT_DOWNLOAD_HOSThttps://npmmirror.com/mirrors/playwright; patchright install chromiumLinux / macOSbash / zshPLAYWRIGHT_DOWNLOAD_HOSThttps://npmmirror.com/mirrors/playwright patchright install chromium常见调用方式按“sau 是否已经在 PATH 中”分为四种场景sau已在 PATH 中直接sau xiaohongshu --help虚拟环境存在但未激活PowerShell.\.venv\Scripts\Activate.ps1 sau xiaohongshu --help直接调用可执行文件PowerShell.\.venv\Scripts\sau.exe xiaohongshu --help倾向使用 uv 时uv run sau xiaohongshu --help无头和有头模式使用--headless表示无头模式--headed表示有头模式。文档特别提示即使用户明确要求无头登录也要预期 CLI 会通过控制台输出或临时图片路径提供二维码相关提示如果登录过程中已经生成了本地二维码图片agent 应优先直接把图片展示/发送给用户扫码而不是只回传图片路径。从源码看这一模式约定由 sau_cli.py 中的add_runtime_flags统一注入--headless与--headed被放进add_mutually_exclusive_group()互斥组且通过parser.set_defaults(headlessTrue)设置——即两个 flag 都不传时小红书上传与登录默认运行在无头模式这是契约文档未明说、但由源码结构确认的默认行为。CLI 命令契约四个子命令的完整参数说明以下参数说明完整继承自 references/cli-contract.md并与 sau_cli.py 中的 argparse 定义核对一致。login登录并生成 cookiesau xiaohongshu login --account account必填参数--account。作用启动小红书登录流程为指定账号生成或刷新 cookie 文件。如果登录过程中生成本地二维码图片agent 应优先直接把图片展示/发送给用户扫码而不是只回传路径。账号说明--account传的是用户自定义的account_name不是固定只能叫creator一个account_name对应一个账号文件可用于多账号隔离和并发任务。这里的“一个 account_name 对应一个账号文件”在源码中可以直接验证resolve_account_file 会把账号文件解析为cookies/{platform}_{account_name}.json即cookies/xiaohongshu_account_name.json并确保cookies/目录存在。因此多账号并发时每个账号拥有独立的 cookie 文件天然互不干扰。对应的 CLI 处理函数 login_xiaohongshu_account 会调用 uploader 层导出的xiaohongshu_setup以handleTrue, return_detailTrue的方式执行登录并把明细结果返回给 CLI 输出。check校验 cookie 是否有效sau xiaohongshu check --account account必填参数--account。预期输出valid表示 cookie 可用invalid表示 cookie 缺失或已失效。从源码看check_xiaohongshu_account 的逻辑分两步账号文件不存在时直接返回无效否则调用 uploader 层导出的xiaohongshu_cookie_auth做有效性验证。所以check是一个廉价的“先探测”动作——在昂贵的上传操作之前先跑一遍可以尽早暴露 cookie 问题。upload-video上传视频sau xiaohongshu upload-video \ --account account \ --file video-path \ --title title \ [--desc description] \ [--tags tag1,tag2] \ [--schedule YYYY-MM-DD HH:MM] \ [--thumbnail image-path] \ [--debug] \ [--headless | --headed]必填参数--account、--file、--title可选参数--desc、--tags、--schedule、--thumbnail、--debug、--headless、--headed。upload-note上传图文sau xiaohongshu upload-note \ --account account \ --images image-1 [image-2 ...] \ --title title \ [--note content] \ [--tags tag1,tag2] \ [--schedule YYYY-MM-DD HH:MM] \ [--debug] \ [--headless | --headed]必填参数--account、--images、--title可选参数--note、--tags、--schedule、--debug、--headless、--headed。参数背后的源码细节契约文档给出的是参数名而参数在 sau_cli.py 的解析规则提供了更细的约束--file与--images会做存在性校验。解析器对文件路径使用了existing_file_path类型见 sau_cli.py文件不存在时直接抛出ArgumentTypeError: File not found: ...不会进入上传流程。--images声明为nargs因此支持一次传多张图片与“upload-note每次命令支持多张图片”的说明对应而upload-video的--file是单值参数对应“每次命令只支持一个视频文件”。--tags是逗号分隔字符串且容忍#前缀。parse_tags 按逗号切分后逐项strip().lstrip(#)所以--tags #视频, #自动化会被规范成[视频, 自动化]。--schedule有严格的格式校验。时间格式由常量SCHEDULE_FORMAT %Y-%m-%d %H:%M定义sau_cli.pyschedule_value解析失败时会以“Invalid schedule value. Expected format: YYYY-MM-DD HH:MM”的形式报错。不传--schedule时parse_schedule返回0表示立即发布——这正是契约文档中“发布策略”一节的实现依据不传--scheduleCLI 使用立即发布传了--scheduleCLI 自动切换为定时发布时间格式固定为YYYY-MM-DD HH:MM。--debug/--headless/--headed由统一的运行时 flag 注入见前文add_runtime_flags的说明。cookie 失效时的报错是可自解释的。当 cookie 缺失或过期时upload_xiaohongshu_video 和 upload_xiaohongshu_note 会先执行 cookie 就绪检查未通过则抛出类似“Xiaohongshu cookie is missing or expired: account_file. Run \sau xiaohongshu login --account first.”的错误信息直接告诉用户该执行哪条修复命令——这也是排障文档“cookie 无效或已过期”一节的底层依据。命令选择建议与执行前检查SKILL.md 为“该用哪个命令”给出了明确的决策规则当用户需要新的 cookie或现有 cookie 已失效时使用login当用户只需要确认 cookie 状态时使用check当用户要发布视频时使用upload-video当用户要发布图文时使用upload-note。在执行任何上传命令之前文档要求完成一组执行前检查先确认当前 shell 里是否可以调用sau如果sau不可用按 runtime-requirements.md 里的回退方式处理当用户明确指定无头或有头模式时显式传--headless或--headed呼应源码中的默认无头行为只有用户明确要求定时发布时才使用--schedule如果登录流程生成了本地二维码图片不要只把图片路径告诉用户——二维码图片本身就是给用户扫码的应优先直接把本地图片展示/发送给用户。模板文件可复制的稳定命令模板当需要一条“照着改就能跑”的命令模板时Skill 指向scripts/examples/目录下的三个文件xiaohongshu_commands.shxiaohongshu_commands.ps1xiaohongshu_cli_template.py其中 bash 模板展示了完整的“登录 → 校验 → 发视频 → 发图文”四步链路开头声明set -euo pipefail任一命令失败即中断accountaccount_a videovideos/demo.mp4 thumbnailvideos/demo.png sau xiaohongshu login --account $account --headless sau xiaohongshu check --account $account sau xiaohongshu upload-video \ --account $account \ --file $video \ --title Xiaohongshu video from bash \ --desc Xiaohongshu video description from bash \ --tags cli,video \ --thumbnail $thumbnail \ --headless sau xiaohongshu upload-note \ --account $account \ --images videos/1.png videos/2.png \ --title Xiaohongshu note title from bash \ --note Xiaohongshu note from bash \ --tags cli,note \ --headless注意模板里引用的videos/demo.mp4与videos/demo.png正是仓库中真实存在的示例素材videos/demo.mp4、videos/demo.png可以拿来在本地做端到端验证。脚本顶部的注释还强调了多账号思路“account_name is user-defined. One account_name maps to one account file. You can prepare multiple account names and run them in parallel.”——配合前文cookies/xiaohongshu_name.json的账号文件隔离机制多账号并行发布是这套 CLI 的明确设计目标。故障排查手册以下内容完整覆盖 references/troubleshooting.md。找不到 sau 命令依次尝试.\.venv\Scripts\Activate.ps1 sau xiaohongshu --help.\.venv\Scripts\sau.exe xiaohongshu --helpuv run sau xiaohongshu --help如果当前环境还没有安装项目uv pip install -e .cookie 无效或已过期先检查 cookie 状态再决定是否重新登录sau xiaohongshu check --account account如果无效就重新登录sau xiaohongshu login --account account无头登录二维码处理如果用户无法使用终端二维码输出查找 CLI 打印出来的临时二维码图片agent 不要只把图片路径回给用户应优先直接把本地二维码图片展示/发送给用户扫码如果终端二维码显示不正常优先使用保存下来的图片路径而不是反复尝试随机的终端设置。上传参数缺失视频上传最少需要--account、--file、--title。图文上传最少需要--account、--images、--title--note当前是可选的图文正文。定时发布时间格式使用YYYY-MM-DD HH:MM如果不需要定时发布去掉--schedule即可改为立即发布。小结skills/xiaohongshu-upload/这套 Skill 文档把小红书自动化收敛为一套“登录 → 校验 → 发布”的命令契约login生成cookies/xiaohongshu_account_name.json账号文件check以valid/invalid两态报告 cookie 状态upload-video与upload-note分别以title desc tags和title note tags两类元数据完成发布并通过--schedule在立即/定时发布之间切换。文档的价值在于把环境前提uv 安装、patchright Chromium、命令契约参数必填性与格式、执行纪律二维码图片直接展示给用户和排障路径全部显式化而 sau_cli.py 中的 argparse 定义、账号文件解析与 cookie 就绪检查则为这套契约提供了源码级的可验证依据。对于只想“用”而不想“读源码”的开发者与 Agent这份 Skill 文档本身就是一份自洽的操作手册。【免费下载链接】social-auto-upload自动化上传视频到社交媒体抖音、小红书、视频号、tiktok、youtube、bilibili项目地址: https://gitcode.com/GitHub_Trending/so/social-auto-upload创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考