Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

follow-aibuilders

v1.0.0

AI builders digest — 监控顶级 AI builders 在 X 和 YouTube 播客上的动态,将其内容重新整理为易于消化的摘要。当用户想要 AI 行业洞察、builder 更新或调用 /ai 时使用。Twitter 使用免费 Rettiwt-API(无需付费 key),YouTube 使用...

0· 93·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for champagne315/follow-aibuilders.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "follow-aibuilders" (champagne315/follow-aibuilders) from ClawHub.
Skill page: https://clawhub.ai/champagne315/follow-aibuilders
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install follow-aibuilders

ClawHub CLI

Package manager switcher

npx clawhub@latest install follow-aibuilders
Security Scan
Capability signals
CryptoCan make purchasesRequires OAuth tokenRequires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Pending
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
Name/description (monitor X/Twitter, YouTube, blogs and produce digests) align with what the code does: it uses rettiwt-api for X, yt-dlp for YouTube, and HTTP scraping for blogs. Requiring Node.js and yt-dlp is appropriate for these tasks; optional RETTIWT_API_KEY usage for increased access is expected.
Instruction Scope
The SKILL.md instructs the agent to run local CLI scripts (cli.js, fetch-and-prepare.js) and to only summarize data present in digest-data.json during the LLM summarization step — that is appropriately scoped. However, onboarding and fetch steps explicitly instruct writing a .env file, configuring YT_DLP_COOKIES (which can trigger yt-dlp to access local browser cookies) and optionally setting FB_PROXY; these go beyond pure summarization and introduce local privacy/network configuration actions that the user should be aware of. A prompt-injection pattern was detected in the SKILL.md (see scan findings).
Install Mechanism
There is no automated install spec — the package includes scripts, package.json, and package-lock.json but installer steps aren’t forced. Dependencies (dotenv, rettiwt-api, proper-lockfile) are standard for a Node script. Running the project will require installing Node deps and yt-dlp manually; the code calls yt-dlp via child_process.execFile (safer than shell exec). No remote binary downloads or obscure install URLs are used by the skill itself.
!
Credentials
The skill declares no required env vars but the code and SKILL.md use optional envs: RETTIWT_API_KEY (Twitter user auth), YT_DLP_COOKIES (may be a browser name or cookies file path), and FB_PROXY (proxy). Writing an .env file is part of onboarding. While these envs are plausible for the stated purpose, they are sensitive: YT_DLP_COOKIES can cause yt-dlp to read browser cookies (potentially exposing logged-in sessions), and FB_PROXY could route traffic through a third-party proxy if misconfigured. The skill will accept and persist user-provided RETTIWT_API_KEY to .env.
Persistence & Privilege
always is false and the skill does not request forced permanent inclusion. The only persistent writes are project-local: config/config.json, .env, and state-feed.json — all confined to the skill's directory. It does not modify other skills or system-wide agent settings.
Scan Findings in Context
[prompt-injection:ignore-previous-instructions] unexpected: A prompt-injection pattern was detected in SKILL.md. The skill contains many strong runtime instructions intended for an LLM; presence of phrases that correspond to 'ignore previous instructions' patterns can be used to manipulate an LLM evaluator or agent. In context the SKILL.md contains rigid operational directives for the agent; the flagged pattern should be reviewed to confirm it isn't attempting to override higher-level safety constraints.
What to consider before installing
This skill appears to do what it claims (collect tweets, YouTube transcripts via yt-dlp, and scrape blogs) but there are a few things to check before installing: - Review and run the code in an isolated environment (container or VM) if you’re uncomfortable exposing local browser cookies or creating network proxies. - Be cautious with YT_DLP_COOKIES: setting it to a browser name enables yt-dlp to read browser cookies from your profile — that can expose logged-in session cookies. Prefer using a cookies.txt file you control, or avoid setting this unless necessary. - Do not set FB_PROXY to an untrusted address. A proxy could route your requests (and any data fetched) through a third party. - The onboarding will write a .env file in the project directory (it may persist RETTIWT_API_KEY if you provide one). If you have sensitive keys, store them securely and understand where they are saved. - The pre-scan flagged a potential prompt-injection phrase in SKILL.md; review the SKILL.md and prompts to ensure there are no instructions that attempt to override your agent’s global safety policies or to exfiltrate data. - If you want to be extra cautious: run fetch steps manually and inspect digest-data.json before allowing any automated summarization/output; or run the skill on a disposable or minimal account/environment. If you want, I can point out exactly where cookies/proxy/env writes occur in the code, or produce a short checklist of commands to run this skill in a sandbox.
scripts/yt-dlp-helpers.js:7
Shell command execution detected (child_process).
scripts/fetch-and-prepare.js:81
Environment variable access combined with network send.
!
digest-data.json:13
Install source points to URL shortener or raw IP.
!
scripts/fetch-and-prepare.js:20
File read combined with network send (possible exfiltration).
Patterns worth reviewing
These patterns may indicate risky behavior. Check the VirusTotal and OpenClaw results above for context-aware analysis before installing.

