[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-893":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":14,"stars7d":15,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":14,"lastSyncTime":30,"discoverSource":31},893,"damn-my-slow-kt","kargnas\u002Fdamn-my-slow-kt","kargnas","명령어 설치 한번으로 한달 KT 인터넷 요금을 무료로 쓸 수 있습니다. 귀찮은 공문 작성 필요 없습니다.","",null,"TypeScript",598,45,2,3,0,16,6,8.99,false,"main",[23,24,25,26],"cli","internet","kt","legal","2026-06-12 02:00:20","# 🐌 damn-my-slow-kt\n\n**KT 인터넷 요금 → 0원.** SLA 미달 속도를 자동으로 측정하고 요금 감면을 신청해주는 도구.\n\n---\n\n## 이게 뭔데\n\nKT는 SLA 기준(계약 속도의 50%)을 미달하면 **측정한 날의 요금을 감면**해줘야 한다. 한 번 측정해서 한 달 치가 깎이는 게 아니다. **매일 측정해야 매일 감면된다.** 30일 매일 미달이면 전액 감면.\n\n근데 그걸 누가 매일 직접 KT 홈페이지 들어가서 로그인하고, 25분 기다리고, 이의신청 버튼 누르냐? 아무도 안 한다. **이 도구는 그걸 대신 한다.**\n\n```\n📊 측정 결과\n   계약 속도:  1,000 Mbps  (기가라이트)\n   측정 속도:     64 Mbps  ← 계약의 6.4%\n   → SLA 실패 → 이의신청 완료 → 당월 요금 감면\n```\n\n---\n\n## 시작하기\n\n### 1. Node.js 설치 (최초 1회)\n\n이 README의 `npx ...` 명령어는 Node.js에 포함된 도구로 실행합니다. 먼저 터미널에서 설치 여부를 확인하세요.\n\n```bash\nnode -v\nnpm -v\nnpx -v\n```\n\n`node -v`가 `v20...` 이상이면 다음 단계로 넘어가면 됩니다. 명령어가 없거나 버전이 낮으면 Node.js 20 이상을 설치하세요. 새로 설치한다면 최신 LTS를 권장합니다.\n\n- **가장 쉬운 방법**: [Node.js 공식 다운로드](https:\u002F\u002Fnodejs.org\u002Fen\u002Fdownload)에서 LTS 설치 파일을 받아 설치\n  - macOS: `macOS Installer (.pkg)` 다운로드 후 실행\n  - Windows: `Windows Installer (.msi)` 다운로드 후 실행\n- **macOS (Homebrew를 이미 쓰는 경우)**:\n  ```bash\n  brew install node\n  ```\n- **Windows (winget을 이미 쓰는 경우, PowerShell)**:\n  ```powershell\n  winget install OpenJS.NodeJS.LTS\n  ```\n\n설치 후 새 터미널을 열고 다시 확인:\n\n```bash\nnode -v\nnpx -v\n```\n\n### 2. KT 속도측정 프로그램 설치 (최초 1회)\n\nSLA 측정을 위해 KT 공식 속도측정 프로그램이 필요합니다.\n\n- **macOS**: [ktspeed.pkg 다운로드](https:\u002F\u002Fspeed.kt.com\u002Ffile\u002Fktspeed.pkg) 설치\n- **Windows**: [speed.kt.com](https:\u002F\u002Fspeed.kt.com) → 속도측정 → 품질보증(SLA) 테스트 진입 후 안내에 따라 설치\n- **Linux**: KT 속도측정 프로그램이 지원하지 않아 사용 불가\n\n> ⚠️ **Windows는 아직 테스트되지 않았습니다.** macOS에서만 동작이 검증되었습니다.\n\n\u003Cdetails>\n\u003Csummary>macOS에서 설치 시 보안 경고가 뜨는 경우\u003C\u002Fsummary>\n\nktspeed.pkg는 KT 공식 파일이지만, Apple 공증(Notarization)이 안 되어 있어 macOS에서 보안 경고가 뜰 수 있습니다.\n\n**\"Apple은 이 파일이 악성 소프트웨어인지 확인할 수 없습니다\"** 라는 메시지가 나타나면:\n\n1. **시스템 설정** → **개인정보 보호 및 보안** 으로 이동\n2. 하단 **보안** 섹션에서 `\"ktspeed.pkg\" 차단됨` 메시지 확인\n3. **\"그래도 열기\"** 버튼 클릭\n4. 비밀번호 또는 Touch ID로 인증\n\n> macOS Sequoia(15) 이후로는 Ctrl+클릭 우회가 제거되었습니다. 반드시 시스템 설정에서 허용해야 합니다.\n\n\u003C\u002Fdetails>\n\n### 3. 초기 설정\n\n```bash\nnpx -y damn-my-slow-kt@latest init\n```\n\nKT 계정 입력하면 끝. 매일 자동으로 최대 10회 (2시간 간격) 측정하고, 미달이면 바로 감면 신청한다. 성공하면 나머지는 자동 스킵.\n\n```\n04:00  → 측정 → 속도 정상 → 종료\n06:00  → 측정 → SLA 미달 → 감면 신청 성공!\n08:00  → \"오늘 이미 감면 성공\" → 스킵\n10:00  → 스킵\n ...\n```\n\n---\n\n## 지금 바로 실행하기\n\n스케줄을 기다리지 않고 직접 한 번 돌리고 싶을 때:\n\n```bash\nnpx -y damn-my-slow-kt@latest run\n```\n\n약 25분(5회 측정) 걸리고, SLA 미달이면 자동으로 감면 신청까지 진행합니다.\n\n- `--dry-run`: 측정만 하고 감면 신청은 생략\n- `--force`: 오늘 이미 완료했어도 강제로 다시 실행\n- `--debug`: 브라우저 창을 띄워 진행 과정을 직접 확인 (문제 진단용)\n\n---\n\n## 스케줄 해제하기\n\n```bash\nnpx -y damn-my-slow-kt@latest schedule remove\n```\n\n---\n\n## 설정 바꾸기\n\n`~\u002F.damn-my-slow-isp\u002Fconfig-kt.yaml` 파일을 직접 편집:\n\n```yaml\nschedule:\n  max_attempts: 10       # 하루 최대 측정 횟수\n  retry_interval_minutes: 120  # 측정 간격 (분)\n\nnotification:\n  discord_webhook: \"\"    # Discord 알림 (선택)\n  telegram_bot_token: \"\" # Telegram 알림 (선택)\n```\n\n설정 변경 후 스케줄 재등록:\n```bash\nnpx -y damn-my-slow-kt@latest schedule install\n```\n\n---\n\n## 에러가 나면? (디버그 모드)\n\n터미널에서 `run` 도중 에러가 발생하면 **\"브라우저 창을 열어서 어디서 막혔는지 직접 확인해보시겠습니까?\"** 라고 물어봅니다. 여기서 `Y`를 누르면 같은 흐름을 디버그 모드로 다시 실행합니다.\n\n처음부터 디버그 모드로 돌리고 싶다면:\n\n```bash\nnpx -y damn-my-slow-kt@latest run --debug\n```\n\n- `config-kt.yaml`의 `headless` 설정을 무시하고 이번 실행만 임시로 브라우저를 띄웁니다\n- `slowMo: 250ms` + DevTools 자동 열림\n- 에러 발생 시 브라우저를 바로 닫지 않고, Enter를 누를 때까지 대기합니다\n- 측정 결과와 감면 신청은 일반 실행과 동일하게 저장\u002F처리됩니다\n\n자주 발생하는 원인 ([#3](https:\u002F\u002Fgithub.com\u002Fkargnas\u002Fdamn-my-slow-kt\u002Fissues\u002F3)):\n- KT 회선을 보유하지 않은 계정으로 로그인\n- 속도측정 프로그램 미설치\n- 새 기기 등록 화면이 뜸\n- 다회선 계정에서 주소지 선택 화면이 추가로 뜸\n\n---\n\n## 업데이트\n\n```bash\nnpx -y damn-my-slow-kt@latest init\n```\n\n새 버전에서 설정이 바뀌면 자동으로 안내해주고, 적용할지 물어본다.\n\n---\n\n## KT SLA 감면 기준\n\n| | 한 번만 측정 | 매일 측정 |\n|---|---|---|\n| 감면 범위 | **하루분만** | **매일 하루분씩 → 최대 전액** |\n\n- **판정**: 30분간 5회 측정, 60% 이상(3회 이상) 미달 → 감면 대상\n- **보상**: 해당일 이용요금 감면\n- **해약권**: 월 5일 이상 감면 시 **할인반환금 없이 해약** 가능\n- **대상**: 유선(LAN) 연결만 (Wi-Fi 제외)\n- **측정**: [speed.kt.com](https:\u002F\u002Fspeed.kt.com) KT 공식 SLA 서버 + KT 속도측정 프로그램 필수\n- **공식 안내**: [KT 초고속 인터넷 품질보장제도(SLA)](https:\u002F\u002Fermsweb.kt.com\u002Fsearch\u002Ffaq\u002FfaqAnswerM.do?kbId=KNOW0002301063&nodeId=NODE0000000255&parentNodeId=NODE0000000238)\n\n### 상품별 최저보장속도 (약관 별표2)\n\n| 상품명 | 계약 속도 | 최저보장속도 |\n|--------|-----------|-------------|\n| 인터넷 슈퍼프리미엄 | 10Gbps | 5Gbps |\n| 인터넷 프리미엄플러스 | 5Gbps | 2.5Gbps |\n| 인터넷 프리미엄 | 2.5Gbps | 1.25Gbps |\n| 인터넷 에센스 (기가라이트 등) | 1Gbps | 500Mbps |\n| 인터넷 베이직 | 500Mbps | 250Mbps |\n| 인터넷 슬림플러스 | 200Mbps | 100Mbps |\n| 스페셜 | 100Mbps | 50Mbps |\n\n\u003Cdetails>\n\u003Csummary>약관 원문 발췌 (2025년 3월 기준)\u003C\u002Fsummary>\n\n> **출처**: [KT 인터넷서비스 이용약관 (2025.03)](https:\u002F\u002Fcorp.kt.com\u002Fattach\u002Fboard\u002FBS00000005\u002F70\u002F(%EC%9D%B4%EC%9A%A9%EC%95%BD%EA%B4%80+%EC%A0%84%EB%AC%B8)+%EC%9D%B8%ED%84%B0%EB%84%B7%EC%84%9C%EB%B9%84%EC%8A%A4+%EC%9D%B4%EC%9A%A9%EC%95%BD%EA%B4%80_202503(1).pdf)\n\n#### 별표2 — 초고속인터넷서비스 최저속도 보장제도\n\n**라. 보상기준**\n1. 측정서버: KT 속도측정서버(http:\u002F\u002Fspeed.kt.com)\n2. 보상기준: 30분 동안 5회 이상 전송속도를 측정하여 측정횟수의 60% 이상이 최저속도에 미달할 경우 보상. 측정은 KT가 공급한 속도측정 프로그램을 사용하여야 함.\n3. 보상금액: 해당일 이용요금을 감면\n4. **월 5일 이상 감면을 받는 경우 할인반환금 없이 해약이 가능함**\n\n#### 제13조 ⑦항 — 할인반환금 없이 해지 가능한 경우 (발췌)\n\n> 5\\. 케이티에 책임있는 사유로 \"별표2\" 제1항의 최저속도 보장제도에 미달하여 이용고객이 해지를 원하는 경우\n\n#### 제19조 ⑤항 — 요금 감면\n\n> 케이티는 KT internet 속도측정 결과 최저속도 미달 시(체크라인, 포스넷 제외) 이용요금을 감면합니다. 최저속도, 대상서비스, 보상기준 등은 \"별표2\"와 같습니다.\n\n\u003C\u002Fdetails>\n\n---\n\n## ~~NAS \u002F Docker에서 실행~~\n\n> ⚠️ **현재 사용 불가** — KT 속도측정 프로그램이 macOS\u002FWindows만 지원하므로, Linux 기반 Docker\u002FNAS 환경에서는 SLA 측정이 불가능합니다.\n\n\u003Cdetails>\n\u003Csummary>참고: 이전 Docker 실행 방법 (KT가 Linux를 지원할 경우)\u003C\u002Fsummary>\n\nSynology NAS 등 시스템 라이브러리가 부족한 환경에서는 Playwright 공식 Docker 이미지를 사용:\n\n```bash\n# 1. 먼저 호스트에서 설정 파일 생성\nnpx -y damn-my-slow-kt@latest init\n\n# 2. Docker로 실행\ndocker run --rm \\\n  -v ~\u002F.damn-my-slow-isp:\u002Froot\u002F.damn-my-slow-isp \\\n  mcr.microsoft.com\u002Fplaywright:v1.52.0-noble \\\n  npx -y damn-my-slow-kt@latest run\n```\n\ncron으로 자동 실행하려면 `\u002Fetc\u002Fcrontab`에 직접 등록:\n\n```bash\n# 매일 04:00, 06:00, ..., 22:00 (2시간 간격 10회)\n0  4  * * * root  docker run --rm -v \u002Fvar\u002Fservices\u002Fhomes\u002Fadmin\u002F.damn-my-slow-isp:\u002Froot\u002F.damn-my-slow-isp mcr.microsoft.com\u002Fplaywright:v1.52.0-noble npx -y damn-my-slow-kt@latest run >> \u002Fvar\u002Fservices\u002Fhomes\u002Fadmin\u002F.damn-my-slow-isp\u002Fcron.log 2>&1\n0  6  * * * root  docker run --rm -v \u002Fvar\u002Fservices\u002Fhomes\u002Fadmin\u002F.damn-my-slow-isp:\u002Froot\u002F.damn-my-slow-isp mcr.microsoft.com\u002Fplaywright:v1.52.0-noble npx -y damn-my-slow-kt@latest run >> \u002Fvar\u002Fservices\u002Fhomes\u002Fadmin\u002F.damn-my-slow-isp\u002Fcron.log 2>&1\n```\n\n\u003C\u002Fdetails>\n\n---\n\n## 테스트 완료 환경\n\n| 환경 | OS | 상태 |\n|------|-----|------|\n| macOS (Apple Silicon) | macOS 15+ | ✅ 네이티브 실행 |\n| Windows | Windows 10\u002F11 | ⚠️ 미테스트 |\n| GitHub Actions | Ubuntu (Node 20\u002F22\u002F24) | ✅ 웹페이지 로드 CI (속도테스트 프로그램 설치 불가로 속도 측정은 불가능) |\n\n---\n\n## 요구사항\n\n- **macOS 또는 Windows** (KT 속도측정 프로그램 필수 — Linux 미지원)\n- Node.js 20+ (`npx` 포함, 22+ 권장 — native SQLite 지원)\n- KT 인터넷 계정\n- 유선(LAN) 연결\n\n---\n\n## 개발 (Contributing)\n\n### 기술 스택\n| Component | Technology |\n|-----------|-----------|\n| Language | TypeScript (ES2020, CommonJS, strict) |\n| CLI | Commander + Inquirer + Chalk v4 |\n| Browser | Playwright (headless Chromium) |\n| Storage | node:sqlite (Node 22+) \u002F JSON fallback |\n| Config | YAML — `~\u002F.damn-my-slow-isp\u002Fconfig-kt.yaml` |\n| Lint | ESLint + typescript-eslint |\n| Test | Vitest |\n| CI | GitHub Actions (Node 20 + 22 matrix) |\n\n### 개발 환경 설정\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fkargnas\u002Fdamn-my-slow-kt.git\ncd damn-my-slow-kt\nnpm install\nnpx playwright install chromium\nnpm run build\n```\n\n### 명령어\n\n| Command | Description |\n|---------|-------------|\n| `npm run build` | TypeScript 컴파일 |\n| `npm run typecheck` | 타입 체크 (`tsc --noEmit`) |\n| `npm run lint` | ESLint |\n| `npm test` | Vitest 단위 테스트 |\n| `npm run dev` | ts-node 개발 모드 |\n\n### 기여 방법\n1. 새 브랜치에서 작업: `git checkout -b feat\u002Fmy-feature`\n2. 커밋 전 반드시 확인: `npm run typecheck && npm run lint && npm run build && npm test`\n3. PR 생성 (main 브랜치 대상)\n4. 커밋 메시지: 한국어 conventional commits (`feat:`, `fix:`, `chore:`, `docs:`)\n\n> AI 에이전트로 개발 환경을 구성하려면 [README.ai-ready.md](.\u002FREADME.ai-ready.md) 참고\n","damn-my-slow-kt 是一个自动检测并申请韩国电信（KT）互联网服务费减免的工具。它能够自动测量网络速度，如果低于SLA标准（即合同速度的50%），则自动提交费用减免申请，从而帮助用户节省网费。项目使用TypeScript编写，提供命令行界面，支持每日多次自动检测和申请，确保用户能最大化地享受费用减免。适合于所有希望在不满足网络服务质量时获得费用减免的KT宽带用户。","2026-06-11 02:40:06","CREATED_QUERY"]