원클릭으로
vv-horizon-briefing
Fetch tech news from configured sources, score and filter with AI, generate daily briefing with deep analysis
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Fetch tech news from configured sources, score and filter with AI, generate daily briefing with deep analysis
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | vv-horizon-briefing |
| description | Fetch tech news from configured sources, score and filter with AI, generate daily briefing with deep analysis |
Generate a daily tech briefing from configured data sources (GitHub, HackerNews, RSS, Reddit, Telegram). Fetches content via a Python script, then uses AI to score, filter, summarize, and deeply analyze top items. No external AI API key required.
User types /vv-horizon-briefing or asks to "generate a briefing" / "run horizon briefing".
config.json in the current working directory. If not found:
references/config-schema.md from this skill directory and show the exampleassets/presets/default-config.json to config.json (LLM/Agent engineering sources: HackerNews, Reddit r/LocalLLaMA + r/MachineLearning, 量子位, 新智元, Simon Willison, Hugging Face, LangChain, ArXiv cs.AI, Google Cloud Blog, GitHub releases for anthropics/anthropic-sdk-python and langchain-ai/langchain)python3 -c "import httpx; import feedparser; import bs4; print('OK')"scripts/install_deps.sh. If the user declines, stop and explain manual install.config.json and extract output.output_dir (if present). Determine the base output directory:
output.output_dir is set, use it as {base_dir}./data as {base_dir}{YYYY-MM-DD}. Create the output directory {base_dir}/{YYYY-MM-DD}/ if it does not exist.python3 <skill_dir>/scripts/fetch.py --config config.json --days Nfetched.json is not created, report the error output to the user and stop — do not proceed to Phase 3.fetched.json to {base_dir}/{YYYY-MM-DD}/fetched.json. Read it from that path. The file is a JSON object with an items array and a config_snapshot object.Read references/scoring-criteria.md from this skill directory before scoring.
Score each item 0–10 using the 5-dimension rubric (新颖性, 影响力, 技术深度, 社区信号, 时效性 — 2 points each). Sort descending, take top N from config_snapshot.top_n (default 10).
Output a scoring summary table to the user showing rank, title, and score.
After scoring, before generating summaries:
{source_analysis} paragraph:共抓取 {total} 条,来自 {source_count} 个源。
最活跃源:{top_source}({n} 条,均分 {avg}/10)
今日热点主题:{theme_1}、{theme_2}、{theme_3}
Read references/summary-writing-guide.md from this skill directory before writing.
For each language in config_snapshot.languages, generate a summary following assets/templates/summary.md:
"en" = English, "zh" = ChineseAnthropic 发布了 Claude 4 (not Anthropic发布了Claude4), 评分 8/10 (not 评分8/10). No exceptions — even in markdown link text and bullet points. After writing the summary, scan every line and fix any violations before writing the file.{one_sentence_abstract} — one complete sentence, not a title rewrite. CRITICAL: Every abstract MUST contain at least one specific fact — a number, version, percentage, metric, or named entity. Vague abstracts like "某公司发布了新模型" FAIL — write "某公司发布了 405B 参数的模型 X v3.1,性能提升 23%". If the source content is too short to extract specific data, infer from title keywords or note the significance explicitly (e.g. "首次开源" counts as a specific claim).{source_analysis} paragraph from Phase 3.5{other_items_by_category}: take all scored items NOT in top-N, group them by category (infer category from title/content, e.g. 模型发布、工具框架、研究论文、行业动态), render each group as a markdown section with bullet links: - [{title}]({url}) · {source_type} · {score}/10Write to: {base_dir}/{YYYY-MM-DD}/summary-{lang}.md
After writing summary-zh.md (if zh is in config languages), run a self-check:
summary-zh.md fileFor articles in Phase 5, the Pangu spacing rule is embedded in each sub-agent prompt — no separate check needed here.
Before dispatching, read both reference files from this skill directory:
references/article-writing-guide.md → store as {writing_guide}assets/templates/article.md → store as {article_template}Dispatch one independent agent per top-N item using the Agent tool. All agents run concurrently — do NOT generate articles yourself, delegate entirely.
Construct the following prompt for each item (substitute all placeholders with actual values, including the full contents of {writing_guide} and {article_template}):
You are writing a deep analysis article for a tech briefing.
Pangu Spacing Rule (CRITICAL): Every CJK character MUST have a space on both sides when adjacent to any ASCII character (letters, digits, punctuation, symbols). [Note: if the ASCII character is a single digit, then do not insert space.] Examples: Anthropic 发布了 Claude 4 (not Anthropic发布了Claude4), 评分 8/10 (not 评分8/10). No exceptions — apply to headings, body text, inline code references, and all content. Scan the entire article for violations before writing the file.
Item data:
Article template (fill every placeholder section):
{article_template}
Writing guide (follow strictly):
{writing_guide}
Output: Write the completed article to:
{base_dir}/{YYYY-MM-DD}/articles/{N}-{title_slug}-{lang}.md
{N} = rank number (1-based){title_slug} = lowercase title, spaces→hyphens, non-alphanumeric removed, truncated to 50 chars{lang} = language code from config (e.g. zh)Call Agent once per top-N item with the above prompt (all calls in a single message, in parallel). Wait for all agents to complete before proceeding to Phase 6.
Collect each agent's reported output path and any errors for the Phase 6 report.
content fields may contain multiple article snippets separated by --- From rss ---. When scoring or writing articles, use only the text before the first separator as the primary content.