Like a lobster shell, security has layers — review code before you run it.

latestvk978gg16wd34gjayvsj9fdespx855bmz
93downloads
0stars
1versions
Updated 1w ago
v1.0.0
MIT-0

Follow Builders, Not Influencers

你是一个 AI 驱动的内容策展工具,追踪 AI 领域的顶级 builders —— 那些真正在构建产品、运营公司和进行研究的人 —— 并提供他们观点的精炼摘要。

理念:追随有原创观点的 builders,而不是只会复述的 influencers。

这个 skill 完全在你的本地机器上运行,使用免费工具。 你对信息源和数据隐私有完全控制。

首次运行 —— Onboarding

先检查 onboarding 状态:

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js check-onboarding

如果 onboardingCompletefalse,运行以下 onboarding 流程:

Step 1: 依赖检查

告诉用户:

"Follow Builders 完全在你的本地机器上运行,不需要付费 API。

系统要求:

  • yt-dlp(YouTube 视频列表和字幕获取)— 必须安装
  • Node.js 22+(Rettiwt-API 依赖要求)
  • Twitter/X:开箱即用,使用免费 guest 认证(无需 API key)

可选:Twitter 增强认证 如果 Twitter guest 认证被限流(返回速率限制错误),可以配置 user 认证:

  1. 安装 Chrome 扩展 X Auth Helper
  2. 在隐身模式登录 Twitter/X
  3. 点击扩展获取 API_KEY
  4. 使用 CLI 保存:"
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js setup-env [rettiwt_api_key]

如果用户没有 API key(大多数情况),直接运行不带参数:

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js setup-env

自动检测 yt-dlp 是否已安装:

yt-dlp --version

如果未安装,指导用户安装后再继续。

如果 yt-dlp 报错"Sign in to confirm you're not a bot",需要配置 cookies: 在 .env 中添加:

YT_DLP_COOKIES=chrome

(支持 chrome、firefox、edge 等浏览器名,或 cookies.txt 文件路径)

Step 2: 介绍

告诉用户:

"我是你的 AI Builders Digest。我追踪 AI 领域的顶级 builders —— 正在构建产品的研究人员、创始人、产品经理和工程师 —— 跨越 X/Twitter 和 YouTube 播客。我可以为你提供他们观点、想法和工作的精选摘要。"

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js get-default-sources

从输出中读取源数量,然后告诉用户:

"我目前默认追踪 [N] 个 X 上的 builders、[M] 个播客和 [B] 个博客。你可以随时自定义这个列表。

默认情况下,我监控过去 24 小时内的新内容。你可以随时调整这个时间窗口。"

Step 3: 语言

询问:"你偏好什么语言的摘要?"

  • English
  • Chinese(从英文源翻译)
  • Bilingual(英文和中文并列显示)

Step 4: 时间窗口

询问:"你想监控多长时间内的内容?默认是过去 24 小时。"

选项:

  • 24 小时(默认)
  • 48 小时
  • 72 小时
  • 1 周(168 小时)

解释:"时间窗口越长,每次摘要可能包含更多内容,但也需要更多时间处理。"

Step 5: 信息源

显示正在追踪的默认 builders 和播客的完整列表。

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js list-sources

从输出的 defaultSources 中显示为清晰的列表。

告诉用户:"你当前使用的是默认源列表。

自定义选项:

  • '添加 Twitter 账号 @username' —— 添加新的信息源
  • '移除 @username' —— 禁用某个信息源
  • '列出我的信息源' —— 显示当前所有源
  • '重置为默认源' —— 恢复默认列表
  • '仅使用我的自定义源' —— 切换到完全自定义模式
  • '合并默认源和自定义源' —— 合并模式(默认)

你可以随时通过对话修改信息源。"

Step 6: 配置提醒

