new-term-radar README

The project's README from github.com/zhuyansen/new-term-radar. As one markdown file: README.md.

new-term-radar

中文说明

A daily report of the names that are starting to surge in AI: new models, products, tools and repos, caught where they are said first, before they show up in keyword tools.

Built for people who make pages, posts or products around new terms: SEO for AI tool sites, newsletters, directories, anyone who wants to know about "Strata" or "Seedance" the day it appears and not two weeks later.

Why

A new name leaves a trail, in this order:

  1. A lab or a well-followed account says it on X; a model enters Hugging Face's trending list.
  2. One GitHub repo takes off on its own.
  3. Directories and competitors add pages for it; someone registers a domain for it and the site starts to rank.
  4. Your own site gets its first search impressions for it.
  5. Google Trends shows the curve, days or weeks later.

Keyword tools read step 5. This radar reads steps 1 to 4 every day and uses step 5 only to check itself.

One example it was built around: Niko1221/Strata was created on 2026-09-24 and had 7,700 stars nine days later. People were searching "niko strata" from 9/26, while no second repo carried the name and no keyword tool listed it. A single repo gaining 800 stars a day is the whole signal, and it is public.

What it reads

flowchart LR
  X["① X accounts you follow"] --> M
  HF["① Hugging Face trending"] --> M
  GH["② GitHub: one repo taking off"] --> M
  SM["③ Sitemaps of other sites"] --> M
  NS["③ New domains that already rank"] --> M
  M["merge terms"] --> J{"name of a new thing,\nor a common word?"}
  J -->|name| R["report + radar.db"]
  J -->|common word| O["listed at the bottom"]
  GSC["④ your Search Console\n(optional)"] --> R
  R -->|14 days later| T["⑤ Google Trends check"]
  T --> H["hit rate per signal"]
  H --> R
Signal What it catches Needs Cost
① X Names the accounts in your list used for the first time in 60 days AIsa key $0.003 per account per run
① Hugging Face Models new to the trending top 50; quantised copies grouped under the base name nothing free
② GitHub breakout A repo under 14 days old averaging 200+ stars a day, or +400 since yesterday; adds the search variants people use ("niko strata") nothing (a GitHub token raises the rate limit) free
③ Sitemaps Words that several new URLs on a site share and its older URLs rarely carried the sitemaps you list free
③ New sites Domains registered and first indexed in the last 90 days that already rank for 20+ keywords AIsa key about $0.13 per query, weekly
④ Search Console Queries your site got impressions for, for the first time (fresh data) your own Google token free
⑤ Review Each lead checked in Google Trends 14 days later, against its own baseline; hit rate and days ahead per signal AIsa key $0.0012 per search variant
Keyword table For the day's new names: the generic search terms behind them (what people do with the new thing), each sized and given a decision AIsa key; GoAnyAPI key optional about $0.15 a day for 5 names, $0.22 with GoAnyAPI
Name judge A small model scores every term: the name of one specific thing, or a common word? AIsa key a fraction of a cent per run

Prices are what AIsa charged in October 2026. With the example config (35 X accounts read three times a day, the keyword table for 5 names a day) a month costs about $15: $10 for the X reads, $5 for the keyword table. Read fewer accounts, or read them once a day, and it drops in proportion.

The keyword table

A name is half of what you need. "SynthID Detector" has a short life as a keyword and belongs to Google; the job it does, "ai image detector", is what people keep searching, and nobody owns it. Each day the radar reads the new names once more and writes one table with both:

| Keyword | Type | Behind | New? | Est. searches/day | Started rising | Peak vs gpts | Peak day | Last 7 days vs the 7 before | Now | Decision |
| **photocraft** | name | — | yes | 12747 | 2026-10-05 | 97 vs 3.1 | 2026-10-09 | — | still rising | **prioritize** |
| **claude haiku 5.5** | name | — | yes | 1863 | 2026-10-07 | 100 vs 23.7 | 2026-10-08 | ×6.0 | still rising | **prioritize** |
| **ai image detector** | generic | synthid detector | no | 2537 | — | 87 vs 31.6 | 2026-10-04 | ×1.2 | flat | watch |
| **photoshop alternative** ⚠ | generic | photocraft | no | 244 | — | 61 vs 61.7 | 2026-10-08 | ×1.8 | flat | skip |

