返回市场
我GPT

我GPT

作者:adrianco283 星标更新:2025-06-23

项目介绍

meGPT - 将作者的内容上传到LLM

我有20年的公开内容,在我的职业生涯中已经生产和展示过,我希望有一个LLM能够训练来回答问题并生成我对这些内容的意见摘要,并以我的“声音”来表达。目前,我已经找到了几家正在构建人物模型的公司,并尝试了soopra.ai。为了鼓励在这个领域的开发和竞争,我已经在我的仓库中整理了我的公开内容和参考资料。

我的内容存储或链接在authors/virtual_adrianco中,包括:

如果其他作者希望使用此仓库作为起点,请克隆它并在authors目录下添加自己的内容目录。如果您愿意免费贡献内容供他人用作训练数据集,请发送一个拉取请求,我会将其包含在这里。代码目录中的脚本旨在帮助通过提取Twitter或Medium档案来预处理作者的内容,这些档案需要账户所有者下载。

知识共享 - 归属相同方式分享。明确允许任何人使用此作为训练集来开发meGPT概念。任何作者/演讲者/专家都可以自由使用,结果是一个可以像作者一样回答问题的聊天机器人,参考已发布的文章。我自己构建的虚拟adrianco版本包含了对云计算、可持续性、性能工具、微服务、加速创新、Wardley映射、开源、混沌工程、韧性、Sun Microsystems、Netflix、AWS等主题的意见。我很乐意分享任何开发出的模型。我不需要通过这个赚钱,我已经半退休了,并且已经很好地实现了内容的货币化,我现在也不再为大公司工作了。

我不是Python程序员

此仓库中的所有代码最初是由免费版的ChatGPT 4或Cursor Claude Sonnet3.7基于简短提示编写而成,没有后续编辑,在这里那里几分钟的时间内完成。我可以阅读Python并且大部分都能理解,但我不是一个经验丰富的Python程序员。请参见相关问题中的公共链接,该链接指向由ChatGPT生成代码的聊天线程。当我转向Cursor时,每个文件开头都会包含上下文作为块注释。这是一种极其低摩擦且简单的方式来编写简单的代码。开发迁移到Cursor是因为它对整个项目的上下文管理有更好的方法。

YouTube处理

YouTube处理器已增强,可以自动处理多种类型的YouTube内容:

支持的YouTube URL类型

  • 单个视频https://www.youtube.com/watch?v=VIDEO_ID
  • 播放列表https://www.youtube.com/playlist?list=PLAYLIST_ID
  • 整个频道https://www.youtube.com/@username/videoshttps://www.youtube.com/c/channelname/videos

处理功能

  • 自动检测:处理器会自动检测URL是单个视频、播放列表还是频道
  • 批量处理:频道和播放列表会自动扩展成单独的视频条目
  • 同意页面处理:自动处理YouTube的“继续之前”的同意页面
  • 强大的提取:有多重备用方法用于提取视频元数据和ID
  • MCP兼容性:所有视频都保存为单独的MCP兼容JSON文件

YouTube下载

YouTube有严格的机器人检测措施,这可能会使自动下载变得困难。脚本尝试多种方法来处理YouTube内容:

  1. 首先,它试图直接从页面HTML中提取视频元数据
  2. 对于同意页面,它会自动提交同意表单
  3. 使用多个正则表达式模式在页面源中查找视频ID
  4. 如果标准方法失败,则回退到替代提取方法
  5. 当无法提取个别视频时,为频道创建占位符条目

尽管采取了这些措施,YouTube的机器人检测仍然很复杂,某些内容可能仍无法自动处理。在这种情况下,处理器将创建引用原始URL的占位符条目。

为了获得最佳效果,您可以尝试:

  • 使用不同的网络(某些IP地址更有可能触发机器人检测)
  • 使用VPN
  • 从移动网络处理(通常限制较少)
  • 在非高峰时段处理,此时YouTube系统限制较少

示例用法

在您的published_content.csv中,现在可以包含以下任何一种YouTube URL类型:

Kind,SubKind,What,Where,Published,URL
youtube,,技术讲座,会议名称,2024,https://www.youtube.com/watch?v=VIDEO_ID
youtube,,我的技术讲座播放列表,各种会议,2024,https://www.youtube.com/playlist?list=PLAYLIST_ID
youtube,,我的完整YouTube频道,个人频道,2024,https://www.youtube.com/@username/videos

处理器将自动扩展播放列表和频道为单独的视频条目,使得所有内容均可通过MCP服务器搜索和访问。

增强的内容处理

内容处理系统已显著增强,以处理复杂的结构和存档:

文件类型处理

系统现在支持CSV中的“文件”类型条目,指向包含多个内容文件的目录:

Kind,SubKind,What,Where,Published,URL
file,,从Medium存档提取的大量博客文章文本,Medium存档,2025,./authors/virtual_adrianco/medium_adrianco/
file,,从Blogger存档提取的大量博客文章文本,Blogger存档,2014,./authors/virtual_adrianco/blogger_perfcap_posts/

支持的存档格式

  • Medium存档:自动检测[URL] https://...格式并提取单独的文章
  • Blogger存档:处理Title: ...\nURL: https://...格式的文章提取
  • 通用文本文件:处理具有URL提取能力的任何文本文件