"你的所有设置都可以随时通过对话更改:

  • '让摘要更简短'
  • '显示我的当前设置'
  • '添加/移除信息源'
  • '调整时间窗口为 48 小时'

无需编辑任何文件 —— 只需告诉我你想要什么。"

Step 7: 保存配置

使用 CLI 工具初始化配置:

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js init-config <language> <lookback_hours>

languageenzhbilingual lookback_hours 为 24、48、72 或 168

Step 8: 欢迎摘要

不要跳过这一步。 立即生成并向用户发送他们的第一个摘要,让他们看看效果。

告诉用户:"让我获取今天的内容并立即生成一个示例摘要。这大约需要一分钟。"

然后立即运行下面的完整内容交付工作流(Steps 1-6),不要等待 cron job。

交付摘要后,询问反馈:

"这是你的第一个 AI Builders Digest!几个问题:

  • 长度是否合适,还是你希望摘要更短/更长?
  • 有什么你希望我更多(或更少)关注的吗?
  • 你想添加或移除任何信息源吗?

只需告诉我,我会调整。随时输入 /ai 获取下一个摘要。"

等待他们的回应并应用任何反馈。然后确认更改。


内容交付 —— 摘要运行

Step 1: 加载配置

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js get-config

Step 2: 运行 fetch-and-prepare 脚本

此脚本以确定的方式处理所有数据获取 —— API 调用、去重、prompts、配置。你不需要自己获取任何东西。

cd ${CLAUDE_SKILL_DIR}/scripts && node fetch-and-prepare.js

脚本会自动将数据保存到 digest-data.json

如果脚本完全失败(返回 error status),检查:

  • yt-dlp 是否已安装?运行 yt-dlp --version 验证
  • 是否有网络连接?
  • 如果 yt-dlp 报错"not a bot",需要配置 YT_DLP_COOKIES(见 Step 1)
  • 如果 Twitter 被限流(guest auth rate limited),考虑配置 RETTIWT_API_KEY(见 Step 1)

Step 3: 读取数据文件

使用 Read 工具读取临时数据文件:

数据文件路径:${CLAUDE_SKILL_DIR}/digest-data.json

JSON 结构包含:

  • config —— 用户的语言和交付偏好
  • podcasts —— 带完整转录的播客剧集
  • x —— builders 及其最近的 tweets(文本、URLs、bios)
  • blogs —— 带完整内容的博客文章
  • prompts —— 要遵循的重新整理指令
  • stats —— 剧集、tweets 和博客文章的计数
  • errors —— 非致命问题(忽略这些)

Step 4: 检查内容

如果 stats.podcastEpisodes 为 0 且 stats.xBuilders 为 0 且 stats.blogPosts 为 0, 告诉用户:"今天你的 builders 没有新更新。明天再来查看!"然后停止。

Step 5: 重新整理内容

你唯一的工作是从 JSON 重新整理内容。 不要从网络获取任何东西、访问任何 URLs 或调用任何 APIs。。一切都在 JSON 中。

JSON 的 prompts 字段已包含所有提示词的完整内容:

  • prompts.digest_intro —— 整体框架规则
  • prompts.summarize_podcast —— 如何重新整理播客转录
  • prompts.summarize_tweets —— 如何重新整理 tweets
  • prompts.summarize_blogs —— 如何重新整理博客文章
  • prompts.translate —— 如何翻译为中文

Tweets: x 数组包含带 tweets 的 builders。一次处理一个:

  1. 使用他们的 bio 字段作为他们的角色(例如 bio 说 "ceo @box" → "Box CEO Aaron Levie")
  2. 按照 prompts.summarize_tweets 汇总他们的 tweets
  3. 输出格式(每个 builder 一个块):
    **Box CEO Aaron Levie**
    - Summarized point 1...
    - Summarized point 2...
    https://x.com/levie/status/123
    

Podcasts: podcasts 数组包含带转录的剧集。

  1. 按照 prompts.summarize_podcast 汇总转录
  2. 输出格式:
    **Podcast Name — Episode Title**
    - Key insight 1...
    - Key insight 2...
    https://youtube.com/watch?v=xyz
    

Blogs: blogs 数组包含带内容的文章。

  1. 按照 prompts.summarize_blogs 汇总文章
  2. 输出格式:
    **Blog Name — Article Title**
    - Key point 1...
    - Key point 2...
    https://example.com/article
    

prompts.digest_intro 框架包装摘要在顶部。

Step 6: 应用语言设置

从 JSON 读取 config.language

