new-term-radar
신규 AI 용어를 매일 추적, X·Hugging Face·GitHub 등에서 모델·제품·레포 이름을 빠르게 수집
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기GEO/AEO SaaS for medical marketing — 메디맵
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
AI 검색엔진(Perplexity / ChatGPT / Gemini / Claude)에서 의료 도메인 브랜드 노출을 측정하고, AI에 인용되도록 최적화된 콘텐츠를 자동 생성하는 멀티테넌트 SaaS. 🌐 라이브 데모: https://blogkey.streamlit.app (비공개 — 비밀번호 필요) 본 저장소는 Phase 1 데모 슬라이스가 동작하는 상태입니다 — 의료법 컴플라이언스 린터 + FAQ Schema.org JSON-LD 생성기. 풀스코프(MVP-0 ~ MVP-3)는 .planning/SPEC-v2.md, 로드맵은 .planning/ROADMAP.md 참조. 키 0개로도 동작합니다. Stub 프로바이더가 미리 작성된 의료법 안전 FAQ 5쌍을 반환합니다 — 메디맵 데모용으로 충분. Python 3.14 사용 시 일부 패키지(pydantic 등)가 wheel을 빌드해야 할 수 있어 약간 시간이 걸릴 수 있습니다. 빌드 실패하면 Python 3.12로 다운그레이드 권장. 기본값(LLM_PROVIDER=stub)이면 키 없이 그대로 진행 OK. 3. DB 초기화 + sample tenant 시드README 전문 보기 ↗
AI 검색엔진(Perplexity / ChatGPT / Gemini / Claude)에서 의료 도메인 브랜드 노출을 측정하고, AI에 인용되도록 최적화된 콘텐츠를 자동 생성하는 멀티테넌트 SaaS.
🌐 라이브 데모: https://blogkey.streamlit.app (비공개 — 비밀번호 필요)
본 저장소는 Phase 1 데모 슬라이스가 동작하는 상태입니다 — 의료법 컴플라이언스 린터 + FAQ Schema.org JSON-LD 생성기. 풀스코프(MVP-0 ~ MVP-3)는
.planning/SPEC-v2.md, 로드맵은.planning/ROADMAP.md참조.
키워드 + tenant 선택
↓
LLM이 FAQ 5쌍 생성
↓
의료법 린터로 검사
↓ (위반 시 LLM에게 위반 요약 전달 → 재호출, 최대 3회)
Schema.org FAQPage JSON-LD 출력
↓
사이트 <head>에 복사 붙여넣기
키 0개로도 동작합니다. Stub 프로바이더가 미리 작성된 의료법 안전 FAQ 5쌍을 반환합니다 — 메디맵 데모용으로 충분.
# 가상환경 권장
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
pip install -e .
Python 3.14 사용 시 일부 패키지(pydantic 등)가 wheel을 빌드해야 할 수 있어 약간 시간이 걸릴 수 있습니다. 빌드 실패하면 Python 3.12로 다운그레이드 권장.
cp .env.example .env
기본값(LLM_PROVIDER=stub)이면 키 없이 그대로 진행 OK.
python scripts/init_db.py
다음과 같이 출력됩니다:
[+] 스키마 생성 완료
[+] tenant 생성: BGN 밝은눈안과
[+] tenant 생성: 메디맵
[+] tenant 1 compliance 룰 9개 시드
[done] init_db OK
streamlit run src/dashboard/app.py
브라우저에서 자동으로 열립니다 (보통 http://localhost:8501).
강남 라식 잘하는 곳)✨ 생성하기 클릭<head>에 붙여넣기Stub 모드는 항상 같은 FAQ를 반환합니다. 키워드별로 다른 FAQ를 받으려면:
.env 수정:
LLM_PROVIDER=gemini
GOOGLE_API_KEY=발급받은키
Ctrl+C 후 다시 streamlit run ...)Free tier 한도 (2026년 5월 기준): Gemini 2.5 Flash — 분당 15 RPM, 일 1500 RPD. 데모/테스트는 충분.
Anthropic Claude / OpenAI GPT를 쓰려면 동일하게 .env에서 LLM_PROVIDER를 anthropic 또는 openai로 바꾸고 해당 키 입력.
.
├── .planning/ # GSD 계획 산출물 (PROJECT/REQUIREMENTS/ROADMAP/SPEC-v2)
├── config/
│ ├── tenants.yaml # Sample tenants
│ └── compliance_rules/
│ └── default.yaml # 의료법 9개 기본 룰
├── data/ # 로컬 DB (gitignored)
├── scripts/
│ └── init_db.py # 스키마 생성 + 시드
├── src/
│ ├── compliance/
│ │ └── linter.py # 의료법 린터
│ ├── content/
│ │ ├── generator.py # 생성 + 자동수정 루프
│ │ ├── llm.py # 멀티 프로바이더
│ │ └── templates/
│ │ └── schema_org.py # JSON-LD FAQPage
│ ├── dashboard/
│ │ └── app.py # Streamlit UI
│ └── storage/
│ ├── db.py
│ └── models.py # 멀티테넌트 데이터 모델
├── tests/
│ ├── test_linter.py
│ └── test_generator.py
├── .env.example
└── pyproject.toml
config/compliance_rules/default.yaml에 9개 기본 룰 — 절대표현, 최상급, 완치 약속, 통증제로, 환자 유인, 이벤트 종료일, 사전심의 키워드, 비교광고, 시술 전후.
추가/수정은 yaml 편집 후 python scripts/init_db.py 재실행.
⚠️ 본 룰셋은 데모용입니다. 운영 배포 전 의료광고 자율심의기구의 가이드라인 + 표시광고법 위반 사례를 반영해 보강하세요. 1차 출처는
.planning/SPEC-v2.md부록 B.
pip install -e ".[dev]"
pytest
핵심 모듈:
tests/test_linter.py — 9개 케이스 (룰 타입별, 위반 집계, position)tests/test_generator.py — 4개 케이스 (stub 통과, DB 영속화, 모르는 tenant, 린트 호출)scripts/init_db.py 가 내부적으로 alembic upgrade head 를 호출하므로 평소엔 신경쓸 일 없음. 다음 케이스만 별도 절차:
Phase 1.5 시점에 만들어진 data/geo.db 가 있다면 baseline 마이그레이션 적용 전에 한 번:
.venv/Scripts/alembic stamp head # macOS/Linux: source .venv/bin/activate; alembic stamp head
이 절차로 기존 데이터(GeneratedContent 등) 손실 없이 alembic 이 "이미 head 상태" 로 인식. 이후엔 alembic upgrade head 만 호출.
모델 변경 시:
.venv/Scripts/alembic revision --autogenerate -m "변경_설명"
.venv/Scripts/alembic upgrade head
빈 마이그레이션이 생성되면 production DB 가 이미 같은 스키마인 것 — 임시 빈 DB(DATABASE_URL=sqlite:///./data/_tmp.db)로 다시 autogenerate 해서 차이를 캡처.
scripts/init_db.py 호출 또는 부트스트랩에서 alembic.command.upgrade(cfg, "head") 가 자동 실행. Postgres(Supabase) 사용 시 DATABASE_URL secret 만 추가하면 동일 마이그레이션이 적용됨.
이미 https://blogkey.streamlit.app 에 배포되어 있습니다. 본인 계정으로 새 인스턴스를 띄우려면:
Create app → 본인 리포 선택
src/dashboard/app.pymainLLM_PROVIDER = "gemini" # 또는 "stub"
GOOGLE_API_KEY = "키"
APP_PASSWORD = "데모비밀번호"
템플릿: .streamlit/secrets.toml.example컨테이너 재시작 시 SQLite 가 휘발돼도
src/storage/seed.py의seed_if_empty()가 매 부트마다 자동으로 sample tenants/rules 를 다시 채웁니다. 운영 데이터를 영속화하려면DATABASE_URLsecret 에 Postgres URL (예: Supabase) 를 추가하세요.
운영자가 인덱싱한 참고 자료(병원 안내문/원장 칼럼/의료 가이드 URL)를 LLM 컨텍스트로 자동 주입해 사실 기반 콘텐츠를 생성합니다. 동일 자료 중복 차단 + tenant 격리 + 발행물에 출처 doc_id 자동 기록.
A. Streamlit "📚 참고 자료" 탭
B. CLI
# 단일 URL
python scripts/ingest_references.py --tenant 1 --url https://example.com/article
# 텍스트 파일 (.txt / .md)
python scripts/ingest_references.py --tenant 1 --file ./docs/clinic_intro.md
# 직접 텍스트
python scripts/ingest_references.py --tenant 1 --text "백내장은 …"
# URL 배치 — 한 줄에 한 URL
python scripts/ingest_references.py --tenant 1 --batch ./urls.txt
# 인덱스 상태 확인
python scripts/ingest_references.py --tenant 1 --list
EMBEDDING_PROVIDER 환경변수 (.env 또는 Streamlit Secrets):
| 값 | 모델 | dim | 키 필요 | 용도 |
|---|---|---|---|---|
stub (기본) | hash 기반 결정론 | 128 | 없음 | 데모 / 단위 테스트 / 무키 fallback |
gemini | text-embedding-004 | 768 | GOOGLE_API_KEY | 무료 tier 권장 |
openai | text-embedding-3-small | 1536 | OPENAI_API_KEY | 정의서 표준 |
Stub 임베딩은 의미 유사도가 약합니다. 실제 검색 품질을 보려면
gemini이상 권장.
통합 발행 탭의 "옵션" 펼침 → 📚 참고 자료(RAG) 사용 체크박스 (기본 ON, k=5).
📎 출처 N건 칩 + cited_reference_ids doc_id 리스트 노출generate_faq_content, generate_blog_post, generate_naver_blog_content, generate_instagram_content) 모두 use_rag=True, rag_k=5 파라미터 지원발행물 DB 저장 시 GeneratedContent.cited_reference_ids JSON 컬럼에 인용된 ReferenceDocument.id 리스트가 자동 기록됩니다.
./data/chroma/ (gitignored)ReferenceDocument 메타 (제목/원문/hash) 는 DATABASE_URL 에 Postgres 연결 시 영속AI 검색 엔진(Perplexity 등)에서 키워드별 브랜드 멘션 추이를 측정 + 통계 분석. 의료법 콘텐츠 발행이 "브랜드 인용도"를 어떻게 움직이는지 평가.
PERPLEXITY_API_KEY 설정 시 실 호출)| 함수 | 반환 | 용도 |
|---|---|---|
mention_share() | {n, share, ci_95, weighted_share, weighted_ci_95, by_brand} | 누적 점유율 + Wilson CI |
detect_trend() | {trend, p_value, tau, is_significant, n_points} | Mann-Kendall 추세 검정 (pymannkendall) |
detect_anomalies() | [AnomalyPoint] (이동평균 ± 2σ) | 시계열 이상치 탐지 |
daily_mention_share_series() | [DailyShare] | DB → 일별 시계열 (누락 날짜 0 fill) |
weight = position_score × strength_score (0~1)
config/mention_signals.yaml 에서 카테고리(추천/비교/부정)별 편집 가능pymannkendall 추세 검정이 동작하려면 7일 이상의 시계열이 필요. 즉시 시연하려면:
python scripts/seed_measurement_demo.py --tenant 1 --keyword "강남 라식 잘하는 곳"
→ 14일치 더미 Query/Response/Mention 생성 (7일 안정 → 7일 증가 패턴, Mann-Kendall significant 보장).
| Chip | 의미 | 해석 |
|---|---|---|
| ↑ 증가 (p<0.05) | 통계적 유의 증가 | 콘텐츠 발행 효과 + |
| ↓ 감소 (p<0.05) | 통계적 유의 감소 | 경쟁사 대응 또는 자료 노후 |
| → 변화 없음 | tau≈0 | 시간 더 필요 또는 효과 없음 |
| ⏳ 데이터 부족 | n<7 | 7일 이상 누적 필요 |
| ⚠️ 이상치 N건 | 직전 7일 평균 ± 2σ 벗어남 | 외부 이벤트(보도/리뷰) 확인 |
| 변수 | 기본 | 설명 |
|---|---|---|
ENGINE_PROVIDER | stub | stub | perplexity |
PERPLEXITY_API_KEY | — | Perplexity 사용 시 필수 |
PERPLEXITY_MODEL | llama-3.1-sonar-small-128k-online | Perplexity 모델 |
MAX_DAILY_USD | 5.0 | LLM/측정 USD 한도 |
MEASUREMENT_CRON_HOUR | 2 | 자동 수집 시각 (KST) |
ANOMALY_WINDOW | 7 | 이상치 윈도우 (일) |
ANOMALY_SIGMA | 2.0 | 이상치 임계 (σ) |
상세는 .planning/ROADMAP.md.
자세한 제약은 .planning/PROJECT.md Out of Scope 참조.