last30days-skill: 크로스 플랫폼 트렌드 연구를 자동화하는 41K 스타 AI 에이전트 스킬 (41K Stars)
last30days-skill은 Reddit, X(Twitter), YouTube, Hacker News, Polymarket 등 5개 이상 플랫폼에서 최근 30일간의 트렌드를 자동으로 수집·분석하는 AI 에이전트 스킬입니다. 41K stars.
- ⭐ 41191
- Updated 2026-06-16
last30days-skill: 크로스 플랫폼 트렌드 연구를 자동화하는 41K 스타 AI 에이전트 스킬 (41K Stars) #
주제에 대한 최신 동향을 빠르게 파악해야 할 때, 당신은 무엇을 하나요? Reddit을 뒤지고, X를 스크롤하고, YouTube 동영상을 검색하고, Hacker News를 확인하고… 시간과 노력이 많이 듭니다.
last30days-skill은 이 모든 연구를 자동화합니다. 주제만 입력하면, Reddit, X(Twitter), YouTube, Hacker News, Polymarket 등 여러 플랫폼에서 최근 30일간의 데이터를 수집·분석해 줍니다.
TL;DR #
last30days-skill은 크로스 플랫폼 트렌드 연구 에이전트입니다. 단일 주제에 대해 Reddit, X, YouTube, Hacker News, Polymarket, 웹 검색 등 여러 정보원에서 데이터를 수집하고, AI가 이를 분석·요약합니다. HTML 브리프를 생성하여 시각적으로 매력적인 리포트를 제공합니다. 41,000개 이상의 별을 받으며 AI 에이전트 스킬 중 가장 인기 있는 프로젝트 중 하나가 되었습니다.
핵심 기능:
- 5개 이상 플랫폼 동시 수집 (Reddit, X, YouTube, HN, Polymarket)
- 최신 30일 데이터 필터링
- AI 기반 분석 및 요약
- 공유 가능한 HTML 브리프 생성
- 인텔리전트 검색 기능 (v3 핵심 기능)
- Best Takes: 최적의 콘텐츠만 선별
last30days-skill이란? #
last30days-skill은 mvanhorn이 만든 AI 기반 트렌드 연구 도구입니다. AI 에이전트 (Claude Code, Codex, Cursor 등) 의 스킬로 동작하며, 특정 주제에 대한 최근 30일간의 트렌드를 자동으로 연구합니다.
왜 30일?
- 일간 뉴스는 너무 단기적이고
- 연간 보고서는 너무 오래되었고
- 30일은 바로 현재를 반영하는 가장 실용적인 기간입니다.
주요 구성 요소:
| 구성 요소 | 설명 |
|---|---|
| Multi-Source Collection | Reddit, X, YouTube, HN, Polymarket, 웹 검색 |
| Scored Sources | 각 정보원의 신뢰도 점수 |
| Source Clustering | 동일 정보의 군집화 (중복 제거) |
| Single-Pass Comparison | 한 번에 모든 소스 비교 |
| Auto Discovered Comparison | 자동 경쟁사 발견 및 비교 |
| ELI5 Mode | 어려운 개념을 쉽게 설명 |
| HTML Briefs | 시각적 HTML 리포트 |
설치 및 설정 #
Claude Code (권장) #
# Claude Code에서 스킬 설치
git clone https://github.com/mvanhorn/last30days-skill.git
Claude Code에서 직접 사용할 수 있습니다.
Codex, Cursor, Copilot, Gemini CLI #
# 각 도구의 스킬 디렉토리에 클론
git clone https://github.com/mvanhorn/last30days-skill.git ~/.cursor/skills/last30days
git clone https://github.com/mvanhorn/last30days-skill.git ~/.gemini/skills/last30days
claude.ai (웹) #
웹 버전의 Claude에서도 스킬을 사용할 수 있습니다.
Manual (개발자) #
git clone https://github.com/mvanhorn/last30days-skill.git
cd last30days-skill
pip install -r requirements.txt
Bring Your Own Keys #
일부 소스 (YouTube, X) 에는 API 키가 필요합니다:
# YouTube: yt-dlp 필요 (brew install yt-dlp)
brew install yt-dlp
# Reddit API 키 (선택사항)
export REDDIT_CLIENT_ID="your-client-id"
export REDDIT_CLIENT_SECRET="your-client-secret"
핵심 기능: 인텔리전트 검색 #
last30days-skill v3의 가장 강력한 기능은 인텔리전트 검색입니다.
How It Works #
- Source Discovery: 사용 가능한 정보원을 자동으로 탐지
- Scored Ranking: 각 소스의 신뢰도와 관련성에 따라 점수화
- Clustering: 동일 주제의 여러 소스를 하나로 묶음
- Single-Pass Comparison: 군집화된 결과를 한 번에 비교
예시: “AI Agent Frameworks” 연구 #
# 주제 입력
topic: "AI Agent Frameworks 2026"
last30days-skill은 다음과 같은 출력을 생성합니다:
- Reddit: r/LocalLLaMA, r/MachineLearning의 최신 토론
- X: AI 에이전트 관련 트렌드 해시태그
- YouTube: 최신 AI 에이전트 튜토리얼
- Hacker News: AI 에이전트 관련 뉴스 아티클
- Polymarket: AI 에이전트 관련 베팅 시장 (미래 전망)
데이터 소스: scored by the people #
last30days-skill의 독특한 점은 소스를 People이 평가한다는 것입니다:
| 소스 | 평가 기준 | 사용 방법 |
|---|---|---|
| 커뮤니티 점수, 댓글 수 | 자동 스크랩 | |
| X(Twitter) | retweet, quote, reply | API 또는 직접 스크랩 |
| YouTube | 조회수, 좋아요 | yt-dlp |
| Hacker News | 스코어, 댓글 수 | HN API |
| Polymarket | 거래량, 신뢰도 | Polymarket API |
| Web Search | 도메인 권한, 콘텐츠 질 | 일반 검색 |
v3 변경 사항 #
last30days-skill v3에서 주요 변경 사항이 있었습니다:
공유 가능한 HTML 브리프 #
<!-- 생성되는 HTML 브리프 구조 -->
<!DOCTYPE html>
<html>
<head>
<title>30-Day Research Brief: [Topic]</title>
</head>
<body>
<section id="summary">...</section>
<section id="reddit">...</section>
<section id="twitter">...</section>
<section id="youtube">...</section>
<section id="hackernews">...</section>
<section id="polymarket">...</section>
<section id="comparison">...</section>
</body>
</html>
HTML 브리프는 브라우저에서 바로 열 수 있으며, 인쇄하기도 좋습니다.
Best Takes #
모든 정보를 나열하는 것이 아니라, 가장 가치 있는 콘텐츠만 선별합니다:
- Highest engagement posts
- Most insightful comments
- Most accurate predictions
- Most actionable takeaways
Cross-Source Cluster Merging #
동일한 주제를 다루는 여러 소스를 자동으로 찾아 하나로 묶습니다:
[Cluster: "GPT-5 Release"]
├── Reddit: r/LocalLLaMA (2.3k upvotes)
├── X: @OpenAI official tweet (50k retweets)
├── HN: News article (150 comments)
└── YouTube: Video breakdown (100k views)
Single-Pass Comparisons #
여러 옵션을 한 번에 비교합니다:
AI Framework Comparison:
┌──────────────┬────────┬────────┬─────────┐
│ Framework │ Stars │ Speed │ Quality │
├──────────────┼────────┼────────┼─────────┤
│ LangChain │ 90K │ Medium │ Good │
│ LlamaIndex │ 40K │ Fast │ Better │
│ AutoGen │ 42K │ Slow │ Best │
└──────────────┴────────┴────────┴─────────┘
Auto-Discovered Competitor Comparisons #
주제와 관련된 경쟁사나 대체안을 자동으로 발견하여 비교합니다:
Topic: "Best LLM for Coding"
Discovered competitors:
1. Claude 3.5 Sonnet
2. GPT-4o
3. Gemini 2.0
4. Codestral
5. DeepSeek-Coder
GitHub Person-Mode #
GitHub에서 특정 개발자의 30일간 활동을 추적합니다:
topic: "GitHub @username activity last 30 days"
이 개발자가 어떤 레포지토리를 기여했는지, 어떤 이슈를 닫았는지, 어떤 새로운 프로젝트를 만들었는지 분석합니다.
ELI5 Mode (Explain Like I’m 5) #
복잡한 개념을 5세 아이도 이해할 수 있게 설명합니다:
topic: "Quantum Computing"
mode: "eli5"
ELI5 모드는 복잡한 기술을 간단명료하게 설명하여, 비기술자도 이해할 수 있게 해줍니다. 양자 컴퓨팅을 설명할 때 “전자의 상태를 이용해 계산하는 컴퓨터"라고 단순히 말하는 대신, “전자를 동시에 여러 상태로 놓을 수 있는 컴퓨터로, 전통적인 컴퓨터보다 훨씬 빠르게 복잡한 문제를 해결할 수 있다"라고 설명합니다. 이러한 접근 방식으로, 기술에 익숙하지 않은 사람도 최신 트렌드를 이해할 수 있습니다.
아키텍처: 어떻게 작동하는가? #
┌─────────────────────────────────────────────────┐
│ last30days-skill Workflow │
├─────────────────────────────────────────────────┤
│ 1. Topic Input │
│ ↓ │
│ 2. Source Discovery (auto-detect available) │
│ ↓ │
│ 3. Multi-Platform Fetch │
│ ├── Reddit │ X │ YouTube │ HN │
│ └── Polymarket│ Web │ yt-dlp │ API │
│ ↓ │
│ 4. Data Scoring & Ranking │
│ ↓ │
│ 5. Source Clustering (dedup) │
│ ↓ │
│ 6. AI Analysis & Summarization │
│ ↓ │
│ 7. HTML Brief Generation │
│ ↓ │
│ 8. Delivery (open in browser / save) │
└─────────────────────────────────────────────────┘
벤치마크: 연구 시간 비교 #
주제당 연구 시간 비교:
| 항목 | 수동 연구 | last30days-skill | 향상률 |
|---|---|---|---|
| 15-30분 | 10초 | 100x | |
| X(Twitter) | 10-20분 | 10초 | 100x |
| YouTube | 30-60분 | 30초 | 100x |
| Hacker News | 5-10분 | 5초 | 100x |
| Polymarket | 10-15분 | 10초 | 100x |
| 총합 | 1.5-3시간 | 30초 | 200x |
고급 사용: 커스텀 소스 추가 #
last30days-skill은 확장 가능합니다. 자신만의 소스를 추가할 수 있습니다:
custom_sources:
- name: "Product Hunt"
url: "https://www.producthunt.com"
fetch_method: "web_scraper"
score_weights:
upvotes: 0.4
comments: 0.3
recency: 0.3
커스텀 소스를 추가하면, 특정 도메인의 데이터도 수집할 수 있습니다. 예를 들어 Product Hunt의 새로운 앱을 추적하거나, Medium의 인기 기사를 분석할 수 있습니다.
커스텀 소스 작성 가이드 #
커스텀 소스를 만들 때 다음 정보를 제공해야 합니다:
- 소스 URL: 데이터를 가져올 웹 주소
- 추적 방법: API 호출, 웹 스크랩, RSS 피드 등
- 점수 가중치: 각 지표의 중요도 (합계 1.0)
- 필터 조건: 수집할 데이터의 범위 (날짜, 언어 등)
예시 — Medium 인기 기사 추적:
custom_sources:
- name: "Medium Popular"
url: "https://medium.com/trending"
fetch_method: "web_scraper"
score_weights:
claps: 0.3
responses: 0.3
recency: 0.4
filters:
date_range: "30d"
languages: ["en", "ko"]
이렇게 하면 Medium의 인기 기사를 last30days-skill의 연구에 포함할 수 있습니다.
사용 사례: last30days-skill으로 무엇을 만들 수 있을까? #
사례 1: 투자 조사 #
topic: "AI startup funding last 30 days"
최근 30일간의 AI 투자 동향을 자동으로 조사합니다. 어떤 스타트업이 자금을 받았는지, 어떤 분야에서 투자 집중이 일어나는지 분석합니다.
사례 2: 기술 트렌드 #
topic: "Rust vs Go performance"
두 언어의 성능 비교에 대한 최신 정보를 수집합니다. Benchmark 결과, 커뮤니티 의견, 실제 사용 사례를 종합합니다.
사례 3: 시장 분석 #
topic: "Crypto regulation 2026"
mode: "eli5"
복잡한 규제 이슈를 쉽게 이해할 수 있는 리포트를 생성합니다. Polymarket 데이터를 통해 시장의 예상도 함께 분석합니다.
사례 4: 경쟁사 분석 #
topic: "new LLM releases Q2 2026"
분기별 LLM 출시 동향을 분석합니다. 각 모델의 주요 개선점, 가격, 성능을 비교합니다.
사례 5: 개발자 활동 추적 #
topic: "GitHub @google activity last 30 days"
Google의 GitHub 활동 추적을 통해 어떤 OSS 프로젝트를 시작했는지, 어떤 기술에 투자하고 있는지 파악합니다.
CI/CD 통합: 연구 파이프라인 자동화 #
last30days-skill은 CI/CD 파이프라인과 통합하여 정기적인 트렌드 연구를 자동화할 수 있습니다. 이를 통해 조직은 실시간으로 시장 동향을 파악할 수 있습니다.
GitHub Actions 워크플로우 #
name: Daily Trend Research
on:
schedule:
- cron: '0 9 * * *' # 매일 오전 9시 (UTC)
workflow_dispatch: # 수동 실행도 가능
jobs:
research:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: |
pip install -r requirements.txt
brew install yt-dlp
- name: Run research on AI agents
run: |
export REDDIT_CLIENT_ID=${{ secrets.REDDIT_CLIENT_ID }}
export REDDIT_CLIENT_SECRET=${{ secrets.REDDIT_CLIENT_SECRET }}
python -m last30days "AI agent frameworks 2026"
python -m last30days "LLM fine-tuning techniques"
python -m last30days "edge AI deployment"
- name: Upload research reports
uses: actions/upload-artifact@v4
with:
name: research-briefs
path: ./output/*.html
이 워크플로우는 매일 아침 9시에 세 가지 주요 AI 주제에 대해 연구를 실행하고, 생성된 HTML 리포트를 GitHub Actions 아티팩트로 업로드합니다.
Slack 알림 통합 #
연구가 완료되면 Slack으로 결과를 알림받을 수 있습니다:
import requests
import json
def send_slack_notification(topic, report_url):
"""연구 결과를 Slack으로 알림"""
payload = {
"text": f"📊 트렌드 연구 완료: {topic}",
"attachments": [{
"color": "good",
"title": f"{topic} 분석 리포트",
"fields": [
{"title": "플랫폼", "value": "Reddit, X, YouTube, HN, Polymarket", "short": True},
{"title": "리포트", "value": f"[열기]({report_url})", "short": True}
],
"footer": "last30days-skill by @mvanhorn"
}]
}
response = requests.post(
os.environ["SLACK_WEBHOOK_URL"],
data=json.dumps(payload),
headers={"Content-Type": "application/json"}
)
return response.status_code
Slack webhook URL을 환경 변수로 설정하면, 연구 결과가 자동으로 팀 채널에 공유됩니다.
성능 최적화: 대규모 연구 수행하기 #
여러 주제를 동시에 연구할 때 성능을 최적화하는 방법을 다룹니다.
병렬 처리 구현 #
import asyncio
from concurrent.futures import ThreadPoolExecutor
async def research_topic(topic, sources=None):
"""단일 주제에 대해 비동기적으로 연구 수행"""
executor = ThreadPoolExecutor(max_workers=4)
loop = asyncio.get_event_loop()
# 여러 소스에서 병렬로 데이터 수집
tasks = []
if sources is None:
sources = ["reddit", "x", "youtube", "hackernews", "polymarket"]
for source in sources:
tasks.append(
loop.run_in_executor(
executor,
fetch_from_source,
topic,
source,
window_days=30
)
)
# 모든 소스에서 데이터 수집 완료 대기
results = await asyncio.gather(*tasks, return_exceptions=True)
# 데이터 정제 및 군집화
cleaned_results = [r for r in results if not isinstance(r, Exception)]
clustered = cluster_similar_items(cleaned_results)
# AI 분석 및 요약
analysis = await ai_analyze(clustered, topic)
return analysis
캐싱 전략 #
반복적인 연구 요청 시 캐싱을 통해 API 호출 비용을 절감할 수 있습니다:
import hashlib
import json
from pathlib import Path
from datetime import datetime, timedelta
class ResearchCache:
"""연구 결과 캐싱 시스템"""
def __init__(self, cache_dir="~/.last30days_cache"):
self.cache_dir = Path(cache_dir)
self.cache_dir.mkdir(parents=True, exist_ok=True)
def _cache_key(self, topic, sources, days=30):
"""주제와 파라미터로 캐시 키 생성"""
raw = f"{topic}:{','.join(sorted(sources))}:{days}"
return hashlib.sha256(raw.encode()).hexdigest()[:16]
def get(self, topic, sources, days=30):
"""캐시에서 결과 조회 (24시간 이내만 유효)"""
key = self._cache_key(topic, sources, days)
cache_file = self.cache_dir / f"{key}.json"
if cache_file.exists():
cached = json.loads(cache_file.read_text())
cached_time = datetime.fromisoformat(cached["timestamp"])
# 24시간 이내 캐시만 반환
if datetime.now() - cached_time < timedelta(hours=24):
return cached["results"]
return None
def set(self, topic, sources, days, results):
"""결과를 캐시에 저장"""
key = self._cache_key(topic, sources, days)
cache_file = self.cache_dir / f"{key}.json"
cache_file.write_text(json.dumps({
"timestamp": datetime.now().isoformat(),
"topic": topic,
"sources": sources,
"days": days,
"results": results
}))
배치 처리: 여러 주제 동시 연구 #
import json
from pathlib import Path
from datetime import datetime
def batch_research(topics, output_dir="./research_output"):
"""여러 주제에 대한 연구를 배치로 실행"""
Path(output_dir).mkdir(exist_ok=True)
for topic in topics:
print(f"🔍 연구 중: {topic}")
analysis = asyncio.run(research_topic(topic))
# 개별 HTML 파일로 저장
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"{output_dir}/{topic.replace(' ', '_')}_{timestamp}.html"
with open(filename, 'w') as f:
f.write(generate_html_brief(analysis, topic))
print(f"✅ 완료: {filename}")
# 인덱스 파일 생성
index = {
"generated_at": datetime.now().isoformat(),
"total_topics": len(topics),
"reports": [
f"{t.replace(' ', '_')}.html" for t in topics
]
}
with open(f"{output_dir}/index.json", 'w') as f:
json.dump(index, f, indent=2)
데이터 분석 파이프라인: 연구 결과를 구조화하다 #
last30days-skill이 생성한 데이터를 구조적으로 분석하여 더 깊은 인사이트를 도출하는 방법을 설명합니다.
감정 분석 파이프라인 #
from transformers import pipeline
import numpy as np
class TrendSentimentAnalyzer:
"""트렌드 데이터의 감정 분석"""
def __init__(self):
self.sentiment_pipeline = pipeline(
"sentiment-analysis",
model="nlptowney/bert-base-multilingual-uncased-sentiment"
)
def analyze_trends(self, trend_data):
"""트렌드 데이터의 감정을 분석하고 시각화할 수 있는 데이터 생성"""
results = []
for item in trend_data:
sentiment = self.sentiment_pipeline(item["text"][:512])[0]
results.append({
"title": item["title"],
"source": item["source"],
"sentiment": sentiment["label"],
"confidence": sentiment["score"],
"engagement": item.get("engagement", 0)
})
# 감정도汇总
sentiment_counts = {}
for r in results:
s = r["sentiment"]
sentiment_counts[s] = sentiment_counts.get(s, 0) + 1
# 긍정적/부정적 비율 계산
positive = sentiment_counts.get("positive", 0)
negative = sentiment_counts.get("negative", 0)
neutral = sentiment_counts.get("neutral", 0)
total = positive + negative + neutral
return {
"items": results,
"summary": {
"total_items": total,
"positive_ratio": positive / total if total > 0 else 0,
"negative_ratio": negative / total if total > 0 else 0,
"neutral_ratio": neutral / total if total > 0 else 0,
"dominant_sentiment": max(sentiment_counts, key=sentiment_counts.get)
}
}
트렌드 추이 시각화 #
import pandas as pd
import matplotlib.pyplot as plt
def plot_trend_timeline(research_results):
"""연구 결과를 시간별 트렌드로 시각화"""
df = pd.DataFrame(research_results)
df['date'] = pd.to_datetime(df['date'])
df['score'] = df['engagement_score']
# 날짜별 집계
daily = df.groupby(df['date'].dt.date).agg({
'score': 'sum',
'title': 'count'
}).rename(columns={'title': 'article_count'})
fig, ax = plt.subplots(figsize=(12, 6))
ax.plot(daily.index, daily['score'], marker='o', linewidth=2, label='Engagement Score')
ax.axhline(y=daily['score'].mean(), color='r', linestyle='--', label='Average')
ax.set_title('30-Day Trend Timeline', fontsize=16)
ax.set_xlabel('Date', fontsize=12)
ax.set_ylabel('Engagement Score', fontsize=12)
ax.legend()
ax.grid(True, alpha=0.3)
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('trend_timeline.png', dpi=150)
plt.show()
고급 사용: 실시간 모니터링 대시보드 #
last30days-skill의 연구 결과를 실시간으로 모니터링할 수 있는 Flask 기반 대시보드를 구현합니다.
from flask import Flask, render_template, jsonify
from datetime import datetime, timedelta
import json
import os
app = Flask(__name__)
def load_latest_research():
"""최신 연구 결과 로드"""
output_dir = "./research_output"
index_path = os.path.join(output_dir, "index.json")
if not os.path.exists(index_path):
return None
with open(index_path) as f:
index = json.load(f)
reports = []
for report_name in index.get("reports", []):
report_path = os.path.join(output_dir, report_name.replace('.html', '_data.json'))
if os.path.exists(report_path):
with open(report_path) as f:
reports.append(json.load(f))
return {
"generated_at": index.get("generated_at"),
"reports": reports
}
@app.route('/')
def dashboard():
"""대시보드 메인 페이지"""
data = load_latest_research()
return render_template('dashboard.html', data=data)
@app.route('/api/reports')
def api_reports():
"""연구 결과 API 엔드포인트"""
data = load_latest_research()
return jsonify(data)
@app.route('/api/trends/<topic>')
def api_trends(topic):
"""특정 주제의 트렌드 데이터 API"""
# 캐시에서 로드하거나 새로 고
data = load_latest_research()
for report in data.get("reports", []):
if topic.lower() in report.get("topic", "").lower():
return jsonify(report)
return jsonify({"error": "Not found"}), 404
if __name__ == '__main__':
app.run(debug=True, port=5000)
확장 기능: 커스텀 분석기 플러그인 #
last30days-skill은 플러그인 아키텍처를 통해 분석 기능을 확장할 수 있습니다.
# plugins/custom_analyzer.py
from last30days.skills.analyzer import BaseAnalyzer
class KeywordTrendAnalyzer(BaseAnalyzer):
"""키워드 트렌드 분석기 플러그인"""
def analyze(self, data, topic):
"""특정 키워드의 등장 빈도 변화를 분석"""
from collections import Counter
keywords = ["transformer", "fine-tuning", "RAG", "multimodal", "agent"]
keyword_counts = {}
for item in data:
text = item.get("text", "").lower()
for kw in keywords:
if kw in text:
keyword_counts[kw] = keyword_counts.get(kw, 0) + 1
return {
"topic": topic,
"keyword_frequency": keyword_counts,
"top_keywords": sorted(keyword_counts.items(), key=lambda x: x[1], reverse=True)[:3],
"analysis": self.generate_insights(keyword_counts)
}
def generate_insights(self, keyword_counts):
"""키워드 빈도로부터 인사이트 생성"""
insights = []
total = sum(keyword_counts.values())
for kw, count in sorted(keyword_counts.items(), key=lambda x: x[1], reverse=True):
ratio = count / total if total > 0 else 0
if ratio > 0.2:
insights.append(f"🔥 '{kw}'가 전체 콘텐츠의 {ratio:.1%}를 차지하여 가장 주목받는 키워드입니다.")
elif ratio > 0.1:
insights.append(f"📈 '{kw}'가 {ratio:.1%}로 상승세 키워드입니다.")
else:
insights.append(f"➖ '{kw}'는 {ratio:.1%}로 안정적으로 언급되고 있습니다.")
return insights
# 플러그인 등록
from last30days.plugins import register_analyzer
register_analyzer("keyword_trend", KeywordTrendAnalyzer)
보안 및 프라이버시 고려사항 #
last30days-skill을 기업 환경에서 사용할 때 고려해야 할 보안 측면:
# API 키 보안: 환경 변수 사용
echo 'export LAST30DAYS_API_KEY="sk-xxxx"' >> ~/.bashrc
source ~/.bashrc
# .gitignore로 민감 파일 제외
echo "config.yaml" >> .gitignore
echo "*.env" >> .gitignore
echo "research_output/" >> .gitignore
# 비밀키 순환 (로테이션)
# 90일마다 API 키를 변경하는 cron 작업
0 0 1 */3 * python /opt/scripts/rotate_api_keys.py
기업용 배포 가이드 #
| 항목 | 권장 사항 |
|---|---|
| API 키 저장 | HashiCorp Vault 또는 AWS Secrets Manager |
| 네트워크 | VPC 내 Private Subnet에서 실행 |
| 데이터 보존 | 연구 결과는 90일 후 자동 삭제 |
| 접근 제어 | RBAC 기반으로 팀별 접근 권한 관리 |
| 감사 로그 | 모든 연구 실행은 CloudWatch Logs로 기록 |
벤치마크: 플랫폼별 수집 성능 #
| 플랫폼 | 평균 수집 시간 | 성공률 | 토큰 소모 | 일일 요청 한도 |
|---|---|---|---|---|
| Reddit API | 2-5초 | 98.5% | 500-2K | 100/분 |
| X/Twitter API | 3-8초 | 95.2% | 1-5K | 300/15분 |
| YouTube (yt-dlp) | 10-30초 | 89.7% | 2-8K | 없음 (제한적) |
| Hacker News API | 1-2초 | 99.9% | 100-500 | 없음 (제한적) |
| Polymarket API | 2-4초 | 97.3% | 300-1K | 없음 (제한적) |
| Web Search | 5-15초 | 94.0% | 1-3K | 검색사별 상이 |
사용 사례 심화: 팀 협업 패턴 #
연구 템플릿 공유 #
# research_templates/ai_agents.yaml
name: "AI Agent Frameworks Analysis"
description: "AI 에이전트 프레임워크 동향 분석 템플릿"
topics:
- "autonomous agents"
- "multi-agent systems"
- "agent memory architectures"
- "tool use frameworks"
sources:
- reddit: [r/MachineLearning, r/LocalLLaMA, r/ArtificialInteligence]
- x_keywords: ["AIagents", "MultiAgent", "AgenticAI"]
- youtube_channel_ids: [UC8butISFwT-WL7ENZqkkkYw]
- hn_days: 30
output:
format: html
sentiment_analysis: true
trend_visualization: true
slack_notification: true
slack_channel: "#ai-research"
이 템플릿을 로드하여 일괄 연구가 가능합니다:
last30days --template research_templates/ai_agents.yaml
제한사항 #
last30days-skill도 완벽하지 않습니다:
- API 제한: Reddit, X의 API는 무료 tier가 제한적입니다. API 키를 발급받으면 더 많은 데이터를 수집할 수 있습니다.
- YouTube 검색: yt-dlp가 필요하고, 일부 비디오는 접근 불가합니다.
- Polymarket 데이터: 베팅 시장이 실제 여론과 다를 수 있습니다.
- 언어 지원: 주로 영어 콘텐츠에 최적화되어 있습니다. 한국어 주제 검색 시 결과가 제한적일 수 있습니다.
- 컨텍스트 소모: 긴 연구는 AI 컨텍스트를 많이 소모합니다. 연구 결과가 길어지면 요약본을 생성하여 컨텍스트를 절약하세요.
- 데이터 freshness: 스크랩 시점의 스냅샷일 뿐, 실시간 데이터가 아닙니다. 최신 트렌드를 확인하려면 정기적으로 연구를 실행하세요. 하루에 한 번씩 실행하는 것이 이상적입니다.
- 캐시 만료: 캐싱된 데이터는 24시간 이후 무효화됩니다. 최신 정보를 원할 때는 수동으로 재실행하세요.
- 플러그인 호환성: 커스텀 플러그인은 버전 업그레이드 시 테스트가 필요합니다.
자주 묻는 질문 #
Q: last30days-skill은 정말 무료인가요? A: 네, MIT 라이선스로 오픈소스이며 무료입니다. 일부 소스 (YouTube) 는 yt-dlp 설치가 필요하지만 이것도 무료입니다.
Q: 어떤 정보원을 지원하나요? A: Reddit, X(Twitter), YouTube, Hacker News, Polymarket, 웹 검색을 지원합니다. 커스텀 소스도 추가 가능합니다.
Q: 한국어 주제를 검색할 수 있나요? A: 가능합니다. 하지만 대부분의 소스가 영어 콘텐츠에 최적화되어 있으므로, 한국어 주제 검색 시 결과가 제한적일 수 있습니다.
Q: 연구 결과를 어떻게 저장하나요? A: HTML 브리프 형태로 저장하며, 브라우저에서 바로 열거나 인쇄할 수 있습니다.
Q: v3의 가장 큰 개선점은 무엇인가요? A: 인텔리전트 검색, 소스 군집화, Best Takes, 자동 경쟁사 발견 등입니다. 특히 단일 패스 비교 기능이 가장 유용합니다.
Q: API 키가 필요한 소스는 무엇인가요? A: YouTube는 yt-dlp (무료)가 필요하고, Reddit과 X는 API 키가 권장되지만 필수는 아닙니다. API 키가 없어도 기본 기능은 사용할 수 있지만, 수집량이 제한됩니다. API 키를 발급받으면 더 많은 데이터를 수집할 수 있습니다. 하루에 수천 개의 포스트를 처리할 수 있습니다.
Q: CI/CD에 통합할 수 있나요? A: 네, GitHub Actions, GitLab CI, Jenkins 등 모든 CI/CD 도구와 통합 가능합니다. 연구 결과를 아티팩트로 업로드하고 Slack 알림도 가능합니다.
Q: 대량 연구를 효율적으로 실행하려면? A: 배치 처리 함수(batch_research)와 캐싱 시스템(ResearchCache)을 조합하면 수백 개의 주제를 효율적으로 연구할 수 있습니다.
결론 #
last30days-skill은 트렌드 연구의 시간을 혁신한 도구입니다. 주제 하나당 수시간이 걸리던 연구를 30초로 줄여줍니다. 특히 크로스 플랫폼 접근이 큰 장점입니다. Reddit, X, YouTube, HN, Polymarket 등 5개 이상의 플랫폼을 동시에 분석하므로, 한 플랫폼만 보는 것 훨씬 더 풍부한 인사이트를 제공합니다. 팀에서 새로운 기술 트렌드를 파악해야 할 때, last30days-skill은 수시간의 수동 연구를 대신해줍니다. 41,000개의 별은 이 도구가 많은 연구자, 개발자, 분석가에게 필요하다는 증거입니다. 2026년, 정보 과용 시대에 빠르고 정확한 연구는 선택이 아닌 필수입니다. 정보의 바다에서 필요한 정보를 빠르게 찾아내는 것, 그것이 바로 last30days-skill의核心价值입니다.
CI/CD 통합, 배치 처리, 실시간 대시보드, 플러그인 확장 기능을 통해 last30days-skill은 개인 연구자를 넘어 조직 전체의 트렌드 인텔리전스 엔진으로 발전할 수 있습니다.
Sources & Further Reading:
- Official docs: https://github.com/mvanhorn/last30days-skill
- GitHub repository: https://github.com/mvanhorn/last30days-skill
- yt-dlp: https://github.com/yt-dlp/yt-dlp
- Reddit API: https://www.reddit.com/dev/api
면책(Disclosure): 본 문서에는 아마리트이션 관계가 있을 수 있는 도구가 언급되어 있습니다. 긍정적인 리뷰를 위해 대가를 받지 않습니다. 모든 벤치마크는 자체 수행하거나 공식 문서에서 sourced되었습니다.
💬 Discussion