(a real run, 2026-10-12, shortened)

How it is made (radar/usecases.py):

  1. Evidence: the most-liked posts that mention the name (X advanced search) and, for a repository, its README.
  2. Phrases: a model reads the evidence and writes the keyword an ordinary person would type for each job it sees people doing, with a quote that backs it. A phrase built on another product's name ("photoshop alternative") is kept and marked ⚠: demand often hangs on the incumbent, and whether to use someone's brand is your call. With a GoAnyAPI key (optional, below) the radar also takes Google Trends' related queries for the name: what people really searched together with it. For SynthID Detector that gave "ai photo detector", "google ai detector" and "ai detector"; these rows carry 🔎. Queries that hold the name are listed as its long-tails ("photocraft download", "nano banana 2.1 vs pro"). Queries that are themselves the names of other rising things ("gpt image 2.5" beside "nano banana 2.1") are kept as leads of their own.
  3. Screen: a second call scores how well the name answers each phrase, marks brands, and spots the names of other things; the loosely related ones are dropped. For Claude Haiku 5.5 it dropped all six proposed ("ai coding assistant", "github copilot alternative"); for SynthID Detector it kept all five.
  4. Volume: Google Ads monthly searches for the rest, one batch call. Phrases under min_volume are dropped; most are.
  5. Trends, twice per row: the term alone gives the shape (new or not, the day it started rising, the peak, the last week against the week before, what it is doing now); the term beside a benchmark keyword (gpts by default) gives the size.

Searches a day are estimates. A generic term's come from its own Google Ads volume, moved to today along its own Trends curve. The benchmark is then sized from those terms, and a name, which has no volume data yet, is sized against the benchmark.

Decision: prioritize = rose in the last 30 days, still up, at least min_daily searches a day. watch = rose but smaller, too early to read, or flat with steady demand of that size. skip = fading, or flat and small.

Each name is read twice, the day it appears and three days later, because on announcement day the posts are announcements and no use shows yet. The generic terms are kept as leads and reviewed after 14 days like the names.

What to expect from it, from the first eight names we ran it on:

Set "usecases": {"per_day": 0} or pass --skip usecases to turn it off.

One key, and an optional second

Everything the radar needs goes through AIsa: X posts, Google Trends and domain data (DataForSEO behind it) and the models that judge names and propose phrases. One key, pay per call, no subscriptions to X's API or DataForSEO.

That link is a referral link: signing up through it supports this project. The radar works the same with a key from anywhere on aisa.one.

Optional: GOANYAPI_API_KEY (goanyapi.com) improves the keyword table in two ways, for about $0.07 a day: it adds Google Trends' related queries for each name, and it reads the curve of the names and the bigger generic terms (1,000 searches a month or more, eight rows at most) from 30 days of daily data for one country, settled to yesterday. Those rows show the country after "Now", as in still rising (US). Without the key the table is built from the model's phrases and the worldwide series alone. The service is young (first released in August 2026); in our tests calls took 20 to 55 seconds and about one in ten failed, so the radar tries twice, reports a failure in the table and carries on.

Without an AIsa key the free signals still run (Hugging Face, GitHub, sitemaps, Search Console); the report then lists every term unsorted, because nothing judges which are names.

Quick start

Python 3.10 or newer. The radar uses only the standard library.

git clone https://github.com/zhuyansen/new-term-radar
cd new-term-radar
cp config.example.json config.json      # then edit: your X accounts, sitemaps, topics
export AISA_API_KEY=...                 # from https://go.aisa.one/yansen-zhu
python -m radar daily --out report.md

The first run builds its snapshots: yesterday's X vocabulary, star counts and sitemap URLs do not exist yet, so only GitHub breakouts (which need no yesterday) are reported. From the second run on, every signal reports what changed.

Two commands:

