s1cli
Stage1st (S1) 论坛命令行工具,基于 s1cli Python 包。支持登录/登出、浏览版块和帖子、发帖/回帖、搜索帖子、每日签到、查看个人信息、配置管理。当用户询问「S1」「Stage1st」「一阶段论坛」的操作,或要求浏览/发帖/搜索/签到/回帖时使用此 skill。需要已安装 s1cli(pip...
MIT-0 · Free to use, modify, and redistribute. No attribution required.
⭐ 0 · 191 · 1 current installs · 1 all-time installs
byEski Yin@Geoion
MIT-0
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
名称/描述与 SKILL.md 中的行为一致:说明如何使用 s1cli 包进行登录、浏览、发帖、回帖、签到等论坛操作。没有要求与功能无关的环境变量或外部服务。
Instruction Scope
运行说明限定为调用本地命令(python3 -m s1cli ...),示例还包含如何用 subprocess 解析 --json 输出。没有指示读取系统范围内的凭据或其他不相关文件,只提及并定位其会话文件 (~/.config/s1cli/session.toml),这是合理且与功能相关。
Install Mechanism
注册表中无 install spec(instruction-only),但 README 建议通过 pip install 或从 GitHub 克隆并 pip install -e 安装 —— 这是常见做法。不过任何 pip install 或 git clone 都会在本地执行第三方代码;建议在受控环境(虚拟环境或容器)中安装并检查包来源。
Credentials
skill 不要求额外环境变量或凭据。它确实要求用户进行论坛登录(交互地提供用户名/密码),并在本地保存会话文件(cookies)到 ~/.config/s1cli/session.toml,这与论坛操作的目的相符。
Persistence & Privilege
flags: always 为 false(默认),没有要求长期驻留或修改其他技能/系统配置。会话文件写入到用户配置目录是正常行为且与功能相符。
Assessment
这项技能是说明如何调用本地的 s1cli 命令行工具,而不是自带可执行代码;在安装或使用前请:
- 验证 s1cli 的来源(PyPI 包名或 GitHub https://github.com/Geoion/s1cli.git),优先从可信源安装;
- 在虚拟环境或受控容器中进行 pip install,以避免把未审查的包安装到全局环境;
- 注意你需要在本地提供论坛用户名/密码以运行 login,登录信息会以会话(cookies)形式保存在 ~/.config/s1cli/session.toml,妥善保护该文件;
- 该 skill 会通过运行本地命令与你的环境交互(python3 -m s1cli),如果你不信任本地安装的 s1cli 实现或代码库,不要安装或调用它;
- 若担心自动化风险,可限制代理的自动调用权限或仅在手动触发下使用该 skill。Like a lobster shell, security has layers — review code before you run it.
Current versionv1.1.0
Download ziplatest
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
SKILL.md
s1cli — Stage1st 论坛 CLI
安装
# PyPI(如已发布)
pip3 install s1cli
# 或从源码
git clone https://github.com/Geoion/s1cli.git && cd s1cli && pip3 install -e .
安装后用 python3 -m s1cli --help 确认(某些环境 PATH 里没有 s1cli 直接命令,但 python3 -m s1cli 始终有效)。
依赖:SOCKS 代理支持
若环境配置了 SOCKS 代理,登录时会报错:
Using SOCKS proxy, but the 'socksio' package is not installed.
修复方法(注意 zsh 下方括号需要加引号):
pip3 install "httpx[socks]" socksio
⚠️ zsh 中不能写
pip3 install httpx[socks](方括号会被 shell 解释),必须加引号。
命令速查
# 登录 / 登出
python3 -m s1cli login # 交互输入用户名密码
python3 -m s1cli login -u USER -p PASS
python3 -m s1cli logout
# 版块 & 帖子列表
python3 -m s1cli list # 列出所有版块(含 ID)
python3 -m s1cli list <forum_id> # 列出版块帖子(用 ID)
python3 -m s1cli list <forum_id> -p 2 # 第 2 页
python3 -m s1cli list <forum_id> --json # JSON 输出(见下方解析说明)
# 查看帖子
python3 -m s1cli thread <thread_id>
python3 -m s1cli thread <thread_id> -p 2 # 第 2 页
# 发帖 / 回帖
python3 -m s1cli post -f <forum_name> -t "标题" -c "内容"
python3 -m s1cli reply <thread_id> -c "回复内容"
# 搜索
python3 -m s1cli search "关键词"
python3 -m s1cli search "关键词" -f <forum_name>
# 个人功能
python3 -m s1cli checkin # 每日签到
python3 -m s1cli profile # 个人信息
# 配置
python3 -m s1cli config show
python3 -m s1cli config set theme=dark
--json 输出解析说明
--json 模式下,stdout 第一行是进度提示文字(非 JSON),从第二行起才是 JSON 数组。
不能直接 json.load(sys.stdin),需跳过第一行:
import subprocess, json
result = subprocess.run(
['python3', '-m', 's1cli', 'list', '<forum_id>', '--json'],
capture_output=True, text=True
)
# 跳过第一行进度提示,剩余部分是完整 JSON
lines = result.stdout.split('\n', 1)
data = json.loads(lines[1])
for t in data:
print(f"回{t['replies']:>5} 看{t['views']:>7} | {t['title'][:55]} — {t['author']}")
使用流程
- 首次使用:运行
login保存会话(7 天有效,到期后重新登录) - 找版块 ID:先
list列出所有版块,记下目标版块的数字 ID - 浏览帖子:
list <forum_id>查看帖列,找到目标thread_id - 查看 / 互动:
thread <thread_id>阅读内容,reply回帖
注意事项
- 版块参数:
list和thread用数字 ID;post/search的-f用版块名(中文也可) - 发帖/回帖:需要已登录;内容支持普通文本和 BBCode
- 频率限制:工具内置随机 0.5-2s 延迟,批量操作不要在脚本中绕过
- 会话文件:
~/.config/s1cli/session.toml(7 天过期)
常见问题
| 错误 | 原因 | 解法 |
|---|---|---|
s1cli: command not found | PATH 未包含脚本目录 | 改用 python3 -m s1cli |
socksio package is not installed | 缺少 SOCKS 依赖 | pip3 install "httpx[socks]" socksio |
zsh: no matches found: httpx[socks] | zsh 吞掉方括号 | 必须加引号:"httpx[socks]" |
JSONDecodeError: Expecting value | 直接解析含进度文字的 stdout | 跳过第一行再解析,见上方示例 |
| 登录失败 | 账号密码错误或网络问题 | 确认能访问 bbs.saraba1st.com |
| 找不到版块 | 版块名/ID 不对 | 先 python3 -m s1cli list 查 ID |
更多详情见 references/commands.md。
Files
2 totalSelect a file
Select a file to preview.
Comments
Loading comments…
