Skip to content

About

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

软文检测器 (Soft Ad Detector)

基于 AI 技术的智能软文识别工具,帮助用户快速识别隐蔽的商业推广内容。

🌟 功能特性

  • 智能检测: 使用先进的 AI 模型分析文本内容,识别是否为软文
  • 实时分析: 支持流式响应,实时显示分析结果
  • 多维度评估: 从商业意图、内容客观性、结构伪装性等多个维度进行分析
  • 置信度评估: 提供低、中、高三个级别的置信度评估
  • 广告主识别: 自动识别潜在的广告主和目标人群
  • 响应式设计: 支持桌面和移动设备访问
  • 简洁易用: 界面简洁,操作直观

📁 项目结构

is-it-soft-ad/
├── main.py              # FastAPI 后端服务器
├── script.js            # 前端 JavaScript 逻辑
├── index.html           # 前端页面
├── style.css            # 样式文件
└── prompt.toml          # AI 提示词配置

🚀 快速开始

环境要求

  • Python 3.11
  • uv (Python 包管理器)
  • Node.js (用于前端依赖)
  • OpenAI API Key

安装依赖

uv sync

配置环境变量

参见 .env.example

启动服务

# 使用 uv 启动后端服务
uv run python main.py

# 服务将在 http://localhost:8000 启动

访问 http://localhost:8000 即可使用软文检测器。

🔧 技术栈

后端

  • FastAPI: 现代化的 Python Web 框架
  • LLM API: AI 文本分析能力

前端

  • 原生 JavaScript: 纯 JavaScript 实现的前端逻辑
  • CSS3: 现代化的样式设计
  • Marked.js: Markdown 解析库
  • Server-Sent Events (SSE): 实时数据流传输

📊 API 接口

主要端点

  • POST /v1/submit_task - 提交分析任务
  • GET /v1/task_stream/{task_id} - 获取分析结果流
  • GET / - 主页
  • GET /health - 健康检查

请求示例

// 提交任务
const response = await fetch('/v1/submit_task', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({
        content: '需要分析的文本内容...'
    })
});

// 获取任务ID后连接到流
const eventSource = new EventSource(`/v1/task_stream/${taskId}`);

🛡️ 速率限制

  • 请求限制: 30 次/分钟,最大突发 5 次
  • 字符限制: 1,000,000 字符/分钟

🔧 工作原理

系统流程图

sequenceDiagram
    participant U as 用户
    participant F as 前端界面
    participant B as FastAPI 后端
    participant O as LLM API
    participant M as 内存存储

    Note over U,B: 用户输入文本进行分析
    U->>F: 在界面输入文本内容
    U->>F: 点击分析按钮
    
    Note over F,B: 提交分析任务
    F->>B: POST /v1/submit_task
    F->>B: { content: "待分析文本..." }
    
    Note over B: 速率限制检查
    B->>B: 检查请求频率 (30/分钟)
    B->>B: 检查字符数量 (1M/分钟)
    
    Note over B,M: 创建任务并返回ID
    B->>M: 存储任务到内存
    B->>M: 生成唯一 task_id
    B->>F: 返回 { task_id: "xxx" }
    
    Note over F,B: 建立实时连接
    F->>B: GET /v1/task_stream/{task_id}
    Note over F,B: 建立 SSE 连接
    
    Note over B,O: 调用 OpenAI API
    B->>O: 发送流式分析请求
    Note over O: 基于 Prompt 多维度分析
    
    Note over O,B: 实时返回分析结果
    O->>B: 流式返回 JSON 数据
    B->>B: 解析部分 JSON
    B->>F: SSE 推送分析数据
    F->>U: 实时显示分析结果
    
    Note over B,M: 完成并清理任务
    B->>M: 从内存删除任务
    Note over U,F: 用户查看完整报告
Loading

工作流程说明

  1. 用户输入

    • 用户在网页界面输入需要分析的文本内容
    • 点击分析按钮提交分析请求
  2. 任务提交

    • 前端向 FastAPI 后端发送 POST 请求到 /v1/submit_task
    • 请求包含待分析的文本内容
  3. 任务创建

    • 后端接收到请求后,创建新的分析任务
    • 生成唯一的 task_id 并存储任务状态
    • 返回 task_id 给前端用于后续追踪
  4. 实时连接建立

    • 前端使用返回的 task_id 建立 SSE 连接
    • 连接到 /v1/task_stream/{task_id} 端点
    • 准备接收实时分析结果
  5. AI 分析处理

    • 后端将文本发送给 AI 分析引擎(LLM)
    • AI 从多个维度进行分析
  6. 实时结果推送

    • AI 分析结果通过 SSE 流式返回给前端
    • 前端实时更新显示分析进度和结果
    • 用户可以看到分析过程的实时反馈
  7. 任务完成

    • 分析完成后,后端保存最终结果
    • SSE 连接自动关闭
    • 用户可以查看完整的分析报告

