CNKI Watch
Use this skill when the user wants CNKI results in either of these modes:
- manual journal query: return papers from a named journal,
- manual topic query: return CNKI papers related to a research topic,
- journal subscription: periodically push new papers from a named journal,
- topic subscription: periodically push new papers for a research topic.
When to use
- The user gives a journal name and wants a one-off CNKI query.
- The user gives a research topic and wants titles plus source metadata.
- The user wants a recurring CNKI watch delivered back into OpenClaw.
Preconditions
- The skill ships as a normal npm project with a root
package.json and declared dependencies.
- Preferred runtime is still the OpenClaw gateway container, but local development runs are supported on Windows/macOS/Linux with Node.js 22+.
- On local runs, the script auto-installs missing JavaScript dependencies from
package.json on first use. Browser discovery supports Playwright-managed Chromium plus common Chrome/Edge installs. No custom NODE_PATH is required.
- Prefer
CNKI_COOKIE. CNKI_USERNAME plus CNKI_PASSWORD is a fallback path for establishing a CNKI login session.
- If CNKI shows captcha, slider verification, or another human-check page, stop and ask for a fresh
CNKI_COOKIE or a manually refreshed session. Do not invent alternative scraping logic in the model.
- Treat OpenClaw runtime behavior as authoritative. The docs define the public contract; do not optimize for
quick_validate.py quirks at the expense of runtime compatibility.
Reference files:
references/config.md
references/schedule.md
references/commands.md
Canonical entrypoint
Always use the bundled script instead of ad hoc CNKI browsing:
node {baseDir}/scripts/cnki-watch.mjs <command> [flags]
For local development outside OpenClaw:
cd {baseDir}
npm install
node scripts/cnki-watch.mjs --help
npx cnki-watch query-topic --topic "人工智能" --json
Core commands
One-off journal lookup
node {baseDir}/scripts/cnki-watch.mjs query-journal --journal "计算机学报" --json
One-off topic lookup
node {baseDir}/scripts/cnki-watch.mjs query-topic --topic "大模型安全" --json
Create a journal subscription
node {baseDir}/scripts/cnki-watch.mjs subscribe-journal --journal "计算机学报" --schedule "daily@09:00" --json
Create a topic subscription
node {baseDir}/scripts/cnki-watch.mjs subscribe-topic --topic "大模型安全" --schedule "weekly@mon@09:00" --json
List and remove subscriptions
node {baseDir}/scripts/cnki-watch.mjs list-subscriptions --json
node {baseDir}/scripts/cnki-watch.mjs unsubscribe --id "<subscription-id>" --json
node {baseDir}/scripts/cnki-watch.mjs run-subscription --id "<subscription-id>" --json
Workflow
- Decide whether the user wants a manual query or a subscription.
- Preserve the journal name or topic text exactly unless the user explicitly asks to normalize it.
- Use
query-journal for a journal lookup and query-topic for a topic lookup.
- Use
subscribe-journal or subscribe-topic for recurring pushes. If the user does not supply a schedule, use the configured defaultSchedule.
- Respect skill config for
browserProfile, timezone, defaultSchedule, maxManualResults, and maxPushResults.
- After creating, listing, running, or removing a subscription, report the subscription id, schedule, timezone, and status returned by the script.
Delivery rules
- Subscription jobs run as isolated cron turns with no automatic announce delivery.
- The script is responsible for posting new findings back to the main OpenClaw chat, typically through
chat.inject.
- Manual queries return metadata to the current turn and do not create subscription state.
- Subscription runs should push only new items and stay silent when there is no delta.
- Return metadata and CNKI links only. Do not promise PDFs, full text, or other copyrighted payloads.
Failure handling
- If the script reports missing browser dependencies or an unusable runtime, fix the OpenClaw runtime and retry.
- If CNKI blocks the session with captcha or another verification flow, stop and ask for a fresh
CNKI_COOKIE or a manually refreshed CNKI session.
- If a journal lookup returns weak matches, verify the exact journal name and tell the user that source filtering may need the precise CNKI source string.
- If credentials are missing, ask the user to populate
CNKI_COOKIE, or CNKI_USERNAME plus CNKI_PASSWORD, in the skill env config before retrying.
1---2name: cnki-watch3description: Query CNKI by journal name or research topic, and create journal or topic subscriptions that periodically push new CNKI paper metadata into the main OpenClaw chat. Use for one-off CNKI lookups and recurring CNKI monitoring.4---56# CNKI Watch78Use this skill when the user wants CNKI results in either of these modes:910- manual journal query: return papers from a named journal,11- manual topic query: return CNKI papers related to a research topic,12- journal subscription: periodically push new papers from a named journal,13- topic subscription: periodically push new papers for a research topic.1415## When to use1617- The user gives a journal name and wants a one-off CNKI query.18- The user gives a research topic and wants titles plus source metadata.19- The user wants a recurring CNKI watch delivered back into OpenClaw.2021## Preconditions2223- The skill ships as a normal npm project with a root `package.json` and declared dependencies.24- Preferred runtime is still the OpenClaw gateway container, but local development runs are supported on Windows/macOS/Linux with Node.js 22+.25- On local runs, the script auto-installs missing JavaScript dependencies from `package.json` on first use. Browser discovery supports Playwright-managed Chromium plus common Chrome/Edge installs. No custom `NODE_PATH` is required.26- Prefer `CNKI_COOKIE`. `CNKI_USERNAME` plus `CNKI_PASSWORD` is a fallback path for establishing a CNKI login session.27- If CNKI shows captcha, slider verification, or another human-check page, stop and ask for a fresh `CNKI_COOKIE` or a manually refreshed session. Do not invent alternative scraping logic in the model.28- Treat OpenClaw runtime behavior as authoritative. The docs define the public contract; do not optimize for `quick_validate.py` quirks at the expense of runtime compatibility.2930Reference files:3132- `references/config.md`33- `references/schedule.md`34- `references/commands.md`3536## Canonical entrypoint3738Always use the bundled script instead of ad hoc CNKI browsing:3940```bash41node {baseDir}/scripts/cnki-watch.mjs <command> [flags]42```4344For local development outside OpenClaw:4546```bash47cd {baseDir}48npm install49node scripts/cnki-watch.mjs --help50npx cnki-watch query-topic --topic "人工智能" --json51```5253## Core commands5455### One-off journal lookup5657```bash58node {baseDir}/scripts/cnki-watch.mjs query-journal --journal "计算机学报" --json59```6061### One-off topic lookup6263```bash64node {baseDir}/scripts/cnki-watch.mjs query-topic --topic "大模型安全" --json65```6667### Create a journal subscription6869```bash70node {baseDir}/scripts/cnki-watch.mjs subscribe-journal --journal "计算机学报" --schedule "daily@09:00" --json71```7273### Create a topic subscription7475```bash76node {baseDir}/scripts/cnki-watch.mjs subscribe-topic --topic "大模型安全" --schedule "weekly@mon@09:00" --json77```7879### List and remove subscriptions8081```bash82node {baseDir}/scripts/cnki-watch.mjs list-subscriptions --json83node {baseDir}/scripts/cnki-watch.mjs unsubscribe --id "<subscription-id>" --json84node {baseDir}/scripts/cnki-watch.mjs run-subscription --id "<subscription-id>" --json85```8687## Workflow88891. Decide whether the user wants a manual query or a subscription.902. Preserve the journal name or topic text exactly unless the user explicitly asks to normalize it.913. Use `query-journal` for a journal lookup and `query-topic` for a topic lookup.924. Use `subscribe-journal` or `subscribe-topic` for recurring pushes. If the user does not supply a schedule, use the configured `defaultSchedule`.935. Respect skill config for `browserProfile`, `timezone`, `defaultSchedule`, `maxManualResults`, and `maxPushResults`.946. After creating, listing, running, or removing a subscription, report the subscription id, schedule, timezone, and status returned by the script.9596## Delivery rules9798- Subscription jobs run as isolated cron turns with no automatic announce delivery.99- The script is responsible for posting new findings back to the main OpenClaw chat, typically through `chat.inject`.100- Manual queries return metadata to the current turn and do not create subscription state.101- Subscription runs should push only new items and stay silent when there is no delta.102- Return metadata and CNKI links only. Do not promise PDFs, full text, or other copyrighted payloads.103104## Failure handling105106- If the script reports missing browser dependencies or an unusable runtime, fix the OpenClaw runtime and retry.107- If CNKI blocks the session with captcha or another verification flow, stop and ask for a fresh `CNKI_COOKIE` or a manually refreshed CNKI session.108- If a journal lookup returns weak matches, verify the exact journal name and tell the user that source filtering may need the precise CNKI source string.109- If credentials are missing, ask the user to populate `CNKI_COOKIE`, or `CNKI_USERNAME` plus `CNKI_PASSWORD`, in the skill env config before retrying.