@heripo/research-radar 2.3.4 → 2.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +17 -0
  2. package/package.json +13 -11
package/README.md CHANGED
@@ -192,6 +192,23 @@ npm run dev:welcome-preview # Start at http://localhost:3335
192
192
 
193
193
  Query params: `?kras=true` (KRAS mode), `?name=홍길동` (subscriber name)
194
194
 
195
+ ### Parser Health-Check
196
+
197
+ CLI tool that validates all active crawling parsers against live websites. Detects silent failures (empty results, broken selectors) caused by upstream website redesigns.
198
+
199
+ ```bash
200
+ npm run health-check # Run health-check
201
+ npm run health-check:proxy # Run with proxy support (uses .env)
202
+ ```
203
+
204
+ **What it checks per target**:
205
+ - `parseList()`: Returns non-empty array with valid title, date, and detailUrl
206
+ - `parseDetail()`: Returns non-empty detailContent (20+ chars)
207
+
208
+ **Output**: Console table summary + compact text summary for CI integrations.
209
+
210
+ **CI**: Daily automated run via GitHub Actions (`.github/workflows/parser-health-check.yml`) with Slack notifications on pass/fail.
211
+
195
212
  ## 🤝 Contributing
196
213
 
197
214
  You can use this project in two ways:
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@heripo/research-radar",
3
3
  "private": false,
4
4
  "type": "module",
5
- "version": "2.3.4",
5
+ "version": "2.3.5",
6
6
  "description": "AI-driven intelligence for Korean cultural heritage. This package serves as both a ready-to-use newsletter service and a practical implementation example for the LLM-Newsletter-Kit.",
7
7
  "main": "dist/index.cjs",
8
8
  "module": "dist/index.js",
@@ -40,13 +40,15 @@
40
40
  "dev:crawler": "tsx watch dev-tools/crawler-debugger/server.ts",
41
41
  "dev:crawler:proxy": "tsx watch --env-file=dev-tools/crawler-debugger/.env dev-tools/crawler-debugger/server.ts",
42
42
  "dev:newsletter-preview": "tsx watch dev-tools/newsletter-preview/server.ts",
43
- "dev:welcome-preview": "tsx watch dev-tools/welcome-preview/server.ts"
43
+ "dev:welcome-preview": "tsx watch dev-tools/welcome-preview/server.ts",
44
+ "health-check": "tsx dev-tools/health-check/index.ts",
45
+ "health-check:proxy": "tsx --env-file=dev-tools/crawler-debugger/.env dev-tools/health-check/index.ts --proxy"
44
46
  },
45
47
  "author": "kimhongyeon",
46
48
  "license": "Apache-2.0",
47
49
  "dependencies": {
48
- "@ai-sdk/google": "^3.0.30",
49
- "@ai-sdk/openai": "^3.0.30",
50
+ "@ai-sdk/google": "^3.0.34",
51
+ "@ai-sdk/openai": "^3.0.37",
50
52
  "cheerio": "^1.2.0",
51
53
  "dompurify": "^3.3.1",
52
54
  "jsdom": "^28.1.0",
@@ -59,23 +61,23 @@
59
61
  },
60
62
  "devDependencies": {
61
63
  "@eslint/js": "^10.0.1",
62
- "@llm-newsletter-kit/core": "^1.3.3",
64
+ "@llm-newsletter-kit/core": "^1.3.4",
63
65
  "@trivago/prettier-plugin-sort-imports": "^6.0.2",
64
66
  "@types/express": "^5.0.6",
65
- "@types/jsdom": "^27.0.0",
66
- "@types/node": "^25.3.0",
67
+ "@types/jsdom": "^28.0.0",
68
+ "@types/node": "^25.3.3",
67
69
  "@types/turndown": "^5.0.6",
68
- "eslint": "^10.0.1",
70
+ "eslint": "^10.0.2",
69
71
  "eslint-plugin-unused-imports": "^4.4.1",
70
72
  "express": "^5.2.1",
71
73
  "prettier": "^3.8.1",
72
74
  "rimraf": "^6.1.3",
73
- "rollup": "^4.58.0",
75
+ "rollup": "^4.59.0",
74
76
  "rollup-plugin-dts": "^6.3.0",
75
77
  "rollup-plugin-typescript2": "^0.36.0",
76
78
  "tsx": "^4.21.0",
77
79
  "typescript": "^5.9.3",
78
- "typescript-eslint": "^8.56.0"
80
+ "typescript-eslint": "^8.56.1"
79
81
  },
80
82
  "repository": {
81
83
  "type": "git",
@@ -104,7 +106,7 @@
104
106
  "example"
105
107
  ],
106
108
  "engines": {
107
- "node": ">=22"
109
+ "node": ">=24"
108
110
  },
109
111
  "publishConfig": {
110
112
  "access": "public"