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.jsonand 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.jsonon first use. Browser discovery supports Playwright-managed Chromium plus common Chrome/Edge installs. No customNODE_PATHis required. - Prefer
CNKI_COOKIE.CNKI_USERNAMEplusCNKI_PASSWORDis 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_COOKIEor 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.pyquirks at the expense of runtime compatibility.
Reference files:
references/config.mdreferences/schedule.mdreferences/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-journalfor a journal lookup andquery-topicfor a topic lookup. - Use
subscribe-journalorsubscribe-topicfor recurring pushes. If the user does not supply a schedule, use the configureddefaultSchedule. - Respect skill config for
browserProfile,timezone,defaultSchedule,maxManualResults, andmaxPushResults. - 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_COOKIEor 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, orCNKI_USERNAMEplusCNKI_PASSWORD, in the skill env config before retrying.