pgx
PGX — Lightweight Postgres for AI agents. Written in Rust. Thousands of isolated databases in one runtime. 🐘
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Google Trends의 실제 데이터를 수집하는 정적 대시보드입니다. 한국·미국·일본의 실시간 인기 검색어, 관련 뉴스, Explore 상위·급상승 검색어, 수집 히스토리, 뉴스 단어 분석을 제공합니다.
구현 기준은 사용자가 지정한 계획서입니다. 원본 프로젝트는 수정하지 않았고 이 googletrend-c-2610 폴더에 구현했습니다.
Node.js 22 이상과 Python 3.12 이상을 사용합니다. Node 패키지 설치나 프런트엔드 빌드는 필요 없습니다.
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
npm start
브라우저에서 http://localhost:3000 을 엽니다. 실제 수집한 JSON이 public/data/에 포함되어 있습니다. HTML 파일을 file://로 직접 열면 브라우저의 fetch 제한 때문에 데이터를 읽을 수 없습니다.
새 데이터 수집:
.venv/bin/python scripts/fetch_trends.py --geo KR,US,JP --hours 4,24,48,168
.venv/bin/python scripts/explore.py --geo KR,US,JP --periods 7d,1m,3m,12m --once-per-day
.venv/bin/python scripts/analysis.py # 뉴스 단어 분석 (일요일에는 주간 합산도 생성, --weekly로 강제)
#open=검색어로 공유할 수 있습니다.| 작업 | 일정 | GitHub cron (UTC) |
|---|---|---|
| 실시간 트렌드 + 뉴스 | 2시간마다 | 7 */2 * * * |
| Explore | 수집 워크플로에서 하루 첫 성공 때 1회 | 날짜별 중복 수집 방지 |
| 뉴스 단어 분석 | 수집 워크플로마다 당일(KST) 파일 갱신 · 일요일 주간 합산 | 수집과 같은 실행 |
| CSV 자동 보관 | 18:00 KST | 0 9 * * * |
| 한국·일본·미국 Discord | 19:00 KST · 하루 1회 | 0 10 * * * |
GitHub Actions 스케줄은 지연되거나 누락될 수 있으므로 정확한 시각 보장은 없습니다. 실시간 데이터가 3시간, Explore가 36시간 넘게 오래되면 화면에 알립니다.
국가별 최근 24시간 트렌드에 붙은 뉴스 기사 제목에서 단어를 셉니다. Google을 새로 조회하지 않고 수집된 latest/{국가}/24.json만 사용합니다.
kiwipiepy, Java 불필요). 그날의 트렌드 검색어와 관련 검색어를 사용자 사전에 넣어 이름이 쪼개지지 않게 합니다. 띄어쓰기 없이 붙은 명사는 한 단어로 합칩니다(아시안+게임 → 아시안게임).fugashi, unidic-lite). 붙은 가타카나 단어와 접미사를 합치고(ポストシーズン, 戦力外) 숫자·조수사는 뺍니다.analyzer 값(kiwi / mecab / rules)으로 어떤 방식이 쓰였는지 확인할 수 있습니다. - 언론사 표기, 언론사 이름, 상투어(단독·속보 등), 단위(cm·kg)는 뺍니다. 국가별 추가 불용어는 config/news-analysis.json에서 고칩니다.config/news-analysis.json의 개념 사전(AI·인공지능·人工知能 등)으로 나라별 기사 수를 비교데이터 경로: /data/analysis/index.json, /data/analysis/YYYY-MM-DD.json, /data/analysis/weekly/YYYY-MM-DD.json.
archive.yml은 최신 2시간 수집본을 archives/csv/YYYY-MM-DD/에 국가·기간별 CSV로 저장하고 커밋합니다. 한국·미국·일본의 4·24·48시간·7일 목록, 이용 가능한 Explore 4개 기간, 당일 뉴스 단어 분석(ALL-analysis.csv: 국가별 TOP 20·개념 비교·공통 검색어)을 보관합니다. 일요일에는 주간 분석(ALL-weekly.csv)도 넣습니다. 분석 파일이 없으면 CSV 보관은 계속하고 manifest.json에 skipped_analysis로 남깁니다. 12시간은 파생 화면이므로 원본 24시간 CSV로 보존합니다. 해당 시점에 새로 Google을 조회하는 작업은 아닙니다.
파일마다 원본 수집 시각을 포함하고 manifest.json에 보관 시각·파일 목록·생략된 Explore를 기록합니다. 실시간 수집본이 3시간 넘게 오래되거나 누락되면 당일 폴더를 만들지 않고 실패합니다. Explore는 36시간 이내 데이터만 포함합니다. 같은 날짜 재실행 시 기존 보관본을 덮어쓰지 않습니다. CSV는 비공개 저장소에 보관하며 Vercel 배포에서 제외됩니다. 화면의 수동 CSV 다운로드는 계속 사용할 수 있습니다.
.venv/bin/python scripts/archive_csv.py
발행 제목은 구글 트렌드 by 코덱스이며 분할 메시지마다 표시합니다.
매일 19시 한국 시간에 한국·일본·미국 각각 최근 24시간 검색량 TOP 5와 검색어별 관련 뉴스 최대 3건을 보냅니다. 총 15개 검색어·최대 45개 기사입니다. 3건 미만이면 실제 확보된 개수를 표시합니다. 국가별 카드가 Discord 글자 수 제한을 넘으면 여러 메시지로 분할하며, CSV/JSON 첨부는 각 국가 첫 메시지에만 포함합니다. 국가별 카드 다음에 📊 뉴스 단어 분석 메시지를 이어 보냅니다. 국가별 단어 TOP 10(🔥 급부상·🆕·▲▼ 표시), 분야 비중, 급부상 단어, 국가 공통 검색어, 2개국 이상에서 나온 개념 비교가 들어갑니다. 일요일에는 국가별 주간 TOP 10 메시지를 추가합니다. 분석 파일이 없거나 6시간 넘게 오래됐으면 이 메시지만 건너뜁니다. 별도 Explore 요약 카드는 보내지 않습니다.
🆕는 직전 성공한 일일 브리핑의 해당 국가 전체 목록에 없던 현재 검색어입니다. 이전 기준선이 없으면 표시하지 않습니다. 전송 중 각 메시지 진행 상태를 기록하고, 결과가 불확실한 전송은 자동 재시도하지 않습니다. 이때 채널을 확인한 뒤 상태 파일을 검토해야 합니다.
참고 프로젝트 YT-Daily-Brief-2608처럼 색상별 embed 카드와 CSV/JSON 첨부로 발송합니다. 사용자/역할 멘션은 비활성화합니다. 발송 이력과 일일 기준선은 공개 웹 폴더 밖의 state/discord.json에 기록합니다.
cp .env.example .env.local # 최초 설정 시에만; 이미 설정된 파일을 덮어쓰지 마세요.
# .env.local에 DISCORD_WEBHOOK_URL과 선택적 DASHBOARD_URL 설정
.venv/bin/python scripts/notify_discord.py --slot daily --dry-run
.venv/bin/python scripts/notify_discord.py --slot test
이 작업 중 제공된 웹훅은 권한 600인 .env.local에 설정했습니다. git과 Vercel 업로드에서 제외하며 로그에 출력하지 않습니다. .env.local은 로컬에서만 사용합니다. Actions에는 별도 Secret 등록이 필요합니다.
같은 날짜·슬롯은 한 번 성공하면 재발송하지 않습니다. 429는 제한적으로 재시도하며, 전송 결과가 불확실한 연결 타임아웃은 중복 메시지를 피하려고 자동 재전송하지 않습니다. 웹훅 API와 git 커밋을 하나의 원자적 트랜잭션으로 만들 수는 없으므로, 전송 직후 러너가 종료되거나 상태 push가 실패하면 수동 재실행 전에 채널을 확인해야 합니다.
코덱스 전용 공개 저장소와 Vercel 프로젝트를 연결했습니다. (2026-10-27 frontierall → danielall-wj 계정으로 이전, public 전환)
googletrend-2610 클로드 프로젝트와 별개입니다. 자동 수집·18시 CSV 보관·19시 발송은 이 새 저장소에서 실행됩니다. 아래는 설정 재현 방법입니다.
.env.local과 .venv는 포함하지 않습니다.| 종류 | 이름 | 값 |
|---|---|---|
| Secret | DISCORD_WEBHOOK_URL | 사용자가 지정한 Discord 웹훅 |
| Variable | COMMIT_NAME | Vercel 소유자와 연결된 GitHub 커밋 이름 |
| Variable | COMMIT_EMAIL | 해당 GitHub 계정에 연결된 이메일 또는 noreply 이메일 |
| Variable | DASHBOARD_URL | 배포 후 사이트 주소. 비어 있으면 Google 원문 연결 |
vercel.json에 설정되어 있습니다.test를 실행합니다.Vercel Hobby의 비공개 저장소 Git 배포는 커밋 작성자가 프로젝트 소유자와 연결되어 있어야 합니다. 관련 문서: Vercel Git 배포, GitHub 예약 실행. 수집 workflow는 데이터 push 뒤 별도 GitHub push workflow 실행에 의존하지 않습니다. Vercel의 Git 연동이 배포합니다.
코드는 비공개 저장소에 두더라도 배포된 사이트와 public/data/는 공개됩니다. 웹훅과 발송 기록은 배포 대상에 포함되지 않습니다.
i0OFE를 기본으로, 페이지 내 JSON을 보조로 읽습니다. RSS 10개를 전체 목록인 것처럼 대체하지 않습니다..venv/bin/python -m unittest discover -s tests -p 'test_*.py'
node --check public/app.js
# Chrome이 설치된 환경에서, npm start 실행 후:
.venv/bin/pip install -r requirements-dev.txt
.venv/bin/python tests/browser_check.py
뉴스 단어 분석(형태소 분석기·규칙 대체·순위 변동·급부상·7일 추이·주간 합산·개념 비교)·파서·날짜 경계·첫 수집 기준선·히스토리 압축·뉴스 필드·CSV·Discord 메시지 제한 및 3개국 TOP 5·뉴스 3건·분할 발송·일일 중복 방지·CSV 일별 보관를 검증합니다. 브라우저 검증은 실제 로컬 데이터를 사용하며 test-results/에 화면과 내보내기 파일을 저장합니다.
데이터 경로: /data/index.json, /data/latest/KR/24.json, /data/explore/KR/1m.json, /data/history/KR/YYYY-MM-DD.jsonl, /data/analysis/YYYY-MM-DD.json.