关于 mod-actions
mod-actions 是面向 Civitai 版主的命令行审核工具集,通过 Civitai tRPC API 执行操作。它覆盖用户、违规记录、图像、举报、生成内容、模型及 NCMEC/CSAM 报告等审核领域。
主要功能
- 01查询用户并管理封禁与禁言
- 02查看、创建和撤销违规记录
- 03审核图像及相关举报
- 04处理生成内容限制与模型审核
- 05管理 3D 模型及 CSAM 报告
适用场景
- 01核查用户违规记录并采取管理措施
- 02处理图像队列和内容举报
- 03审核生成内容限制与模型状态
- 04创建或查询 CSAM 报告
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ civitai/ civitai --skill mod-actions安装后在 Claude Code 中输入/mod-actions确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.env.examplecontent.mjscsam.mjsgeneration.mjsimages.mjslib.mjsmodel3ds.mjsquery.mjsreports.mjsstrikes.mjs详细介绍
Moderator Actions
Civitai 综合审核工具包。涵盖用户操作、违规记分管理、图片审核、举报处理、生成内容审核、内容/训练审核,以及 NCMEC/CSAM 举报。
所有脚本均使用 Civitai tRPC API 进行 Bearer 令牌身份验证,确保操作通过正确的服务层执行,并完整触发相关副作用。
Setup
- 将
.env-example复制到此技能目录中的.env - 添加你的 Civitai API 密钥(必须属于审核员账户)
- 可选设置 API URL(默认使用生产环境)
cp .claude/skills/mod-actions/.env.example .claude/skills/mod-actions/.env
# Edit .env and add your API key
重要: API 密钥必须属于具有审核员权限的用户。
| 变量 | 必填 | 默认值 | 描述 |
|---|---|---|---|
CIVITAI_API_KEY | 是 | - | 你的 Civitai API 密钥 |
CIVITAI_API_URL | 否 | https://civitai.com | API 基础 URL |
技能文件
| 文件 | 领域 | 命令 |
|---|---|---|
query.mjs | 用户审核 | user、ban、mute、leaderboard、remove-content、dm |
strikes.mjs | 违规记分系统 | get-user、standings、list、create、void |
images.mjs | 图片审核 | review-queue、review-counts、moderate、tos-violation、rescan、report-csam、poi-tags、user-images、rating-requests、ingestion-errors、resolve-ingestion、downleveled、pending-ingestion、toggle-flag |
reports.mjs | 举报处理 | list、set-status、bulk-status、update、appeals、appeal-details、resolve-appeal |
generation.mjs | 生成内容审核 | flagged-consumers、flagged-reasons、consumer-strikes、review-strikes、user-generations、restrictions、resolve-restriction、allowlist-add、debug-audit、todays-counts、suspicious-matches |
content.mjs | 内容审核 | models、flagged-models、resolve-flagged、model-versions、rescan-model、restore-model、toggle-cannot-promote、toggle-cannot-publish、articles、mod-rule |
model3ds.mjs | 3D 模型审核 | list、get、files、unpublish、delete、restore、set-nsfw-level、toggle-tos、toggle-poi、toggle-minor、toggle-nsfw、toggle-unlisted |
csam.mjs | NCMEC/CSAM 举报 | reports、stats、image-resources、create-report |
query.mjs — 用户审核
node .claude/skills/mod-actions/query.mjs <command> [options]
| 命令 | 描述 |
|---|---|
user <id|username> | 查询用户信息 |
ban <id|username> | 切换封禁状态 |
mute <id|username> | 切换禁言状态 |
leaderboard <id|username> <true|false> | 设置排行榜资格 |
remove-content <id|username> | 移除用户的所有内容(破坏性操作) |
dm <id|username> | 发送私信(需要 --message) |
选项: --json、--dry-run、--reason <code>、--message <text>、--internal <text>
封禁原因代码: SexualMinor、SexualMinorGenerator、SexualMinorTraining、SexualPOI、Bestiality、Scat、Nudify、Harassment、SpamBot、LeaderboardCheating、BuzzCheating、RRDViolation、Other
node .claude/skills/mod-actions/query.mjs user 3879899
node .claude/skills/mod-actions/query.mjs ban 3879899 --reason Other --message "ToS violation" --dry-run
node .claude/skills/mod-actions/query.mjs dm 3879899 --message "Please review our guidelines"
strikes.mjs — 违规记分系统
node .claude/skills/mod-actions/strikes.mjs <command> [options]
| 命令 | 读/写 | 描述 |
|---|---|---|
get-user <userId> | READ | 查询用户的违规记分历史 |
standings | READ | 用户状态列表(筛选:active/muted/flagged) |
list | READ | 带筛选条件的分页违规记分列表 |
create <userId> | WRITE | 记一次违规分(需要 --reason、--description) |
void <strikeId> | WRITE | 作废一次违规记分(需要 --reason) |
违规原因: BlockedContent、RealisticMinorContent、CSAMContent、TOSViolation、HarassmentContent、ProhibitedContent、ManualModAction
选项: --reason、--description、--points <1-3>、--entity-type、--entity-id、--report-id、--expires-days、--status <Active,Expired,Voided>、--sort <points|score|lastStrike|created>、--sort-order <asc|desc>、--flagged-for-review、--has-active-strikes、--page、--limit、--json、--dry-run
node .claude/skills/mod-actions/strikes.mjs get-user 3879899
node .claude/skills/mod-actions/strikes.mjs standings --has-active-strikes --limit 10
node .claude/skills/mod-actions/strikes.mjs create 3879899 --reason BlockedContent --description "Uploaded prohibited content" --points 1 --dry-run
node .claude/skills/mod-actions/strikes.mjs void 42 --reason "False positive from scanner"
images.mjs — 图片审核
node .claude/skills/mod-actions/images.mjs <command> [options]
| 命令 | 读/写 | 描述 |
|---|---|---|
review-queue | READ | 图片审核队列 |
review-counts | READ | 队列标签页计数 |
moderate <ids> <action> | WRITE | 屏蔽/解除屏蔽图片 |
tos-violation <imageId> | WRITE | 标记为违反 TOS |
rescan <imageId> | WRITE | 重新摄取/扫描图片 |
report-csam <imageIds> | WRITE | 举报包含 CSAM 的图片 |
poi-tags | READ | 关注对象标签 |
user-images <userId> | READ | 用户的所有图片 |
rating-requests | READ | NSFW 评级审核请求 |
ingestion-errors | READ | 存在摄取错误的图片 |
resolve-ingestion <id> | WRITE | 解决摄取错误 |
downleveled | READ | 已降级的图片 |
pending-ingestion | READ | 待摄取的图片 |
toggle-flag <imageId> | WRITE | 切换图片标记 |
选项: --ids、--action、--review-type、--cursor、--page、--limit、--json、--dry-run
node .claude/skills/mod-actions/images.mjs review-counts
node .claude/skills/mod-actions/images.mjs review-queue --limit 20
node .claude/skills/mod-actions/images.mjs moderate 12345,67890 block --dry-run
node .claude/skills/mod-actions/images.mjs user-images 3879899 --json
node .claude/skills/mod-actions/images.mjs rescan 12345
reports.mjs — 举报处理
node .claude/skills/mod-actions/reports.mjs <command> [options]
| 命令 | 读/写 | 描述 |
|---|---|---|
list | READ | 按实体类型列出举报(需要 --type) |
set-status <reportId> <status> | WRITE | 设置举报状态 |
bulk-status <status> | WRITE | 批量更新状态(需要 --ids) |
update <reportId> | WRITE | 更新举报状态/备注 |
appeals | READ | 最近的申诉 |
appeal-details <id> | READ | 申诉详情 |
resolve-appeal | WRITE | 处理申诉(需要 --ids、--entity-type、--status) |
举报实体类型: model、comment、commentV2、image、resourceReview、article、post、reportedUser、collection、bounty、bountyEntry、chat、comicProject
举报状态: Pending、Processing、Actioned、Unactioned
申诉状态: Pending、Approved、Rejected
选项: --type、--status、--ids、--entity-type、--internal、--message、--user-id、--start-date、--page、--limit、--query、--json、--dry-run
node .claude/skills/mod-actions/reports.mjs list --type image --limit 20
node .claude/skills/mod-actions/reports.mjs set-status 456 Actioned --dry-run
node .claude/skills/mod-actions/reports.mjs bulk-status Actioned --ids 1,2,3
node .claude/skills/mod-actions/reports.mjs appeals --user-id 3879899
node .claude/skills/mod-actions/reports.mjs resolve-appeal --ids 10,11 --entity-type Image --status Approved
generation.mjs — 生成内容审核
node .claude/skills/mod-actions/generation.mjs <command> [options]
| 命令 | 读/写 | 描述 |
|---|---|---|
flagged-consumers | READ | 被标记的生成内容使用者 |
flagged-reasons | READ | 标记原因 |
consumer-strikes <userId> | READ | 使用者的生成内容违规记录 |
review-strikes <userId> | WRITE | 将违规记录标记为已审核 |
user-generations <userId> | READ | 用户生成的图片 |
restrictions | READ | 所有生成内容限制 |
resolve-restriction <id> | WRITE | 处理限制(Upheld/Overturned) |
allowlist-add | WRITE | 将提示词触发词加入允许列表 |
debug-audit <prompt> | READ | 测试提示词审查 |
todays-counts | READ | 今日违规请求计数 |
suspicious-matches | READ | 已保存的可疑审查匹配项 |
选项: --status <Pending|Upheld|Overturned>、--reason、--start-date、--message、--trigger、--category、--negative-prompt、--user-id、--username、--restriction-id、--page、--limit、--json、--dry-run
node .claude/skills/mod-actions/generation.mjs flagged-consumers
node .claude/skills/mod-actions/generation.mjs consumer-strikes 3879899
node .claude/skills/mod-actions/generation.mjs restrictions --status Pending
node .claude/skills/mod-actions/generation.mjs resolve-restriction 42 --status Upheld --message "Confirmed violation" --dry-run
node .claude/skills/mod-actions/generation.mjs debug-audit "some prompt text"
node .claude/skills/mod-actions/generation.mjs allowlist-add --trigger "girl" --category "age" --reason "False positive"
content.mjs — 内容审核
node .claude/skills/mod-actions/content.mjs <command> [options]
| Command | R/W | Description |
|---|---|---|
models | READ | 用于审核的模型 |
flagged-models | READ | 已标记的模型 |
resolve-flagged | WRITE | 处理已标记的模型(需要 --ids) |
model-versions | READ | 用于审核的模型版本 |
rescan-model <id> | WRITE | 重新导入模型 |
restore-model <id> | WRITE | 恢复已删除的模型 |
toggle-cannot-promote <id> | WRITE | 切换是否允许推荐 |
toggle-cannot-publish <id> | WRITE | 切换是否允许发布 |
articles | READ | 待审核的文章 |
mod-rule <id> | READ | 获取审核规则 |
选项: --ids、--page、--limit、--json、--dry-run
训练内容审核(列出 / 批准 / 拒绝训练数据)已在 moderator-app 迁移中移至 moderator spoke
(/audit/training-models、/audit/training-data),不再能通过 tRPC 访问 — 参见 docs/moderator-app/page-migration-checklist.md。
node .claude/skills/mod-actions/content.mjs flagged-models --limit 10
node .claude/skills/mod-actions/content.mjs resolve-flagged --ids 1,2,3 --dry-run
node .claude/skills/mod-actions/content.mjs rescan-model 789
model3ds.mjs — 3D 模型审核
node .claude/skills/mod-actions/model3ds.mjs <command> [options]
| Command | R/W | Description |
|---|---|---|
list | R | 列出 Model3D(--status、--username、--limit、--cursor) |
get <id> | R | 按 ID 获取 Model3D |
files <id> | R | 列出附加到 Model3D 的文件 |
unpublish <id> | W | 将状态设为 -> Unpublished |
delete <id> | W | 软删除(状态设为 -> Deleted,并设置 deletedAt/deletedBy) |
restore <id> | W | 恢复(Deleted -> Unpublished,Unpublished -> Published) |
set-nsfw-level <id> | W | 覆盖 nsfwLevel(--level <n> [--lock]) |
toggle-tos <id> | W | 切换 tosViolation(锁定该字段) |
toggle-poi <id> | W | 切换 poi(锁定该字段) |
toggle-minor <id> | W | 切换 minor(锁定该字段) |
toggle-nsfw <id> | W | 切换 nsfw(锁定该字段) |
toggle-unlisted <id> | W | 切换 unlisted(锁定该字段) |
针对 Model3D 的违规记录使用现有的 strikes.mjs(违规记录系统与实体类型无关):
node .claude/skills/mod-actions/strikes.mjs create <userId> \
--entity-type Model3D --entity-id <model3dId> --reason TOSViolation --points 1
通用标志:
--json— 输出原始 JSON--dry-run— 预览而不进行更改(仅适用于写入命令)
示例:
node .claude/skills/mod-actions/model3ds.mjs list --status Draft --limit 100
node .claude/skills/mod-actions/model3ds.mjs get 42
node .claude/skills/mod-actions/model3ds.mjs unpublish 42
node .claude/skills/mod-actions/model3ds.mjs set-nsfw-level 42 --level 16 --lock
node .claude/skills/mod-actions/model3ds.mjs toggle-tos 42 --dry-run
node .claude/skills/mod-actions/model3ds.mjs restore 42
csam.mjs — NCMEC/CSAM 举报
node .claude/skills/mod-actions/csam.mjs <command> [options]
| Command | R/W | Description |
|---|---|---|
reports | READ | 分页列出 CSAM 举报 |
stats | READ | CSAM 举报统计信息 |
image-resources <imageIds> | READ | 生成已标记图像所用的资源 |
create-report <userId> | WRITE | 创建 NCMEC CyberTipline 举报 |
CSAM 举报类型: Image、TrainingData、GeneratedImage
选项: --type <CsamReportType>、--image-ids <id1,id2,...>、--minor-depiction <real|non-real>、--page、--limit、--json、--dry-run
node .claude/skills/mod-actions/csam.mjs stats
node .claude/skills/mod-actions/csam.mjs reports --limit 10
node .claude/skills/mod-actions/csam.mjs image-resources 12345,67890
node .claude/skills/mod-actions/csam.mjs create-report 3879899 --type GeneratedImage --image-ids 111,222 --dry-run
全局选项
所有脚本均支持:
| Flag | Description |
|---|---|
--json | 输出原始 JSON(供 Agent / 脚本使用) |
--dry-run | 预览写入操作,但不执行 |
--page <n> | 分页结果的页码(默认值:1) |
--limit <n> | 分页结果的每页大小(默认值:20) |
安全须知
- 对于具有破坏性的写入操作,务必先使用
--dry-run - 所有操作都会记录在 ModActivity 表中
- 封禁操作会立即使用户会话失效
- CSAM 举报会提交给 NCMEC — 请格外谨慎
- 使用
--reason和--message标志记录原因 - API 密钥必须具备审核员权限
- 使用
--json供 Agent 守护进程以编程方式读取