python -m radar sources --out sources.md           # ① only: X and Hugging Face. Run every few hours.
python -m radar daily --skip x,hf --out report.md  # everything else, once a day

sources writes a report only when there is a new name. daily with --skip x,hf lists what sources kept in the last 24 hours. If you run only once a day, use python -m radar daily and skip nothing.

Other flags: --skip takes any of x,hf,breakout,sitemaps,newsites,gsc,review,judge,usecases; --new-sites runs the weekly signal today; --mail sends the report (below); --state DIR moves the database and snapshots.

What a report looks like

From a real run on 2026-10-12 (shortened):

### Candidate new terms (names first; terms you already cover are marked)

| Term | Signals | Name score | Known | Search variants | Examples |
| **gridcraft** | GitHub breakout storytold/gridcraft ★3178 (626/day) | 0.95 | none | storytold gridcraft | GridCraft: an open-source, cl… |
| **artex** | GitHub breakout mhtsec/ARTEX ★3353 (825/day) | 0.85 | none | mhtsec artex, mht artex | AI 自主渗透测试系统 … |

Other rising terms (judged common words): anatomy, math, iphone use

### ⑤ Review (terms reported 14 days ago: did they rise in Google Trends?)

| Term | First reported | Verdict | Days ahead |
| strata | 2026-09-25 | hit | 3 |

and from sources:

| **qwen image 2.1** | Hugging Face: new at #4, 2 versions | 1.00 | none | Qwen/Qwen-Image-2.1-Turbo (text-to-image, ♥569) |
| **ltx 2.5** | Hugging Face: new at #6 | 0.90 | none | Lightricks/LTX-2.5 (image-to-video, ♥7347) |

daily also writes report.json beside the Markdown, with everything the report was built from.

config.json

Key What it is
lang "en" or "zh": the language of the report
x_accounts labs and bloggers: X handles to read. Labs say names first; pick the bloggers your field's new terms spread through
sitemaps Sites whose new pages you want to see. index is a sitemap, or a sitemap index when shards (a regex) picks which sub-sitemaps to read. pause is the seconds between requests to that site. strip_locale drops /en/, /zh-CN/ prefixes so one entry in many languages counts once
topics Name and regex: each topic gets its own section listing the leads, repos and queries that match
known_terms Terms you already have a page for, or never want reported. A lead that contains one, or is contained in one, is marked and not kept for review
stop_words Everyday words of your field, added to the built-in list (which is tuned for AI tooling)
judge model (any chat model on AIsa) and min_score (0.5)
breakout window_days, min_stars, velocity_min (stars a day), delta_min (stars since yesterday)
new_sites queries: a name and a SQL LIKE pattern on the domain ("%ai%"), one paid query each; weekday (0 = Monday)
review after_days (14) and per_day (5 leads a day)
usecases The keyword table. per_day (names read a day, 0 = off), model, benchmark (the keyword sizes are compared with), min_volume (monthly searches a phrase needs), min_daily (searches a day for "prioritize"), recheck_days (3), related (use related queries when GOANYAPI_API_KEY is set), related_geo (US), country_trends (read the bigger rows' curves from that country), country_min_volume (1000) and country_max (8)
gsc site (sc-domain:example.com) and token_file. Leave {} to turn the signal off

Please read each site's robots.txt before you add its sitemap, and keep pause at or above its crawl-delay. The example config makes a few dozen requests a day in total, spaced by pause.

Search Console (optional)

pip install google-auth-oauthlib
python scripts/gsc_auth.py gsc_client.json   # opens a browser once, writes gsc_token.json

gsc_client.json is an OAuth client of type "Desktop app" from Google Cloud Console, in a project with the Search Console API enabled. Then set "gsc": {"site": "sc-domain:your-site.com"}. The token is read-only and stays on your machine; .gitignore already lists it.

Mail (optional)

--mail sends the report through Resend. Set RESEND_API_KEY, EMAIL_FROM (an address on a domain you verified there) and RADAR_EMAIL_TO (comma-separated). pip install markdown for the HTML version.

Run it on GitHub Actions

.github/workflows/radar.yml runs sources every 8 hours and daily once a day, keeps the state in the Actions cache, and writes each report to the run summary. It is off until you opt in:

  1. Fork the repository (a private fork is fine).
  2. Remove config.json from .gitignore and commit your config. It holds no secrets.
  3. Add the secret AISA_API_KEY; optionally GOANYAPI_API_KEY, RESEND_API_KEY, EMAIL_FROM, RADAR_EMAIL_TO, GSC_TOKEN_JSON.
  4. Set the repository variable RADAR_ENABLED to true.

How the pieces decide

What we measured, and what we have not

Known issues

Development

pip install pytest markdown
python -m pytest -q tests

The tests cover the logic (name extraction, scoring, the store, the reports) and call no network.

License

MIT. Extracted from the radar that runs daily behind agentskillshub.top.

new-term-radar (zhuyansen/new-term-radar)

Searching Database…

这是什么东西?一个每日运行的工具,会盯着 X、Hugging Face、GitHub 和 sitemap,捕捉最新出现的 AI 模型、产品和仓库名称,在它们还没被关键词工具或 Google Trends 收录之前就抢先发现,让围绕新词做页面、发文章或做产品的人能抢先行动。
这是个网页面板还是命令行工具?它是一个 Python 命令行工具:你按计划定时运行它(用 cron 或 GitHub Actions),它会生成一份 Markdown 报告,外加一个 report.json,里面记录当天发现的所有线索。
怎么把它跑起来?克隆仓库并运行 `python -m radar daily`(或运行 `python -m radar sources`,只在有新名称时才出报告);第一次运行时因为还没有“昨天”的数据,只会先建立快照,所以只能看到 GitHub 上的爆发项目。
每个数据源都需要 API 密钥吗?不用。GitHub 爆发项目、Hugging Face 热门榜和 sitemap 扫描完全不需要密钥;读取 X、给名称打分、生成关键词表和查询 Google Trends 则需要 AIsa 密钥,另外可以再配一个 GoAnyAPI 密钥(可选),用来获取更丰富的相关查询数据和分国家的 Trends 数据。
如果我不付费使用 AIsa 会怎样?没有 AIsa 密钥时只有免费的数据源会运行(Hugging Face、GitHub、sitemap、Search Console),而且报告里的词条不做排序,因为没有任何环节去判断哪些才是真正的新名称。
这个工具是给谁用的?给那些围绕 AI 新词做页面、写文章或做产品的人:AI 工具站的 SEO 从业者、新闻通讯、导航站,以及任何想在一个名字(比如 'Strata')刚出现当天就知道、而不是拖到两周后的人。
它需要我的 Search Console 数据吗?数据存到哪里?Search Console 集成是可选的,使用只读的 OAuth 令牌,只保存在你自己的电脑上(令牌文件已列入 .gitignore)。
关键词表具体能给我什么?对它发现的每个新名称,radar 会生成人们实际会搜的通用搜索短语(比如围绕 SynthID Detector 会生成 'ai image detector'),用 Google Ads/Trends 的搜索量来衡量规模,并把每条标记为 prioritize(优先做)、watch(观察)或 skip(跳过)。
为什么一个 GitHub 仓库本身就能算一个信号?一个全新的仓库如果每天涨几百颗星(例如 Niko1221/Strata:九天涨了 7,700 颗星),这本身就是某个名字正在爆发的公开证据,比关键词工具或 Trends 察觉到要早好几天。
运行这个工具每个月大概花多少钱?按示例配置(读取 35 个 X 账号、每天三次,每天为 5 个名称生成关键词表)计算,作者称 AIsa 的费用大约是每月 15 美元;减少读取的账号数量或降低频率,费用会按比例下降。
它能每天把报告发邮件给我吗?可以,加上 --mail 参数,设置好 RESENDAPIKEY、EMAILFROM 和 RADAREMAILTO 之后,它就会通过 Resend 把报告发出去。
Creator
zhuyansen
Size
1.7 MB
Stars
1.1K
Updated
CommitOct 14
Age
6d
Commits · 90 Days