cn-source-triage
Triage crawled Chinese AI articles from inbox/ into structured Japanese wiki pages following SCHEMA.md conventions
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Triage crawled Chinese AI articles from inbox/ into structured Japanese wiki pages following SCHEMA.md conventions
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Active crawl workflow — reads hot-topics.yaml, selects high-priority un-crawled topics, deep-dives via web search, creates wiki concept pages, and updates tracking
Analyze Chinese AI media, newsletter, and crawl items for durable trends, source differences, and wiki actions
Upgrade bio-only blogger entity pages to comprehensive thought analysis format
Enrich skeleton X/Twitter account entity pages to full quality (8-15KB), matching antirez-com.md / simon-willison.md depth.
Check and process emails on exe.dev VM using Maildir filesystem. Use this when user asks to check emails or when newsletters arrive.
Systematic depth analysis framework for opinion leaders tracking research completion across 4 layers - L1 Profile, L2 Timeline, L3 Thought Analysis, L4 Ongoing Monitoring
| name | cn-source-triage |
| description | Triage crawled Chinese AI articles from inbox/ into structured Japanese wiki pages following SCHEMA.md conventions |
| category | wiki |
| version | 1.0.0 |
| author | hermes |
| license | MIT |
| metadata | {"hermes":{"tags":["Wiki","Triage","Chinese-AI","Translation","Curation"]}} |
Process crawled Chinese-language articles from inbox/{v2ex,juejin,36kr,zhihu,wechat-media}/ into structured Japanese wiki pages under wiki/{entities,concepts,comparisons}/.
This is the core curation pipeline: raw Chinese content → Japanese knowledge base.
scripts/crawl_all.py)inbox/ has unprocessed articles# Count unprocessed articles per source
for dir in inbox/v2ex inbox/juejin inbox/36kr inbox/zhihu inbox/wechat-media; do
echo "$dir: $(find $dir -name '*.md' -newer /tmp/last_triage_marker 2>/dev/null | wc -l) new"
done
Or run:
python3 scripts/trending_topics.py --days 1
Run before identifying high-value articles:
⚠️ WeChat Media Pattern: WeChat articles are often daily re-distributions of the same 13-14 stub templates. Files with identical hash suffixes (e.g., -aed7e3c9.md, -f691ec7c.md) across different dates are duplicates. See references/wechat-spam-pattern.md for the full hash list and filtering guidance. When processing large WeChat backlogs (100+ files), batch-move all known spam hashes to archive/spam/ before individual review.
# Create archive dirs
mkdir -p wiki/raw/articles/archive/{spam,duplicates}
# Spam/recruitment → archive/spam/
# Categories: recruitment ads, crypto promos, lotteries, invite links, VPN sellers
grep -rlE '招聘|内推|求人|直招|募集中|採用|Bitget|Uカード|U卡|crypto|NFT|エアドロップ|ブロックチェーン|抽選|discord\\.gg|加微信|扫码|QQ群' inbox/ --include='*.md' | while read f; do
if [ "$(wc -c < "$f")" -gt 1500 ] && grep -qE 'RAG|LLM|Agent|Claude|DeepSeek|Qwen|MCP|vLLM|GGUF' "$f" 2>/dev/null; then
echo "KEEP (technical): $(basename $f)" # Has real AI discussion
else
mv "$f" wiki/raw/articles/archive/spam/
fi
done
# Deduplicate by hash suffix (keep newest)
for hash in $(find inbox -type f | sed 's/.*-//' | sort | uniq -d); do
files=($(find inbox -type f -name "*-$hash" | sort))
keep="${files[${#files[@]}-1]}"
for f in "${files[@]}"; do
[ "$f" != "$keep" ] && mv "$f" wiki/raw/articles/archive/duplicates/
done
done
Prioritize articles that:
| Type | Wiki Location | Example |
|---|---|---|
| Person/company/model profile | entities/ | DeepSeek company, specific researcher |
| Technical concept/method | concepts/ | RAG optimization, MoE architecture |
| Technical comparison | comparisons/ | Qwen vs DeepSeek, Coze vs Dify |
| Raw article (curated) | raw/articles/ | Full article translation for reference |
Follow wiki/SCHEMA.md conventions:
---
title: "ページタイトル"
created: YYYY-MM-DD
updated: YYYY-MM-DD
tags: [tag1, tag2]
aliases: ["別名"]
source_lang: zh-CN
---
Language rules:
All claims must link to source with tier noted:
> 出典: [記事タイトル](https://v2ex.com/t/xxxxx) (T1: V2EX)
> 出典: [记事タイトル](https://juejin.cn/post/xxxxx) (T1: Juejin)
# After creating pages:
# 1. Add to wiki/index.md
# 2. Append to wiki/log.md
# 3. Git commit and push
cd ~/ai-topics-cn
git add wiki/ inbox/
git commit -m "wiki: triage — <summary>"
git push
When processing large backlogs (>300 items), use this optimized flow:
archive/spam/wiki/index.md file counts to match actual disk statewiki/log.md with:
wiki: inbox triage batch N — <primary actions>
新規コンセプト:
- <concept1>.md: <description>
- <concept2>.md: <description>
エンティティ更新: <list>
index.md統計修正: <counts>
log.md: トリアージバッチN記録
source_lang: zh-CN[[wikilinks]]| Tier | Sources | Reliability |
|---|---|---|
| T1 | V2EX, Juejin, 36kr | High — primary communities |
| T2 | Zhihu (targeted), 机器之心, PaperWeekly | High — expert/media |
| T3 | 新智元, 量子位 | Medium — news, some clickbait |
| T4 | WaytoAGI, OSS communities | Variable — reference only |
| ❌ | CSDN | Banned — SEO spam |
entities/, concepts/, or comparisons/raw/articles/index.md and log.mdWhen a pre-run script generates a newsletter-triage JSON checkpoint:
{
"checkpoint_run_id": "YYYYMMDDTHHMMSSZ",
"processed_count": N,
"summary_ja": "Japanese summary of the batch",
"decisions": [
{
"item_id": "hash",
"source": "newsletter",
"title": "Article Title",
"url": "https://...",
"raw_path": "~/wiki/raw/articles/...",
"digest_path": "~/ai-topics-cn/inbox/newsletters/...",
"recommended_action": "take|reference|skip",
"reason_ja": "Japanese justification for the decision",
"candidate_wiki_path": "concepts/slug or entities/slug"
}
],
"_triage_checkpoint": { "ok": true, "output_path": "...", "checkpoint_path": "..." }
}
_triage_checkpoint.ok: If false, report the problem briefly and stop.take, reference, skip — report summary.take decision:
raw_path article contentcandidate_wiki_path already exists (search_files or ls)reason_ja as the Japanese justification for inclusionreference decisions: Add source URLs to existing wiki pages if relevant; no new pages needed.skip decisions: No action — but log duplicates for awareness.wiki/index.md: Increment concept/entity counts, update 最終更新日.wiki/log.md: Append entry with checkpoint run_id, summary_ja, and page list.cd ~/ai-topics-cn && git add wiki/ inbox/newsletters/ && git commit -m "wiki: newsletter ingest YYYY-MM-DD — <key topics>" && git push_triage_checkpoint.ok is false OR there are zero take decisions AND no useful raw/digest files, respond [SILENT].raw_path.reason_ja and summary_ja are in Japanese. All wiki output must be in Japanese (日本語). Keep technical terms in English.When inbox articles relate to an existing entity page (not new page creation):
search_files or grep in wiki/entities/ for the entity sluggrep -rl "<entity>" inbox/{juejin,36kr,v2ex,wechat-media}/mv inbox/<source>/<article> archive/inbox/processed/git add -A && git commit -m "wiki(<entity>): <summary>"### 競合比較:EntityA vs EntityB
| 項目 | EntityA | EntityB |
|------|---------|---------|
| **定位** | 個人開発者向け | 企業級 |
| **強み** | 軽量アーキテクチャ | RealDocファイルシステム |
| **生态** | ClawHub(26,000+スキル) | OPT業界Skills + 釘釘/淘寶/支付宝統合 |
| **互換性** | — | EntityAスキル体系を完全互換 |
EntityBの最大優位性は**RealDoc**(AI改変のロールバック対応)。
一方EntityAは**並列ツール実行**が強み。
## [YYYY-MM-DD] entity-name-enrichment | inbox記事活用による拡充
### Wiki更新
1. **entities/<name>.md** — **エンリッチメント**:
- <new section 1> (<source>)
- <new section 2> (<source>)
### 処理inbox記事
- `inbox/<source>/<article1>` → <section>
- `inbox/<source>/<article2>` → <section>
### スコア
- take: N (<entity>.md更新)
- archive: M (関連inbox記事を処理済みアーカイブ)
### チェックポイント
- run_id: YYYYMMDDTHHMMSSZ
- source: inbox-enrichment