@heripo/research-radar 2.3.4 → 2.3.6
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.
- package/README.md +19 -2
- package/package.json +13 -11
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ English | [한국어](./README-ko.md)
|
|
|
7
7
|

|
|
8
8
|
](https://www.npmjs.com/package/@heripo/research-radar)
|
|
9
9
|

|
|
10
|
-

|
|
11
11
|
|
|
12
12
|
[Code of Conduct](./CODE_OF_CONDUCT.md) • [Security Policy](./SECURITY.md) • [Contributing](./CONTRIBUTING.md)
|
|
13
13
|
|
|
@@ -69,7 +69,7 @@ For academic publications:
|
|
|
69
69
|
npm install @heripo/research-radar @llm-newsletter-kit/core
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
**Requirements**: Node.js >=
|
|
72
|
+
**Requirements**: Node.js >= 24, OpenAI API key, Google Generative AI API key
|
|
73
73
|
|
|
74
74
|
**Note**: `@llm-newsletter-kit/core` is a peer dependency and must be installed separately.
|
|
75
75
|
|
|
@@ -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.
|
|
5
|
+
"version": "2.3.6",
|
|
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.
|
|
49
|
-
"@ai-sdk/openai": "^3.0.
|
|
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.
|
|
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": "^
|
|
66
|
-
"@types/node": "^25.3.
|
|
67
|
+
"@types/jsdom": "^28.0.0",
|
|
68
|
+
"@types/node": "^25.3.3",
|
|
67
69
|
"@types/turndown": "^5.0.6",
|
|
68
|
-
"eslint": "^10.0.
|
|
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.
|
|
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.
|
|
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": ">=
|
|
109
|
+
"node": ">=24"
|
|
108
110
|
},
|
|
109
111
|
"publishConfig": {
|
|
110
112
|
"access": "public"
|