内容审核
自动检查用户上传的文字和图片是否违规
这是什么
内容审核就是自动检查用户上传的文字、图片是否包含违规信息(色情、暴力、政治敏感等)。
中国法律规定平台必须对用户生成内容(UGC = User Generated Content)做审核。
- 例如微信小程序在审核的时候,它会测试上传敏感文字图片,如果你的小程序没有拒绝则审核不通过。
实际上在很多支持用户评论、图片、自定义文字的场景下,都需要做内容审核。这也是避免你的网站免受攻击的一种手段。
这里我们默认使用腾讯云的安全检测 API。
两个包的关系
@01mvp/content-moderation— 抽象接口层,定义了统一的调用方式。不管底层用哪家云,代码写法不变@01mvp/tencent-cloud— 腾讯云的具体实现。实际审核由腾讯云 API 完成
打个比方:content-moderation 像万能遥控器,tencent-cloud 像具体电视品牌。你按遥控器,不管后面接什么电视,行为一致。
腾讯云的 API 密钥是敏感信息,必须放在 .env.local 中。审核 API 按调用次数计费。
怎么接入
- 配环境变量:在
.env.local加云服务商的密钥 - 选审核类型:文字审核还是图片审核
- 调审核接口:把用户内容传给审核函数
- 处理结果:通过(放行)/ 拒绝(删除)/ 人工复核(标记)
环境变量配置
# 腾讯云 API 密钥(在腾讯云控制台获取)
TENCENT_SECRET_ID=your-secret-id
TENCENT_SECRET_KEY=your-secret-key文本审核
import { createTencentCloudModerationClient } from "@01mvp/tencent-cloud";
const client = createTencentCloudModerationClient({
secretId: process.env.TENCENT_SECRET_ID!,
secretKey: process.env.TENCENT_SECRET_KEY!,
});
const result = await client.textModeration("待审核的文本内容");
// result.suggestion: "Pass"(通过)| "Block"(拦截)| "Review"(人工复审)
// result.label: 内容分类标签
// result.score: 置信度分数
// result.keywords: 触发的敏感词图片审核
const result = await client.imageModeration("https://example.com/image.jpg");
// result.suggestion: "Pass" | "Block" | "Review"
// result.label: 违规类型标签
// result.subLabel: 细分子标签
// result.score: 置信度分数常见场景
用户发帖审核 — 用户提交的文字,先审核再入库。
头像审核 — 用户上传头像时检查是否合规。
注意事项
- 审核有延迟:云 API 可能需几百毫秒,建议异步处理
- 审核收费:按调用次数计费
- 降级策略:审核服务挂了可选"先放行事后抽查"或"全部拒绝"
- 辅以人工:机器可能误判,敏感分数区间的做人工复核
@01mvp/content-moderation 是一个轻量封装层,目前图片审核为 stub 实现(始终返回 { ok: true })。完整的文本和图片审核能力在 @01mvp/tencent-cloud 包中。