giovabal/pulpit

GitHub: giovabal/pulpit

面向政治传播研究的Telegram频道关系网络爬取与可视化分析工具,揭示影响力结构和跨频道引用生态。

Stars: 0 | Forks: 0

# Pulpit ### 政治潜流:Telegram 上的关联、传播与影响力 Telegram 托管着成千上万个政治频道——新闻媒体、激进组织、宣传机构以及介于两者之间的各种渠道。它们不断相互引用:转发消息、互相链接、放大某些声音而忽略另一些。这些交叉引用并非随机;它们揭示了原本不可见的联盟、意识形态集群和影响力网络。 **Pulpit** 使这些网络可视化。它从您定义的一组 Telegram 频道收集消息,追踪其间的每一次转发和每一个 `t.me/` 链接,并将结果转换为可在浏览器中探索的交互式地图——可以放大查看单个频道、按社区过滤、比较不同节点的覆盖范围。 它专为从事政治传播、虚假信息和在线影响力研究的记者、研究人员和分析师设计。Pulpit 正在积极开发和演进——请参阅 [更新日志](CHANGELOG.md) 了解最新动态。
![示例图谱 — 约 400 个节点,约 8 000 条边,Louvain 社区检测,vapoRwave 调色板](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/0a227b455b091557.jpg)
示例输出 — 约 400 个节点,约 8 000 条边,Louvain 社区检测,vapoRwave 调色板。更多截图可在此处查看
## 工作原理 1. 您提供搜索词;Pulpit 通过 API 查找匹配的 Telegram 频道。 2. 您在管理界面中查看结果,并将频道分组为 **Organizations(组织)**——主题集群(例如,按政治倾向、国家、话题)。 3. Pulpit 抓取选定的频道,收集消息并解析跨频道引用(转发和 `t.me/` 链接)。 4. 基于这些引用构建图谱,检测并着色社区,应用 ForceAtlas2 布局,并将结果导出为交互式 HTML 地图。 ## 产出内容 `export_network` 完成后,`graph/` 目录包含: - **`index.html`** —— 一个着陆页,列出包含描述和链接的所有输出;是分享或发布结果的起点 - **`graph.html`** —— 交互式 2D 图谱:搜索频道、按社区过滤、根据任何计算指标调整节点大小、检查单个频道及其连接 - **`channel_table.html`** —— 可排序表格,每个频道一行,包含所有计算指标;可下载为 `channel_table.xlsx` - **`network_table.html`** —— 全网结构指标,附带用于比较任意两个指标的交互式散点图;可下载为 `network_table.xlsx` - **`community_table.html`** —— 针对每种检测策略的各社区结构指标;可下载为 `community_table.xlsx` 在开发过程中,整个输出由 Django 服务器在 `http://localhost:8000/graph/` 提供服务——无需单独的 HTTP 服务器。 ## 快速开始 ``` python manage.py runserver # admin interface at http://localhost:8000/admin/ python manage.py search_channels # discover channels from your search terms ``` 在管理后台,将频道分配给 **Organizations(组织)** 并将其标记为 `is_interesting = True`。 ``` python manage.py get_channels # crawl messages and resolve references python manage.py export_network # build graph, detect communities, export ``` 打开 `http://localhost:8000/graph/`。 ## 构建方式 Pulpit 围绕三个阶段构建: **1. 抓取(Crawling)。** Pulpit 使用官方 Telegram API(通过 [Telethon](https://github.com/LonamiWebs/Telethon))从您选择的频道下载消息。对于每条消息,它记录转发(哪个频道的内容被转载)和内联 `t.me/` 引用(出现在消息文本中或作为 URL 实体的指向其他频道的链接)。这会产生一个有向加权图:从频道 A 到频道 B 的边意味着 A 定期放大 B 的内容,其权重反映了相对于 A 总产出的频率。 **2. 分析(Analysis)。** 使用 [NetworkX](https://networkx.org/) 对图谱进行分析。可以计算多种中心性指标——PageRank、HITS Hub 和 Authority 得分、介数中心性、入度中心性、出度中心性、调和中心性、Katz 中心性、桥接中心性、Burt 约束、内容原创性和放大系数——以按影响力、覆盖范围或结构重要性对频道进行排名。社区检测算法(Louvain、Leiden、k-shell 分解、Infomap 或您手动定义的组)用于识别表现为连贯生态系统的频道集群。 **3. 可视化(Visualisation)。** 使用 [ForceAtlas2](https://github.com/bhargavchippada/forceatlas2) 对图谱进行布局,这是一种力导向算法,可以自然地将紧密连接的集群拉近。结果导出为由 [Sigma.js](http://sigmajs.org/) 驱动的独立 HTML 文件,带有搜索、按社区过滤、根据任何计算指标更改节点大小以及检查单个频道的控件。 ## 文档 | | | | :--- | :--- | | [INSTALLATION.md](INSTALLATION.md) | 系统要求、安装设置和数据库初始化 | | [WORKFLOW.md](WORKFLOW.md) | 完整的逐步指南:查找频道、抓取、导出及所有选项 | | [CONFIGURATION.md](CONFIGURATION.md) | 所有 `.env` 设置的完整参考 | | [ANALYSIS.md](ANALYSIS.md) | 所有网络指标和社区检测策略——测量内容及其解读方式 | | [CHANGELOG.md](CHANGELOG.md) | 版本历史 | | [SCREENSHOTS.md](SCREENSHOTS.md) | 不同图谱大小、策略和显示模式下的示例输出 | ## 免责声明 Pulpit 旨在用于学术研究、调查新闻和对可公开访问的 Telegram 频道的分析工作。其编写目的是为了在开发时遵守适用法律及当时的 [Telegram 服务条款](https://telegram.org/tos)。 管辖公共通信的数据收集、存储和分析的法律因司法管辖区而异,并随时间变化。Telegram 的服务条款同样可能被修订。您有责任在运行本软件之前,核实您的使用是否符合您所在国家的法律及 Telegram 当前的服务条款。作者对超出合法研究和分析范围的使用不承担任何责任。
标签:BeEF, ESC4, ForceAtlas2, Louvain算法, OSINT, Python, Telegram, 传播路径追踪, 关系网络, 图论, 引用图谱, 影响力分析, 情报分析, 政治传播, 政治研究, 无后门, 爬虫, 特权检测, 社交媒体分析, 社会网络分析, 社区发现, 网络诊断, 舆情监控, 虚假信息, 记者工具, 逆向工具