DeepSeek Search
DeepSeek Search is a Claude Code plugin that wraps DeepSeek's Anthropic-compatible Web Search capability as a local Python CLI and exposes it through a Claude Code skill.
What it provides
- A
deepseek-searchCLI (Python +uv), published on PyPI. - DeepSeek API configuration under
~/.deepseek. - A Claude Code skill at
plugins/deepseek_search/skills/deepseek_search/SKILL.mdthat tells Claude Code when and how to call the CLI.
Project layout
.claude-plugin/marketplace.json
.github/workflows/ # CI + publish-to-PyPI on `v*` tags
plugins/deepseek_search/ # Claude Code plugin manifest + skill
.claude-plugin/plugin.json
skills/deepseek_search/SKILL.md
src/deepseek_search.py # CLI implementation
tests/test_deepseek_search.py
pyproject.toml
uv.lock
The Python package lives at the repository root; plugins/deepseek_search/ holds only the Claude Code plugin manifest and skill instructions.
Install
The recommended way to use the CLI is as a global uv tool:
uv tool install deepseek-search
Then deepseek-search is available on PATH everywhere.
From source (development)
git clone https://github.com/8DE4732A/deepseek-search.git
cd deepseek-search
uv sync --dev # install dependencies
uv run pytest # run tests (no API key required)
Configure DeepSeek
All configuration lives under ~/.deepseek and is managed through the config subcommand. There are no environment variables — settings come from the config files or one-off CLI flags.
deepseek-search config init # write a default config.json
deepseek-search config set api_key YOUR_DEEPSEEK_API_KEY # stored in ~/.deepseek/credentials.json (chmod 600)
deepseek-search config set model deepseek-v4-pro[1m] # set any field
deepseek-search config get model # read a single value
deepseek-search config list # show full effective config (api_key masked)
Configurable keys (type-coerced automatically):
| Key | Stored in | Type |
|---|---|---|
api_key |
credentials.json |
string (chmod 600) |
base_url, model, web_search_tool_type, output_format |
config.json |
string |
max_tokens, max_retries |
config.json |
int |
timeout_seconds |
config.json |
float |
max_uses, allowed_domains, blocked_domains |
config.json (search.*) |
int / comma-list |
Advanced search flags (--model, --max-tokens, --timeout, --max-uses, --allowed-domain, --blocked-domain, …) override config.json for a single run without writing it back.
CLI usage
deepseek-search --json --query "DeepSeek Claude Code web search documentation"
deepseek-search "DeepSeek API Claude Code integration" # bare positional query also works
deepseek-search search --markdown "DeepSeek API Claude Code integration"
deepseek-search --help
The JSON output includes:
answercitationswarningsusagemodelrequest_idstop_reason
Releasing / publishing
Releases are produced automatically by the Publish to PyPI GitHub Action whenever a v* git tag is pushed:
git tag v0.1.0
git push origin v0.1.0
Prerequisites (one-time, in the GitHub repo + PyPI):
- Register the project as a Trusted Publisher on PyPI:
- PyPI publishing environment:
pypi - GitHub repository:
8DE4732A/deepseek-search - Workflow filename:
publish.yml - Environment name:
pypi
- PyPI publishing environment:
- No PyPI API token is required — publishing uses OIDC.
The package version is derived from the git tag via setuptools-scm, so the workflow fails fast if the tag and the built version disagree.
License
MIT License. See LICENSE.
Release files for deepseek-search 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| deepseek_search-0.2.0.tar.gz | 39.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| deepseek_search-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.2 kB
Release files / deepseek_search-0.2.0.tar.gz
| Download URL | deepseek_search-0.2.0.tar.gz |
|---|---|
| Size | 39.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e11ff41e18632c10de6b951dd9be4aef54d8aeaec8aca71eb9d8a35e1c0b5f70
|
|
BLAKE2b-256 checksum How to use checksums |
0f2885e430f5a8be7ac62cd0dcb2bb7e8ecb5fd3c277b778e5ab78f87ed573b7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 20, 2026.
Transparency logRelease files / deepseek_search-0.2.0-py3-none-any.whl
| Download URL | deepseek_search-0.2.0-py3-none-any.whl |
|---|---|
| Size | 13.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c345adeee4d86ef575abab2c07eaf9b654b65af563bb1aac8de4e6b637381f79
|
|
BLAKE2b-256 checksum How to use checksums |
3d11d469be274268abe0d61b04732875e65ed7241fdf566f7cf4dfe371c860f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 20, 2026.
Transparency log