Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를
Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류.
- 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로
자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거,
동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거.
- 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming,
Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business,
Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로,
나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는
title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백).
원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지.
- 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서.
- 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는
지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지.
- Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경.
- 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
"매 own 의 YouTube 채널 의 매 video 마다 매 view/like/comment/CTR/AVD 의 daily snapshot 을 매 fetch → DuckDB → 매 anomaly alert". 2026 creator workflow 의 기본 component. 매 YouTube Studio 의 dashboard 보다 훨씬 매 customizable + 매 multi-channel 비교 + 매 LLM 기반 insight.
매 핵심
매 Data sources
YouTube Data API v3: video metadata, current snapshot stats.
YouTube Analytics API v2: time-series (impressions, CTR, AVD, retention, traffic source) — 매 OAuth 필요.
YouTube Reporting API: bulk daily CSV (매 large channel 에 적합).
importstatisticsdefis_spike(video_id,metric='views',window=14,z=3.0):rows=con.execute(f"""
SELECT {metric} FROM snapshots WHERE video_id=?
ORDER BY captured_at DESC LIMIT {window+1} """,[video_id]).fetchall()iflen(rows)<window+1:returnFalsetoday,hist=rows[0][0],[r[0]forrinrows[1:]]deltas=[hist[i]-hist[i+1]foriinrange(len(hist)-1)]today_delta=today-hist[0]ifnotdeltasorstatistics.pstdev(deltas)==0:returnFalsereturnabs(today_delta-statistics.mean(deltas))/statistics.pstdev(deltas)>z
Telegram alert
importrequests,osdefalert(msg):requests.post(f"https://api.telegram.org/bot{os.environ['TG_TOKEN']}/sendMessage",json={'chat_id':os.environ['TG_CHAT'],'text':msg,'parse_mode':'Markdown'},)forvidinlist_my_videos():ifis_spike(vid):title=con.execute("SELECT title FROM videos WHERE video_id=?",[vid]).fetchone()[0]alert(f"*Spike*: [{title}](https://youtu.be/{vid})")
LLM weekly digest (Claude)
fromanthropicimportAnthropictop=con.execute("""
SELECT v.title, s.views, s.ctr, s.avd_sec
FROM snapshots s JOIN videos v USING(video_id)
WHERE s.captured_at::DATE = current_date
ORDER BY s.views DESC LIMIT 10
""").fetchall()resp=Anthropic().messages.create(model='claude-opus-4-7',max_tokens=1000,messages=[{'role':'user','content':f"Weekly channel digest. Identify 3 actions. Data:\n{top}"}],)print(resp.content[0].text)