# ChatDOC Studio--KnowledgeMate

> Create and operate ChatDOC Studio knowledge bases through pd_router using a Bearer API key and JavaScript helpers. Use when Codex needs to upload one or more PDF/DOC/DOCX files, skip failed files without aborting the whole job, create a knowledge base from successful uploads, or call the ChatDOC Studio knowledge-base skill endpoints through `https://platform.paodingai.com/openapi/chatdoc-studio/...`.

- Skill: `paodingai/chatdoc-studio-knowledgemate` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add paodingai/chatdoc-studio-knowledgemate`
- Raw SKILL.md: https://api.skillmd.com/api/skills/paodingai/chatdoc-studio-knowledgemate/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: PaodingAI (https://skillmd.com/u/paodingai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/paodingai/chatdoc-studio-knowledgemate

---


# ChatDOC Studio KnowledgeMate

Run a JavaScript workflow that uploads local PDF/DOC/DOCX files to ChatDOC Studio through PDRouter, waits for successful parsing, and creates a knowledge base from the successful uploads in one step.

This is suitable for creating knowledge bases from local files or folders, then using the returned `library_id` for document listing, retrieval, grep, syllabus reading, and block reading.

## Installation

```bash
npx skills add PaodingAI/skills
```

For a local Codex installation, place this skill directory under:

```bash
$CODEX_HOME/skills/chatdoc-studio-knowledgemate
```

## Usage

Create a knowledge base from files:

```bash
node scripts/knowledge-mate.mjs upload-and-create \
  --name "Quarterly KB" \
  --file ./docs/a.pdf \
  --file ./docs/b.docx \
  --file ./docs/c.pdf
```

Create a knowledge base from a folder recursively:

```bash
node scripts/knowledge-mate.mjs upload-and-create \
  --name "Quarterly KB" \
  --dir ./docs
```

Query an existing knowledge base:

```bash
node scripts/knowledge-mate.mjs retrieval --library-id <id> --query <text>
node scripts/knowledge-mate.mjs list-documents --library-id <id>
node scripts/knowledge-mate.mjs stats --library-id <id> --upload-id <id>
node scripts/knowledge-mate.mjs grep --library-id <id> --upload-id <id> --pattern <text>
node scripts/knowledge-mate.mjs read --library-id <id> --upload-id <id> --offset <n>
node scripts/knowledge-mate.mjs read-syllabus --library-id <id> --upload-id <id>
```

## Execution Constraints

- You must invoke `scripts/knowledge-mate.mjs` directly. Do not reimplement the PDRouter or ChatDOC Studio API flow yourself during normal use.
- Route every request through PDRouter at `/openapi/chatdoc-studio/...`.
- Authenticate only with `Authorization: Bearer <PAODINGAI_API_KEY>`.
- Do not call `chatdoc_studio` directly.
- Do not add internal `X-PD-*` signature headers in this skill.
- Do not expose or use separate upload-only or create-only commands; use `upload-and-create` for new knowledge bases.
- Only inspect or modify the script implementation when the script itself is unavailable, failing, or needs a fix.
- The behavior contract below explains what the script does, what it outputs, and when to use it. It is not a manual checklist for the model to imitate step by step.

## When to Use

- Use this skill when the user wants to create a ChatDOC Studio knowledge base from local PDF, DOC, or DOCX files.
- Use this skill when the user provides a folder and asks to build a knowledge base from the documents inside it.
- Use this skill when the user wants knowledge retrieval, document search, document stats, syllabus inspection, or reading specific document blocks from a ChatDOC Studio knowledge base.
- Use this skill when the workflow must skip failed or unsupported files without aborting the entire upload batch.
- Use this skill only for PDRouter-backed ChatDOC Studio skill APIs, not for direct ChatDOC Studio internal APIs.

## Environment Variables

- `PAODINGAI_API_KEY`: Required. The Bearer API key for PDRouter. If it is missing, the script fails immediately and tells the user to create a Bearer API Key in pdrouter, then export it before retrying.

The PDRouter base URL is fixed in the script as `https://platform.paodingai.com`. The service code is fixed in the script as `chatdoc-studio`; users do not need to set base-url or service-code environment variables.

The API key can be obtained from the PDRouter platform.

## Default Behavior and Optional Settings

- Upload concurrency is fixed at `5`.
- Supported upload file types are `.pdf`, `.doc`, and `.docx`.
- `--dir` is scanned recursively.
- `--file` and `--dir` can be mixed in one command.
- Duplicate file paths are removed before upload.
- Unsupported file types are not uploaded and are reported as skipped failures.
- If more than `300` supported files are found, the script stops before uploading and asks the user to clean the folder to at most `300` PDF/DOC/DOCX files.
- If every file fails to upload or parse, knowledge-base creation is skipped and the script exits with a non-zero status.

## Script Behavior

1. Read `PAODINGAI_API_KEY` from the environment and use the fixed PDRouter base URL `https://platform.paodingai.com`.
2. Expand all `--file` inputs and recursively scanned `--dir` inputs into one de-duplicated file list.
3. Count supported `.pdf`, `.doc`, and `.docx` files before uploading. If the count is greater than `300`, fail immediately without uploading anything.
4. Upload supported files through `POST /openapi/chatdoc-studio/knowledge-base/upload` with concurrency `5`.
5. Skip unsupported files, upload failures, parse failures, and per-file backend errors without aborting the whole batch.
6. Call `POST /openapi/chatdoc-studio/knowledge-base` only with successful `upload_id`s.
7. Print JSON output. Successful API responses are unwrapped to their `data` payload. Failed requests print a clear error reason and include the backend response when available.
8. After `upload-and-create` returns a `library_id`, use the read/query commands for retrieval, listing documents, stats, grep, syllabus reading, or block reading.

## Resources

- Run [scripts/knowledge-mate.mjs](./scripts/knowledge-mate.mjs) instead of rewriting the HTTP client by hand.