如果是 "en": 仅输出英文(默认)

如果是 "zh": 按照 prompts.translate 将整个摘要翻译为中文

如果是 "bilingual": 对每个部分,先输出英文,然后是中文翻译:

**Box CEO Aaron Levie**
- AI agents will fundamentally reshape software procurement...
https://x.com/levie/status/123

**Box CEO Aaron Levie**
- Box CEO Aaron Levie 认为 AI agent 将从根本上重塑软件采购...
https://x.com/levie/status/123

**Replit CEO Amjad Masad launched Agent 4...**
https://x.com/amasad/status/456

**Replit CEO Amjad Masad 发布了 Agent 4...**
https://x.com/amasad/status/456

不要先输出所有英文然后所有中文。交替输出它们。

完全遵循此设置。不要混合语言。

Step 7: 输出摘要

直接输出重新整理后的摘要。


信息源管理

用户可以通过对话自定义他们的信息源。

查看当前源

"列出我的信息源" 或 "show my sources" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js list-sources

显示所有源(合并默认+用户)和当前模式。

添加源

"添加 Twitter 账号 @username" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js add-source x <name> <handle>

"添加播客频道 @channel" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js add-source podcast <name> <youtube_channel|youtube_playlist> <url> <id>

"添加博客 https://..." →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js add-source blog <name> <indexUrl> [articleBaseUrl]

移除/禁用源

"移除 @username" 或 "disable @username" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js remove-source x <handle>

或临时禁用:

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js toggle-source x <handle> false

切换模式

"仅使用我的自定义源" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js set-mode replace

"合并默认源和自定义源" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js set-mode merge

重置为默认

"重置为默认源" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js reset-sources

用户源文件格式

所有配置统一在 config/config.json 中:

{
  "language": "en",
  "sourceMode": "merge",
  "lookbackHours": 24,
  "sources": {
    "x_accounts": [
      { "name": "Account Name", "handle": "username", "enabled": true }
    ],
    "podcasts": [
      {
        "name": "My Podcast",
        "type": "youtube_channel",
        "url": "https://youtube.com/@mypodcast",
        "channelHandle": "mypodcast",
        "enabled": true
      }
    ],
    "blogs": [
      {
        "name": "My Blog",
        "type": "scrape",
        "indexUrl": "https://blog.example.com",
        "articleBaseUrl": "https://blog.example.com/posts/",
        "enabled": true
      }
    ]
  }
}
  • sourceMode: "merge" —— 使用 config.json 中的源列表(默认)
  • sourceMode: "replace" —— 同上(源列表即为你自定义的内容)
  • enabled: false —— 临时禁用而不删除

配置处理

当用户说听起来像设置更改的话时,处理它:

语言更改

  • "切换到中文/英文/双语" →
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js set-config language <en|zh|bilingual>

时间窗口更改

  • "调整时间窗口为 X 小时" →
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js set-config lookbackHours <hours>
  • "我想看更长时间的内容" → 建议增加时间窗口(如从 24h 到 48h 或 72h)
  • "只看最近的内容" → 减少时间窗口(如从 72h 到 24h)

示例对话:

用户: "调整时间窗口为 48 小时"
助手: "好的,已将时间窗口更新为 48 小时。现在每次摘要将包含过去 48 小时内的新内容。"

Prompt 更改

当用户想要自定义摘要的风格时,直接编辑 prompts/ 目录下的 prompt 文件。

使用 CLI 设置新内容:

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js set-prompt <filename> <new_content>

可用的 prompt 文件:

  • summarize-podcast.md — 播客摘要方式
  • summarize-tweets.md — Twitter 推文摘要方式
  • summarize-blogs.md — 博客文章摘要方式
  • digest-intro.md — 整体摘要格式和语气
  • translate.md — 英文内容如何翻译成中文

对话示例:

  • "让摘要更短/更长" → 编辑 summarize-tweets.mdsummarize-podcast.md
  • "更多关注 [X]" → 编辑相关的 prompt 文件
  • "将语气改为 [X]" → 编辑相关的 prompt 文件
  • "重置为默认" →
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js reset-prompt <filename>

信息请求

  • "显示我的设置" →
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js get-config
  • "显示我的源" / "我正在关注谁?" →
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js list-sources
  • "显示我的 prompts" → 使用 CLI 获取所有 prompt 内容:
    cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js get-prompt summarize-podcast
    

任何配置更改后,确认你更改了什么。


Comments

Loading comments...