技术架构特点

  • 实时性: 使用 Server-Sent Events (SSE) 实现流式响应
  • 异步处理: 后端异步处理 AI 分析请求,避免阻塞
  • 状态管理: 每个任务都有唯一 ID 和状态追踪
  • 多维度分析: AI 从多个角度综合评估文本内容
  • 响应式设计: 前端界面适配不同设备尺寸

📊 分类等级

系统采用五级分类标准,根据推广意图强度和推广隐蔽性两个维度进行划分:

Level 0: 无推广 | 纯粹信息/观点分享

  • 特征: 文章内容完全基于事实、经验或独立观点进行阐述。不存在任何形式的产品、品牌、服务或机构的推介。作者与所述内容无利益关联。
  • 目的: 提供价值、分享知识、表达观点、引发讨论。
  • 判断关键词: "我个人觉得"、"据XX数据显示"、"一般来说"、"试用了好几款"。

Level 1: 轻度植入 | 内容为主,推广为辅

  • 特征: 文章核心是提供有价值的内容,推广信息作为内容的一部分自然出现,并非文章首要目标。通常会以"自用"、"用过不错"等个人经验口吻提及。
  • 目的: 以优质内容建立信任,间接提升品牌好感或产品认知。
  • 判断关键词: "我自己在用"、"搭配XX产品效果更好"、"这里推荐一个我常用的"。

Level 2: 明确广告 | 告知式推广

  • 特征: 文章的核心目的就是推广,且开宗明义或明确告知读者此为广告、合作内容。内容围绕产品/品牌的优点展开,但意图公开透明,不试图伪装。
  • 目的: 直接进行产品宣传、品牌曝光或获取销售线索。
  • 判断关键词: "本文为品牌合作"、"广告"、"赞助"、"感谢XX品牌提供"。

Level 3: 隐蔽软文 | 伪装式推广

  • 特征: 文章的核心目的是推广,但故意模仿Level 0或Level 1的内容形式,试图隐藏其商业意图,让读者在无戒备心理下接受营销信息。通常不会明确标注广告性质。
  • 目的: 在读者未察觉的情况下影响其心智或行为,规避广告审查。
  • 判断关键词: 通篇以"小编亲测"、"朋友推荐"、"最近爆火"等第三方或亲身经历的口吻叙述,回避"广告"标识。

Level 4: 恶意误导 | 虚假/欺诈性信息

  • 特征: 在Level 3的基础上,不仅隐藏意图,还包含无法证实的虚假数据、捏造的用户案例、夸大甚至欺诈性的宣传,可能对读者造成经济损失或健康风险。
  • 目的: 通过欺骗手段实现转化或销售。
  • 判断关键词: "百分百有效"、"独家内部渠道"、"稳赚不赔"、"几天见效"、"彻底根治"。

📝 分析维度

系统从以下维度分析文本是否为软文:

  1. 商业意图与上下文分析

    • 品牌提及是否为必要背景信息
    • 是否存在明显的推广倾向
    • 是否试图影响消费决策
  2. 内容客观性分析

    • 是否以推广为核心目的
    • 是否只陈述优点而回避缺点
    • 是否使用大量主观性赞美词汇
  3. 结构伪装性分析

    • 是否为"伪装-转折-推广"模式
    • 结尾是否有明确的行动号召
  4. 来源与披露分析

    • 是否明确标注广告性质
    • 发布者身份是否可疑

🎯 使用场景

  • 内容审核: 帮助编辑识别隐蔽的商业推广内容
  • 学术研究: 分析媒体内容中的商业影响因素
  • 个人使用: 识别网络文章中的软文内容
  • 教育用途: 培养批判性思维和媒体素养

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🔗 相关链接

🙏 致谢

感谢所有为本项目做出贡献的开发者和用户。


免责声明: 本工具仅作为辅助分析工具使用,分析结果仅供参考,不构成专业的法律或商业建议。

About

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages