HTML 77.2%
TypeScript 10.5%
Python 9.6%
JavaScript 2.5%
1"""Qwen (Alibaba) — official blog RSS → ANNOUNCEMENT / RELEASE events; release posts followed for LLM extraction.23Almost every Qwen post announces a model (Qwen3-…, Qwen-Image, Qwen3Guard…), so items whose title names a model are treated as releases4and their article is queued with `llm_task: release_announcement` (the model passport is filled by the LLM stage, never guessed here).5"""6from __future__ import annotations78import re910from aiatlas.registry import org_ref11from aiatlas.sdk.connector import BaseConnector, Parsed, RunContext12from aiatlas.sdk.facts import Facts, Target13from aiatlas.sdk.fetch import FetchResult1415from ._common import RELEASE_WORDS1617FEED = "https://qwenlm.github.io/blog/index.xml"18MODEL_IN_TITLE = re.compile(r"\b(Qwen[\w.\-]*|QwQ[\w.\-]*|QVQ[\w.\-]*|Qwen-Image[\w.\-]*|Qwen-Agent|Wan[\w.\-]*)\b", re.IGNORECASE)19MAX_FOLLOW = 30202122class QwenConnector(BaseConnector):23 name = "qwen"24 label = "Qwen — blog feed"25 description = "Qwen team blog (qwenlm.github.io) RSS: model release posts as RELEASE announcements queued for LLM extraction."26 source_key = "qwenlm.github.io"27 version = "1"28 parser_version = "1"29 interval_seconds = 360030 min_interval_seconds = 180031 rate_per_min = 1032 tier = 133 priority = 034 expected_min_records = 135 concurrency = 23637 async def discover(self, ctx: RunContext) -> list[Target]:38 return [Target(url=FEED, doc_type="feed", key="feed", min_bytes=1000)]3940 async def extract(self, ctx: RunContext, target: Target, res: FetchResult, parsed: Parsed) -> Facts:41 facts = Facts()42 org = org_ref("qwen")43 facts.entities.append(org)44 if parsed.kind != "feed":45 return facts46 for i, it in enumerate(parsed.feed_items):47 if not it.url or not it.title:48 continue49 names = sorted({m.group(1) for m in MODEL_IN_TITLE.finditer(it.title)})50 is_release = bool(names) or bool(RELEASE_WORDS.search(f"{it.title} {it.summary or ''}"))51 facts.event("ANNOUNCEMENT", "release" if is_release else "company", f"Qwen: {it.title}", entity=org, importance=2 if is_release else 1,52 effective_at=it.published_at, dedupe_key=f"ANNOUNCEMENT:{it.url}", source_url=it.url,53 meta={"source": "qwenlm.github.io/blog", "summary": (it.summary or "")[:300], "models_mentioned": names[:5], "is_release": is_release})54 if i < MAX_FOLLOW:55 facts.follow(it.url, doc_type="news", needs_llm=is_release, priority=1 if is_release else 3,56 meta={"llm_task": "release_announcement", "published_at": it.published_at.isoformat() if it.published_at else None, "title": it.title,57 "models_mentioned": names[:5]})58 facts.document_title, facts.document_entity = "Qwen blog", org59 return facts606162CONNECTORS = [QwenConnector]63