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.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
正在加载完整 README。 以下为已保存的摘录。
언론보도 실시간 모니터링 및 통계 자동화 시스템 고려대학교 구로병원 홍보팀 기능명세서(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에 익숙한 경우)查看完整 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 문서와 대조해 확인하세요.