densertensor/socmon

GitHub: densertensor/socmon

自托管、可复现的俄罗斯社交网络监控框架,支持多平台数据采集、去重、存储与分析,强调方法论透明和数据可审计性。

Stars: 0 | Forks: 0

# socmon **socmon** 是一个自托管、可复现的监控框架,用于跨社交网络监控俄罗斯互联网。你只需在 YAML 中声明一个监控任务,socmon 就会从 VK、Telegram 和其他几个网络中收集、去重、存储和分析帖子与评论——它会保留原始 payload,以便你日后无需重新抓取即可重新解析,并记录足够的溯源信息,确保任何一次运行都能被复现和辩护。 ## 为什么选择 socmon 封闭的监控 SaaS 会给你一个仪表盘,并要求你信任它。socmon 的构建理念恰恰相反——你完全拥有整个 pipeline: - **可复现性与可审计性。** 每次运行都会对其配置、模型与 prompt 版本以及内容哈希进行快照,因此结果可以被复现和论证——无论是用于客户报告、合规审计还是学术发表。 - **方法论的诚实性。** 覆盖范围的限制被明确标出:VK 的结果上限,是否使用了付费的 Telegram 全文搜索,以及 Dzen/Rutube 的尽力而为(best-effort)性质。偏见与盲点映射是输出的一部分,而不是被隐藏起来。 - **原始数据保留。** 存储标准化的 `Post`/`Comment` 记录以及原始 JSON payload,因此你可以随时重新解析、重新分析或导出为 CSV / Parquet。 - **与提供商无关的 LLM 层。** 可选的语言模型功能(主题标注、配置辅助、抓取审计、基于方面的情感分析)既可以在托管的 API 上运行,也可以在本地 backend 上运行,从而确保私有数据保持私密。 ## 功能矩阵 每个网络 connector 能做什么。connector 是可插拔的;该矩阵反映了每个平台实际暴露的内容。 | 功能 | VK | Telegram | OK | Dzen | Rutube | MAX | |-------------------|---------------|-------------------|-------------|-------------|----------------|---------------| | 全局搜索 | yes (有上限) | 免费标签 / 付费全文 | no | no | yes (站点搜索) | no | | Wall / 来源搜索 | yes | yes (频道内) | no | no | no | no | | 来源 feed | yes | yes | yes | yes (RSS/抓取) | yes | no | | 评论 | yes | yes | 可选 | 尽力而为 | yes | no | | 来源发现 | yes | yes (TGStat) | no | no | no | no | | 互动/指标 | yes | yes | 部分 | 部分 | 部分 | no | | 健壮性 | API, 稳定 | 用户 session | 抓取, 脆弱 | 抓取, 脆弱 | 抓取, 脆弱 | 不支持 | 注意:VK 全局搜索(`newsfeed.search`)在每个查询窗口中上限约为 1000 条结果,因此它由自适应时间二分法(time-bisection)驱动。Telegram 全局全文搜索需要付费,并且受限于明确的 opt-in。OK、Dzen 和 Rutube 属于抓取/尽力而为(best-effort)模式,并且相互隔离,因此发生故障时会优雅降级。MAX 不支持监控——它的 Bot API 只能看到添加了该 bot 的频道,并且没有全局搜索或用户客户端;在出现读取/搜索 API 之前,该 connector 只是一个 stub。 ## 架构 ``` config/job.yaml (declarative) | JobConfig (validated) | +-------------------+-------------------+ | | | scheduler ----> collection pipeline ---> storage (PostgreSQL (APScheduler / | | + pgvector, raw JSONB) Celery+Redis) | | | | connectors pools (VK/TG/OK/Dzen/ (accounts + proxies: Rutube; plugin health, rotation, contract) flood-wait/captcha) | analysis (lemmatize, frequencies, BERTopic topics, descriptives, spike detection) | optional LLM layer (provider-agnostic) | dashboards (Streamlit) ``` 核心构建块(时间二分法、文本规范化与内容哈希、增量的“在已知处停止”、去重 key 构建、配置验证)是纯粹的,并经过了完整的单元测试。网络 connector 和外部集成是已定义类型、有文档说明的 stub,你可以根据所引用的平台 API 对其进行实现。该包只需安装轻量级依赖集即可导入;每个重型依赖都是可选的,并且会进行延迟导入。 ## 快速开始 需要 Python 3.12+、Docker(用于 PostgreSQL + Redis),以及你所需的任何网络和功能对应的可选扩展包。 ``` # 1. 创建一个环境并根据需要安装包含 extras 的 socmon。 python3.12 -m venv .venv source .venv/bin/activate pip install -e '.[telegram,analysis,llm,queue,dashboard]' # 2. 配置环境(复制并编辑 placeholder 值)。 cp .env.example .env # 3. 启动 PostgreSQL(包含 pgvector)和 Redis。 docker compose up -d # 4. 初始化数据库 schema。 socmon init-db # or: alembic upgrade head # 5. 运行示例监控 job 一次。 socmon run config/job.example.yaml ``` 内置的 [`config/job.example.yaml`](config/job.example.yaml) 是一个带有完整注释的品牌/主题监控任务,你可以直接复制并进行修改。 ## 路线图 socmon 是逐个网络构建的,优先交付价值。 - **阶段 0 — 骨架:** 数据模型、PostgreSQL schema、去重、VK connector、基础账号/代理池、带有哈希/游标增量的调度器、基线分析、单任务仪表盘。一个 VK 任务按计划运行,只抓取新素材,从不重复。 - **阶段 1 — Telegram 与抓取成熟度:** 基于 Telethon 的 Telegram connector、每个网络都配备带有粘性代理和健康检查的完整池、flood-wait/captcha 处理、带有独立幂等队列的 Celery/Redis、指标快照历史记录。 - **阶段 2 — 分析与 LLM(定向):** 词形还原(Natasha)、TF-IDF / c-TF-IDF 词云、NER 云、配备俄罗斯语 embedder 并能展示主题随时间变化的 BERTopic、与提供商无关的 LLM 层(主题命名、配置助手、抓取审计、包括按参与者细分的情感分析)以及本地 backend 选项,还有一个峰值检测器。 - **阶段 3 — 广度与解读:** OK 和 Dzen connector、近似重复和跨网络链接、周期总结、在 SQL 允许列表(allow-list)上进行的对话式数据查询(chat-to-data),以及一个带有过滤和导出功能的自定义前端。 - **阶段 4 — 研究成熟度:** 用于确保可复现性的带有代码簿(codebook)和溯源信息的语料库导出(CSV/Parquet)、扩散/网络分析、地理位置(geo)、扩展模型,以及一旦 API 允许就添加可选的新网络(例如 MAX)。 ## 开发 有关开发设置、lint/类型/测试工作流、项目布局以及 connector 插件合约,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 Apache License 2.0。参见 [LICENSE](LICENSE)。
标签:DLL 劫持, Kubernetes, PostgreSQL, 命令控制, 大语言模型, 搜索引擎查询, 数据采集, 测试用例, 社交媒体监控, 自动化流水线, 舆情分析, 请求拦截, 逆向工具