Bops
A team of AI bots that runs your business ops: inbox, pipeline, invoices, reports. Each one has its own computer, email and phone number, and remembers everything.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
언론보도 실시간 모니터링 및 통계 자동화 시스템 고려대학교 구로병원 홍보팀 기능명세서(v1.0, 2026-08-20)를 그대로 구현한 Google Apps Script 프로젝트입니다. 서버·DB 없이 구글 스프레드시트 + Apps Script만으로 동작하도록 만들었습니다(명세서 1.4 구축 원칙). 방법 A — 복사/붙여넣기 (권장, 별도 도구 불필요) 1. sheets.google.com에서 새 스프레드시트를 만듭니다. 2. 메뉴 확장 프로그램 → Apps Script를 클릭합니다. 3. 기본 생성된 코드.gs를 지우고, 이 폴더의 .gs 파일 14개를 각각 파일 → 새로 만들기 → 스크립트로 만든 뒤 내용을 그대로 복사해 넣습니다(파일명은 확장자 .gs 없이 그대로 사용). 4. 좌측 appsscript.json은 편집기의 ⚙️ 프로젝트 설정에서 "appsscript.json 매니페스트 파일을 편집기에 표시" 체크 후 내용을 덮어씁니다. 5. 저장 후 스프레드시트로 돌아와 새로고침하면 상단에 [모니터링 시스템] 메뉴가 나타납니다. 방법 B — clasp (Node.js/CLI에 익숙한 경우)Read the full README ↗
고려대학교 구로병원 홍보팀 기능명세서(v1.0, 2026-08-20)를 그대로 구현한 Google Apps Script 프로젝트입니다. 서버·DB 없이 구글 스프레드시트 + Apps Script만으로 동작하도록 만들었습니다(명세서 1.4 구축 원칙).
| 파일 | 담당 기능 |
|---|---|
appsscript.json | 프로젝트 매니페스트(권한 범위) |
00_Config.gs | 시트명·컬럼정의·00_설정 시트 레이아웃, 임계값 기본값 |
01_Setup.gs | 시트 최초 생성, 커스텀 메뉴 |
02_Utils.gs | 공용 함수(해시, 유사도, 로그 등) |
03_CollectNaver.gs | F-101 뉴스 수집, F-103 카페·블로그 수집 (네이버 검색 API) |
04_CollectRSS.gs | F-102 RSS 수집(의학전문지, 구글 알리미) |
05_Pipeline.gs | 수집 오케스트레이션, 중복제거·매체정규화·논조/카테고리/진료과 분류, 모니터링 현황 적재, 수집 주기 자기제어 |
06_Crisis.gs | F-501~503 위기 키워드 감지·등급 산정(6.3항 산식) |
07_Alert.gs | F-504~512 알림 발송(카카오 알림톡→SMS 대체), 알림 이력, 수동알림, 오탐 학습 |
08_Stats.gs | F-401~405 주간/월간/연간 통계, 기간 임의 조회 |
09_Dashboard.gs | F-404 실시간 대시보드 |
10_Report.gs | F-408 리포트 자동 생성·메일 발송 |
11_ManualEntry.gs | F-104 지면·방송 수동 등록 |
12_PressMatch.gs | F-208 보도자료 채택 매칭 |
13_Ops.gs | F-107 API 한도, F-304 아카이브, F-305 백업, F-603 장애알림, F-604 잔액관리 |
14_Triggers.gs | 시간 기반 트리거 일괄 설치 |
코드.gs를 지우고, 이 폴더의 .gs 파일 14개를 각각 파일 → 새로 만들기 → 스크립트로 만든 뒤 내용을 그대로 복사해 넣습니다(파일명은 확장자 .gs 없이 그대로 사용).appsscript.json은 편집기의 ⚙️ 프로젝트 설정에서 "appsscript.json 매니페스트 파일을 편집기에 표시" 체크 후 내용을 덮어씁니다.npm install -g @google/clasp
clasp login
clasp create --title "언론보도 모니터링" --type sheets
clasp push
clasp create가 만든 스프레드시트를 열어 방법 A의 5번부터 이어서 진행합니다.
Apps Script 편집기 → ⚙️ 프로젝트 설정 → 스크립트 속성에서 아래 키를 등록합니다.
| 키 | 설명 | 필요 시점 |
|---|---|---|
NAVER_HUB_KEY_ID / NAVER_HUB_KEY | [기본] NAVER API HUB에서 발급받은 인증키 (X-NCP-APIGW-API-KEY-ID / X-NCP-APIGW-API-KEY) | 1단계(수집) |
NAVER_API_MODE | 기본값 없음(=HUB). 기존 개발자센터 키를 아직 쓰는 경우에만 LEGACY로 설정 | 필요 시 |
NAVER_CLIENT_ID / NAVER_CLIENT_SECRET | NAVER_API_MODE=LEGACY일 때만 사용하는 구(舊) 개발자센터 키 (2027-06-30까지만 지원) | 필요 시 |
NAVER_API_BASE | 호스트를 수동으로 덮어써야 할 때만 설정(기본값은 모드에 따라 자동 선택됨) | 필요 시 |
SOLAPI_API_KEY / SOLAPI_API_SECRET / SOLAPI_SENDER | 알림톡·SMS 발송 대행사(SOLAPI 등) 키와 발신번호 | 3단계(위기 알림) |
KAKAO_PF_ID / KAKAO_TEMPLATE_CODE | 카카오 비즈니스 채널 발신프로필ID, 승인된 알림톡 템플릿 코드 | 3단계 |
MESSAGE_BALANCE_ALERT_THRESHOLD | 잔액 경고 기준(원), 기본 5000 | 선택 |
네이버 검색 API는 2026-06-25 NAVER API HUB 출시로 신규 발급 창구가 완전히 바뀌었습니다. 기존 개발자센터(developers.naver.com)에서는 더 이상 새 애플리케이션을 만들 수 없고 (2026-07-31 신규 발급 종료), 아래 절차를 따라야 합니다.
NAVER_HUB_KEY_ID(→ X-NCP-APIGW-API-KEY-ID), NAVER_HUB_KEY(→ X-NCP-APIGW-API-KEY)에 등록합니다.items[].title/link/description/pubDate 필드가 그대로인지 확인한 뒤 트리거를 설치하세요.
curl -G "https://naverapihub.apigw.ntruss.com/search/v1/news" \
-H "X-NCP-APIGW-API-KEY-ID: 발급받은_KEY_ID" \
-H "X-NCP-APIGW-API-KEY: 발급받은_KEY" \
--data-urlencode "query=고려대 구로병원" --data "display=5"
03_CollectNaver.gs는 429 응답을 오류가 아닌 "한도 초과"로 별도 처리하고, 13_Ops.gs의 F-107 로직이 월 사용량 80%/100%에서 자동으로 경고·완화합니다. 요금·한도는 변경될 수 있으므로 콘솔에서 최신 값을 재확인해 00_설정!임계값의 네이버_API_월간한도를 맞춰 두세요.이미 개발자센터에서 발급받은 기존 키가 있고 2027-06-30 전까지만 쓰고 넘어가려면, 새로 발급받지 않고
NAVER_API_MODE=LEGACY+NAVER_CLIENT_ID/NAVER_CLIENT_SECRET로 그대로 운영할 수 있습니다. 다만 신규 구축이므로 처음부터 HUB로 시작하는 쪽을 권장합니다.
관심,주의,경계,심각,리포트 중 해당하는 값을 쉼표로 입력, 수신동의=Y)커뮤니티수집_사용을 Y로 변경), 연간 통계, 리포트 메일 발송 확인, 위기 등급 임계값을 실제 오탐/미탐 사례로 튜닝.00_설정!임계값 블록의 점수 기준은 초기값입니다. 운영 첫 1개월은 오탐·미탐을 관찰하며 조정하세요(6.3항 원칙).07_Alert.gs의 인증 헤더 생성(HMAC-SHA256)과 엔드포인트는 SOLAPI 공식 문서를 기준으로 작성했습니다. 실제 계약 후 최신 API 문서와 대조해 확인하세요.