处理功能

  • 自动URL提取:在文本文件中找到各种格式的URL
  • 内容分类:分配适当的子类型(medium_post, blogger_post等)
  • 摘要生成:自动为大量内容创建摘要
  • 去重:防止多次处理同一内容
  • 错误处理:具有全面日志记录的强大处理

支持的内容类型

  • YouTube:单个视频、播放列表、整个频道(135项)
  • 播客:带有转录和摘要的剧集(52项)
  • 书籍:带有提取文本和摘要的PDF(10项)
  • 故事:带有可选附件的叙述内容(18项)
  • 文件:博客存档、演示文稿、文档(394项)
  • InfoQ视频:技术演示(2项)

总计:611项内容已处理并通过MCP服务器访问。

MCP服务器集成

此仓库现在包括一个全面的模型上下文协议(MCP)服务器,使内容集合可供AI应用程序访问。MCP服务器将处理过的转换为AI可访问的知识库。

当前内容统计(virtual_adrianco)

  • 总条目数:611个内容片段
  • YouTube视频:135个(单个视频、播放列表、频道)
  • 文件存档:394个(Medium文章、Blogger文章、演示文稿)
  • 播客剧集:52个(带有转录和摘要)
  • 故事:18个(叙述内容)
  • 书籍:10个(带有提取文本和摘要的PDF)
  • InfoQ视频:2个(技术演示)

MCP服务器特性

  • 内容搜索:标题、标签和来源的语义搜索
  • 内容过滤:按类型、标签和元数据过滤
  • 分析:收集统计信息和内容分析
  • AI集成:与Claude Desktop、Cursor、自定义AI代理兼容
  • 多种传输方式:STDIO、HTTP和SSE支持

使用

# 启动MCP服务器(默认STDIO模式用于Claude Desktop)
python mcp_server.py --author virtual_adrianco

# 启动HTTP服务器用于Web应用
python mcp_server.py --author virtual_adrianco --transport streamable-http --port  8080

# 为任何作者生成MCP资源
python create_mcp.py virtual_adrianco

详细测试和集成示例,请参阅mcp_testing/目录。

构建作者

要使用此仓库,请将其克隆到本地磁盘,设置Python环境,运行build.py脚本以处理作者的发布内容表,逐行处理。构建脚本将在downloads/<author>目录中创建一个state.json文件,记录成功的处理步骤,以便增量运行build.py不会重复相同的下载。每种类型的数据都需要processors目录下的相应脚本。

git clone https://github.com/adrianco/megpt.git
cd megpt
python3 -m venv venv

Windows:

venv\Scripts\activate

macOS/Linux:

source venv/bin/activate
pip install -r requirements.txt

如果在开发过程中安装了任何额外的包,请通过以下命令重新生成requirements.txt:

pip freeze > requirements.txt

运行构建脚本

用法:build.py <author>
python build.py virtual_adrianco

为了测试目的,处理来自任意URL的单一类型数据,输出到downloads而不更新state.json文件

用法:python process.py <author> <Kind> <SubKind> <URL>

创建基于RAG的LLM人物

请参阅此演示了解如何让RAG更好地工作 https://github.com/datastaxdevs/conference-2024-devoxx/ 请参阅此问题 https://github.com/adrianco/meGPT/issues/11 了解我使用soopra.ai进行实验的情况 - 目前训练的是此内容的一个子集,并可以在 https://app.soopra.ai/Cockcroft/chat 上试用。

当前功能状态

build.py和process.py似乎运作正常。 book_processor.py正确下载了书籍的PDF,并提取了页码范围,以便可以选择相关的部分,或者分离多位作者。 每个故事下载都需要定制化的提取,对于The New Stack(thenewstack.io)的正确div名称已被添加为子类型,故事类型的内容的正确文本内容下载正在工作。 Medium博客下载是从作者可以请求的存档处理的,转换为作者medium_posts目录中的文本文件。 Blogger.com存档被处理成文本文件,其中包括原始故事的URL。 Twitter存档被处理以提取对话,忽略除了涉及多条推文的对话之外的所有非公开推文。我使用的存档是在Twitter更名为X之前保存的。

注意事项

我已经整理了我的内容一段时间,并将不时更新参考表格和Medium下载 https://github.com/adrianco/meGPT/blob/main/authors/virtual_adrianco/published_content.csv

YouTube视频有索引偏移量的转录,但转录质量不高,只有视频所有者可以通过API读取。使用pytube下载视频并通过whisper处理生成更精心策划的转录,识别作者何时在说话,如果有多个发言者的话。

Twitter存档 - 原始存档文件超过100MB,太大而无法上传到GitHub。使用extract_conversations脚本仅提取参与对话的推文,以便进一步分析以找出问题和答案。执行此操作的代码由ChatGPT编写,第一次就成功了,但如果输出有问题,我很乐意分享原始推文。请报告问题。

Mastodon存档 - 可作为RSS订阅源获取。

Medium博客平台 - 可作为最近十篇文章的RSS订阅源获取。存档下载由code/medium_posts.py处理,提取公共帖子的文本,忽略草稿。

已创建问题以跟踪摄入处理代码的开发。