SEO Image Generator
AgriciDaniel/claude-seo
Generates Open Graph previews, blog hero images, product photos and infographics for SEO use through Gemini image tools and the banana extension.
AI 热点雷达 - 在新 AI 工具/关键词爆火前发现它们,抢注域名、建站套利. An agent skill from kennyzir/7deer_skills.
$ npx skills add kennyzir/7deer_skills --skill x-demand-radar -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kennyzir/7deer_skills x-demand-radar --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/kennyzir/7deer_skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/x-demand-radar .claude/skills/x-demand-radar && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "x-demand-radar" agent skill from https://github.com/kennyzir/7deer_skills/tree/main/x-demand-radar into .claude/skills/x-demand-radar/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "x-demand-radar", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/kennyzir/7deer_skills/tree/main/x-demand-radarType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add kennyzir/7deer_skills --skill x-demand-radar -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kennyzir/7deer_skills x-demand-radar --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kennyzir/7deer_skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/x-demand-radar .agents/skills/x-demand-radar && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "x-demand-radar" agent skill from https://github.com/kennyzir/7deer_skills/tree/main/x-demand-radar into .agents/skills/x-demand-radar/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "x-demand-radar", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kennyzir/7deer_skills --skill x-demand-radar -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kennyzir/7deer_skills x-demand-radar --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kennyzir/7deer_skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/x-demand-radar .cursor/skills/x-demand-radar && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "x-demand-radar" agent skill from https://github.com/kennyzir/7deer_skills/tree/main/x-demand-radar into .cursor/skills/x-demand-radar/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "x-demand-radar", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/kennyzir/7deer_skills.git --path x-demand-radar--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add kennyzir/7deer_skills --skill x-demand-radar -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kennyzir/7deer_skills x-demand-radar --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kennyzir/7deer_skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/x-demand-radar .gemini/skills/x-demand-radar && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "x-demand-radar" agent skill from https://github.com/kennyzir/7deer_skills/tree/main/x-demand-radar into .gemini/skills/x-demand-radar/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "x-demand-radar", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install kennyzir/7deer_skills x-demand-radarInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add kennyzir/7deer_skills --skill x-demand-radar -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kennyzir/7deer_skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/x-demand-radar .github/skills/x-demand-radar && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "x-demand-radar" agent skill from https://github.com/kennyzir/7deer_skills/tree/main/x-demand-radar into .github/skills/x-demand-radar/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "x-demand-radar", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kennyzir/7deer_skills --skill x-demand-radar -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kennyzir/7deer_skills x-demand-radar --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kennyzir/7deer_skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/x-demand-radar .opencode/skills/x-demand-radar && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "x-demand-radar" agent skill from https://github.com/kennyzir/7deer_skills/tree/main/x-demand-radar into .opencode/skills/x-demand-radar/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "x-demand-radar", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
x-demand-radarAI 热点雷达 - 在新 AI 工具/关键词爆火前发现它们,抢注域名、建站套利. An agent skill from kennyzir/7deer_skills.
X Demand Radar is an agent skill from kennyzir/7deer_skills. AI 热点雷达 - 在新 AI 工具/关键词爆火前发现它们,抢注域名、建站套利。 触发条件: - 用户说「跑雷达」、「热点扫描」、「X 雷达」 - cron 每 12 小时自动触发(9:00, 21:00) 核心目标: 在 AI 关键词/工具首次病毒传播 → 大众认知的 24-72h 窗口内发现, 抢注域名 + 建工具站 + 吃搜索流量红利。 典型案例:Nano Banana、Ghibli AI、OpenClaw、Hermes
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts and reference files (for example `references/github-freshness-verification.md`, `references/known-stale-repos.md` and `references/x-auth-and-collection.md`).
It sits in Productivity & Automation, covering Scheduled and recurring tasks and Image generation. It works with Google Gemini. The repository describes itself as: Composable, auditable Agent Skills for building Roblox game sites—from opportunity and keyword research to content, SEO, updates, and backlinks. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 32a6881. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
gitpython3From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
x.comAlso links to:
github.comproducthunt.comnews.ycombinator.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
X Demand Radar loads about 3.6k tokens when it runs, and up to ~5.8k if it reads all its reference files. Until then it costs about 58 tokens; SKILL.md has 338 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from kennyzir/7deer_skills at commit 32a6881, republished under its MIT licence (© kennyzir). 338 words, ~3,552 tokens.
.claude/skills/x-demand-radar/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.最终得分 = X 热度 × 项目新鲜度
raw_hot_score = likes × log(1 + likes_per_hour)final_score = raw_hot_score × freshness_multiplier🔴 关键教训:UI-TARS-desktop (bytedance) 29K 星但 repo 已存在数月,X 帖子虽然是新的但项目不新 → 套利空间归零。热度高 ≠ 项目新。
每层目标不同,覆盖野生热点 → 新品发布 → 病毒传播 → 开源爆发 → FOMO 需求全链路。
捕捉不带 AI 标签但疯狂传播的产品/游戏/工具。这是捕捉 H5 游戏、网页工具等非 AI 热点的关键层。
("this is insane" OR "game changer" OR "holy shit" OR "mind blown" OR "this is crazy" OR "cannot believe" OR "blown away") (game OR tool OR app OR website OR "web app" OR builder OR generator OR platform OR "waitlist") min_faves:200 since:SINCE_48H⚠️ 注意:L0 不要求 AI 关键词,min_faves 提升到 200 以过滤噪声。
捕捉"刚刚发布/开源"的 AI 工具,最早信号。
("just launched" OR "just dropped" OR "just shipped" OR "new AI tool" OR "just released" OR "introducing" OR "launching today") (AI OR LLM OR GPT OR agent OR open source) min_faves:30 since:SINCE_24H捕捉非 AI 的新发布产品/游戏/工具。
("just launched" OR "just dropped" OR "just shipped" OR "just released" OR "introducing" OR "launching today" OR "new" OR "announcing") (game OR tool OR app OR website OR "web app" OR builder OR platform) min_faves:100 since:SINCE_24H捕捉正在被疯转的 AI 产品。
("this is insane" OR "game changer" OR "holy shit" OR "mind blown" OR "this is crazy" OR "cannot believe" OR "blown away") (AI OR LLM OR GPT OR agent OR tool) min_faves:100 since:SINCE_48H开源 AI 项目突然爆火。
("github.com" OR "open source") (AI OR LLM OR GPT OR agent) ("stars" OR "trending" OR "blew up" OR "blowing up" OR "just hit") min_faves:100 since:SINCE_48H等不及、求邀请、排长队 = 需求溢出信号。
("waitlist" OR "beta access" OR "invite" OR "early access" OR "can't wait" OR "need this") (AI OR LLM OR tool OR app) min_faves:50 since:SINCE_72H[Cron: 每12小时]
↓
[浏览器注入 X Cookie → 已登录状态]
↓
[L0-L4 逐层搜索 → JS 滚动收集]
↓
[合并去重 → 计算 raw_hot_score]
↓
[🔍 Step 2.5: 项目新鲜度校验]
↓
[AI 提取:关键词 + 产品名 + 项目年龄 + 一句话总结]
↓
[Top 10 排序 → 生成报告]
↓
[直接发送飞书]const now = new Date();
const since24h = new Date(now - 24*60*60*1000).toISOString().split('T')[0];
const since48h = new Date(now - 48*60*60*1000).toISOString().split('T')[0];
const since72h = new Date(now - 72*60*60*1000).toISOString().split('T')[0];
const SEARCH_GROUPS = [
{
layer: 'L0-野生病毒',
q: `("this is insane" OR "game changer" OR "holy shit" OR "mind blown" OR "this is crazy" OR "cannot believe" OR "blown away") (game OR tool OR app OR website OR "web app" OR builder OR generator OR platform OR "waitlist") min_faves:200 since:${since48h}`,
since: since48h
},
{
layer: 'L1-新品发射-AI',
q: `("just launched" OR "just dropped" OR "just shipped" OR "new AI tool" OR "just released" OR "introducing") (AI OR LLM OR GPT OR agent OR "open source") min_faves:30 since:${since24h}`,
since: since24h
},
{
layer: 'L1-b-泛新品',
q: `("just launched" OR "just dropped" OR "just shipped" OR "just released" OR "introducing" OR "launching today" OR "new" OR "announcing") (game OR tool OR app OR website OR "web app" OR builder OR platform) min_faves:100 since:${since24h}`,
since: since24h
},
{
layer: 'L2-病毒传播',
q: `("this is insane" OR "game changer" OR "holy shit" OR "mind blown" OR "this is crazy" OR "cannot believe" OR "blown away") (AI OR LLM OR GPT OR agent OR tool) min_faves:100 since:${since48h}`,
since: since48h
},
{
layer: 'L3-GitHub爆发',
q: `("github.com" OR "open source") (AI OR LLM OR GPT OR agent) ("stars" OR "trending" OR "blew up" OR "blowing up" OR "just hit") min_faves:100 since:${since48h}`,
since: since48h
},
{
layer: 'L4-FOMO',
q: `("waitlist" OR "beta access" OR "invite" OR "early access" OR "can't wait" OR "need this") (AI OR LLM OR tool OR app) min_faves:50 since:${since72h}`,
since: since72h
}
];// 在 browser console 中运行
async function collectAndScore(sinceHours) {
let allPosts = [];
let prevCount = 0;
let scrolls = 0;
const maxScrolls = 12;
while (scrolls < maxScrolls) {
const articles = document.querySelectorAll('article');
articles.forEach((a) => {
const textEl = a.querySelector('[data-testid="tweetText"]') || a.querySelector('[lang]');
const text = textEl?.innerText || '';
if (!text || text.length < 30) return;
const likesEl = a.querySelector('[data-testid="like"] span');
let likes = 0;
if (likesEl) {
const txt = likesEl.innerText.replace(/,/g, '');
if (txt.includes('K')) likes = Math.round(parseFloat(txt.replace('K','')) * 1000);
else if (txt.includes('M')) likes = Math.round(parseFloat(txt.replace('M','')) * 1000000);
else likes = parseInt(txt) || 0;
}
// 提取作者
const allLinks = Array.from(a.querySelectorAll('a[role="link"]'));
const authorLink = allLinks.find(l => l.href && l.href.includes('x.com/') && !l.href.includes('/status/') && !l.href.includes('search') && !l.href.includes('hashtag'));
const author = authorLink?.href?.split('/').pop() || '';
// 提取时间
const timeEl = a.querySelector('time');
const time = timeEl?.getAttribute('datetime') || '';
// 提取链接
const statusLink = allLinks.find(l => l.href && l.href.includes('/status/'));
const link = statusLink?.href || '';
// 提取转发数
const repostEl = a.querySelector('[data-testid="retweet"] span, [data-testid="repost"] span');
let reposts = 0;
if (repostEl) {
const txt = repostEl.innerText.replace(/,/g, '');
if (txt.includes('K')) reposts = Math.round(parseFloat(txt.replace('K','')) * 1000);
else reposts = parseInt(txt) || 0;
}
if (!allPosts.some(p => p.text === text)) {
allPosts.push({ text: text.substring(0, 400), likes, reposts, author, time, link });
}
});
if (allPosts.length === prevCount && scrolls > 2) break;
prevCount = allPosts.length;
window.scrollBy(0, 600);
await new Promise(r => setTimeout(r, 1500));
scrolls++;
}
// 计算热力值
const now = new Date();
return allPosts.map(p => {
const postTime = new Date(p.time);
const hoursAgo = Math.max(0.1, (now - postTime) / (1000 * 60 * 60));
const likesPerHour = p.likes / hoursAgo;
const hotScore = Math.round(p.likes * Math.log(1 + likesPerHour));
return { ...p, hoursAgo: Math.round(hoursAgo * 10) / 10, likesPerHour: Math.round(likesPerHour), hotScore };
}).sort((a, b) => b.hotScore - a.hotScore);
}⚠️ X 热度 ≠ 项目新。旧项目被重新提起可能在 X 上很热,但套利窗口已关闭。
先查已知旧项目清单:references/known-stale-repos.md — 匹配到的直接排除,无需导航 GitHub。
对每个包含 GitHub 链接的信号,必须 navigate 到仓库页面验证创建日期:
// 在 GitHub 仓库页面运行
const createdEl = document.querySelector('relative-time');
const createdAt = createdEl?.getAttribute('datetime') || '';
const daysSinceCreated = (new Date() - new Date(createdAt)) / (1000 * 60 * 60 * 24);
let freshnessLabel;
if (daysSinceCreated < 7) freshnessLabel = '🆕 新品';
else if (daysSinceCreated < 30) freshnessLabel = '📈 上升';
else if (daysSinceCreated < 90) freshnessLabel = '⚠️ 旧项目回锅';
else freshnessLabel = '💀 古董(排除)';
const freshnessMultiplier = daysSinceCreated < 7 ? 1.0 : daysSinceCreated < 30 ? 0.7 : daysSinceCreated < 90 ? 0.3 : 0;
const finalScore = Math.round(rawHotScore * freshnessMultiplier);过滤规则:freshnessMultiplier === 0 的项目直接排除,不出现在报告中。
对于非 GitHub 项目(如新产品发布、API、Waitlist),默认 freshnessMultiplier = 0.8(给非开源项目一定宽容度),但如果能从页面提取发布日期则优先使用实际日期。
// 排除话题:crypto、战争、NSFW、meme coin
const excludePatterns = [
/crypto|bitcoin|nft|token.*sale/i,
/war|killed|attack|bomb/i,
/nsfw|onlyfans|porn/i,
/ai.*girlfriend|ai.*waifu/i,
/meme.*coin/i
];
const filtered = allPosts
.filter(p => p.hotScore >= 200) // 热力值阈值
.filter(p => !excludePatterns.some(r => r.test(p.text)))
.slice(0, 15);对每条帖子运行 prompt:
从以下 X 帖子提取热点关键词(不限 AI):
帖子:{{ text }}
发布者:@{{ author }}
点赞:{{ likes }} | 转发:{{ reposts }}
发布:{{ hoursAgo }}小时前 | 增速:{{ likesPerHour }}赞/小时
输出:
- **关键词/产品名**:[提取 1-3 个核心关键词]
- **一句话**:[这个工具/项目做什么]
- **热度评分**:[hotScore]
- **套利信号**:强/中/弱(增速>500赞/h = 强,100-500 = 中,<100 = 弱)每个信号必须包含以下全部字段:
{
"date": "YYYY-MM-DD",
"signals": [{
"rank": 1,
"keyword": "产品/项目名",
"description": "一句话描述做什么",
"likes": 188, "velocity": 109, "hotScore": 884,
"freshness": "🆕 新品", "finalScore": 884, "signal": "🟡 中",
"author": "@handle",
"tweetLink": "https://x.com/user/status/xxx",
"hoursAgo": 1.7,
"github": "owner/repo", "stars": "2.8K",
"sourceLayer": "L1 新品发射-AI",
"arbitrageDirection": "套利方向说明 + 推荐域名",
"domainSuggestions": ["domain1.com", "domain2.com"],
"actionPlan": "具体行动方案:做什么、怎么做、为什么现在是时机",
"painPoint": "用户痛点:为什么有人需要这个"
}]
}🔴 关键规则:每个信号必须包含 tweetLink(原帖链接)、arbitrageDirection(套利方向)、domainSuggestions(域名建议)、actionPlan(行动方案)、painPoint(痛点)。缺少任一字段的信号视为不完整,不出现在报告中。
🔍 AI 热点雷达 | {{DATE}} {{TIME}}
> **数据来源:X/Twitter 实时抓取 @claw0x**
## 📰 Today's News 侧边栏
| 话题 | 时间 | 帖数 |
|------|------|------|
| {{topic}} | {{age}} | {{posts}} |
## 🔥 Top 10 热力榜
| # | 关键词 | 赞 | 增速(赞/h) | 热力值 | 新鲜度 | 最终得分 | 套利信号 |
|---|--------|-----|-----------|--------|--------|---------|---------|
| 1 | xxx | 5.2K | 1,200 | 36,000 | 🆕 0.8天 | 36,000 | 🔴 强 |
### 🚀 立即行动(套利信号 ≥ 中)
1. **{{keyword}}** — {{summary}}
- @{{author}} | {{likes}}赞 | {{likesPerHour}}赞/小时 | {{hoursAgo}}h前
- GitHub: `{{owner/repo}}` | 创建 {{daysAgo}} 天前 | {{stars}} stars
- 域名:{{domain}}.com({{status}})
- 套利方向:{{arbitrageDirection}}
## ⚠️ 已排除(旧项目回锅)
| 项目 | 原因 | 星标 | 年龄 |
|------|------|------|------|
| UI-TARS-desktop (ByteDance) | 桌面自动化 agent,X 重新被提起 | 30.9K | >12个月 |
---
📊 扫描参数
- 搜索层:L0 野生 / L1 新品-AI / L1-b 泛新品 / L2 病毒 / L3 GitHub / L4 FOMO
- 时间范围:{{since}} - {{until}}
- 原始帖子:{{raw}} 条 → 去重 {{deduped}} → 过滤 {{filtered}} → 精选 {{top}} 条
- GitHub 校验:排除 {{excluded}} 个旧项目
- 浏览器状态:已登录 @claw0x
## 🔮 关键洞察
(列出 2-4 个本日扫描发现的关键趋势)cd /Volumes/sunzi/Code/ludusAI
# Save per-date JSON snapshot for /radar detail pages
cp public/data/demand-radar.json "public/data/radar/YYYY-MM-DD.json" 2>/dev/null || true
# Build manifest
ls public/data/radar/*.json | python3 -c "
import json,os,sys
m=[]
for f in sys.stdin.read().strip().split():
d=json.load(open(f))
t=d.get('top10',[])
m.append({'date':os.path.basename(f).replace('.json',''),'topKeywords':[x.get('keyword','') for x in t[:3]],'signalCount':len(t),'newsTopics':[n.get('topic','') for n in d.get('news',[])[:2]],'insights':d.get('insights',[])[:3],'strongSignal':sum(1 for x in t if '强' in x.get('signal','')),'mediumSignal':sum(1 for x in t if '中' in x.get('signal','')),'raw':d.get('scanParams',{}).get('raw',0),'top':d.get('scanParams',{}).get('top',0),'excluded':d.get('scanParams',{}).get('githubExcluded',0),'layers':d.get('scanParams',{}).get('layers',[])})
m.sort(key=lambda x:x['date'],reverse=True)
json.dump(m,open('public/data/radar-manifest.json','w'),ensure_ascii=False,indent=2)
print(f'manifest: {len(m)} reports')
"
git add daily-reports/YYYY-MM-DD/x-demand-radar.md public/data/demand-radar.json public/data/radar/YYYY-MM-DD.json public/data/radar-manifest.json
git commit -m "radar: YYYY-MM-DD HH:MM CST - <top signal summary>"
git pull --rebase && git push # ⚠️ 必须 rebase,防止 non-fast-forward 拒绝⚠️ 必须用 send_message 发飞书,不依赖 cron announce。
⚠️ 详见 references/x-auth-and-collection.md — 包含完整注入流程、async IIFE 模板、K/M 解析、hotScore 公式。
// 先导航到 x.com 再注入,然后验证 x.com/home 登录成功
document.cookie = "auth_token=06dec19f563932f39d96f93e9d8c005d3de9b7a9; domain=.x.com; path=/; secure; SameSite=None";daily-reports/YYYY-MM-DD/x-demand-radar.md + public/data/demand-radar.jsonbrowser_console 不能直接 return:必须用 IIFE (async function() { ... })() 包裹,否则报 Illegal return statement。详见 references/x-auth-and-collection.md。execute_code 不支持大段内联 JSON:将 JSON 数据直接嵌入 Python 字符串会导致 SyntaxError: leading zeros 等解析错误。正确做法是先用 write_file 写入临时文件,再用 open() 读取:with open('/tmp/data.json') as f: data = json.load(f)。同样,read_file 返回带行号前缀的文本(如 1|{...}),不能直接 json.loads(),需用原生 open()。git pull --rebase && git push,不要单独 git push。text.substring(0, 300) 可能截掉末尾的 GitHub 链接。如果帖子中提到 GitHub 但未提取到 github.com 链接,需导航到原帖 (browser_navigate 到 link 字段) 提取完整 URL,或用 GitHub 搜索 repo name 关键词查找。min_faves:200 挡不住大量「game changer」口语化帖子(政治/体育/生活类)。首次运行 L0 收集 19 条中仅有 4 条有潜在产品价值。建议:若连续两次雷达 L0 信号/噪声比 < 20%,将 min_faves 提升至 500,或在 L0 查询中加入 -(political OR sports OR religion) 排除词。© kennyzir, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (scripts, references) in x-demand-radar of kennyzir/7deer_skills.
Open the folder on GitHubat commit 32a6881
X Demand Radar next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| X Demand Radar this skillkennyzir/7deer_skills | 322 | — | ~3.6k | Automated safety check: Pass | MIT | |
| SEO Image GeneratorAgriciDaniel/claude-seo | 19k | 2 repos | ~2.1k | Automated safety check: Pass | MIT | |
| Chatgpt Image Adkrusemediallc/arcads-claude-code | 1.6k | — | ~2.7k | Automated safety check: Notes | MIT | |
| Article To Wechat Coverdracohu2025-cloud/draco-skills-collection | 227 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Gemini SkillWJZ-P/gemini-skill | 832 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Ecom ShotMagicCube/agentara | 516 | — | ~1.5k | Automated safety check: Pass | None |
AgriciDaniel/claude-seo
Generates Open Graph previews, blog hero images, product photos and infographics for SEO use through Gemini image tools and the banana extension.
krusemediallc/arcads-claude-code
Generate one or more standalone Meta image-ad creatives via ChatGPT Image 2 (gpt-image-2) through the Arcads external API.
dracohu2025-cloud/draco-skills-collection
从飞书文档或本地 Markdown 提炼文章主题与风格,调用 OpenRouter 的 Nano Banana / Gemini Flash Image 生成 2.35:1 的微信公众号封面图,并可选上传为微信封面素材。
WJZ-P/gemini-skill
通过 Gemini 官网(gemini.google.com)执行生图、对话等操作。用户提到"生图/画图/绘图/nano banana/nanobanana/生成图片"等关键词时触发。操作方式分三级优先级:首选 MCP 工具 → 次选 Skill 脚本 → 最次连接 Skill 浏览器手动操作(需用户授权)。禁止自行启动外部浏览器访问 Gemini。
MagicCube/agentara
Generate Nano Banana Pro (Gemini 3 Pro Image) prompts for e-commerce product photography.
garrettjsmith/localseoskills
Manages persistent work state (briefs) for local SEO engagements.
kennyzir/7deer_skills
Audit a Roblox or game-site homepage against the RB Auto Golden Homepage model.
kennyzir/7deer_skills
Orchestrate an evidence-backed seven-stage Roblox site growth pipeline from opportunity assessment through keyword research, source collection, site planning, SEO QA, freshness, and growth.
kennyzir/7deer_skills
YouTube video transcription and memory workflow. An agent skill from kennyzir/7deer_skills.
kennyzir/7deer_skills
Research backlink opportunities, record contact evidence, and generate personalized local outreach drafts from user-provided product and contact data.
kennyzir/7deer_skills
HTML5 游戏发现雷达 - 多源监测又新又热的 HTML5 游戏,识别 SEO 套利窗口. An agent skill from kennyzir/7deer_skills.
kennyzir/7deer_skills
Evaluate a Roblox game's 30-day breakout potential from public evidence with auditable scores, missing-data bounds, frozen forecasts, and outcome reviews.
Works with
AI 热点雷达 - 在新 AI 工具/关键词爆火前发现它们,抢注域名、建站套利. An agent skill from kennyzir/7deer_skills. X Demand Radar is an agent skill from kennyzir/7deer_skills.
X Demand Radar fits situations like: tasks that involve Scheduled and recurring tasks; tasks that involve Image generation.
Run `npx skills add kennyzir/7deer_skills --skill x-demand-radar -a claude-code`. Or copy the skill folder (x-demand-radar in kennyzir/7deer_skills) into .claude/skills/x-demand-radar in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kennyzir/7deer_skills --skill x-demand-radar -a codex`. Or copy the skill folder (x-demand-radar in kennyzir/7deer_skills) into .agents/skills/x-demand-radar in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kennyzir/7deer_skills --skill x-demand-radar -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/x-demand-radar, .gemini/skills/x-demand-radar, .github/skills/x-demand-radar and .opencode/skills/x-demand-radar in your project.
Going by SKILL.md and its folder, X Demand Radar needs JavaScript for the scripts in its folder and the command-line tools its instructions call (git and python3). Our summary lists: Node.js.
SKILL.md names 4 domains. In commands or code: x.com; the agent is likely to contact it when it follows the instructions. As links in the text: github.com, producthunt.com and news.ycombinator.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
X Demand Radar is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with X Demand Radar: SEO Image Generator (AgriciDaniel/claude-seo, 19k stars), Chatgpt Image Ad (krusemediallc/arcads-claude-code, 1.6k stars), Article To Wechat Cover (dracohu2025-cloud/draco-skills-collection, 227 stars) and Gemini Skill (WJZ-P/gemini-skill, 832 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
kennyzir (a GitHub user) maintains it in kennyzir/7deer_skills, which has 322 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on September 29, 2026.
Source: kennyzir/7deer_skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.