SoMarkAI/dsh-tool-somark
A DeepSeek Harness plugin that gives the model a somarkparse tool: parse PDFs, images, Word, and PowerPoint files into structure-preserving Markdown and JSON through the SoMark document-parsing API, with page and token counts.
catalog 简介 / catalog descriptioncatalog description:SoMark document parser tool (somark_parse) plugin for DeepSeek Harness
项目介绍Project Overview
dsh-tool-somark 是 DeepSeek Harness 插件,注册 somark_parse 工具,调用 SoMark API 将 PDF、图片、Word、PowerPoint 解析为保留结构的 Markdown/JSON,并返回页数与 token 数。适合需要让模型读取本地挂载文档时使用。注意:SoMark 为外部付费服务,会接收上传内容;解析结果仅作数据,绝不可执行。
dsh-tool-somark is a DeepSeek Harness plugin that registers a somark_parse tool. It uses the SoMark API to convert PDFs, images, Word, and PowerPoint files into structure-preserving Markdown and JSON, with page and token counts. Use it when a model needs to read mounted documents. Note: SoMark is an external paid service that receives uploaded files; parsed output is data and must never be executed.
请帮我了解并安装插件:【dsh-tool-somark】【https://github.com/SoMarkAI/dsh-tool-somark】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add dsh-tool-somark
把 SoMarkAI/dsh-tool-somark 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-tool-somark
A DeepSeek Harness plugin that gives the model a somark_parse tool: parse PDFs, images, Word, and PowerPoint files into structure-preserving Markdown and JSON through the SoMark document-parsing API, with page and token counts.
The document read goes through ctx.fs, so any mounted filesystem policy applies to the read. Parsed content is returned as data and must never be executed.
Install
# from npm (once published)
dsh plugin --profile <name> add dsh-tool-somark
# from a tarball
dsh plugin --profile <name> add ./dsh-tool-somark-0.1.0.tgz
# from git (requires the package's `prepare` build; see the harness docs)
dsh plugin --profile <name> add github:you/dsh-tool-somark
Then boot the profile; the somark_parse tool registers automatically. The plugin is also usable as a plain library dependency for programmatic parsing (src/client.ts exports the API client).
Requirements
- A DeepSeek Harness profile with the base bundle (
@deepseek-ai/dsh-base), which providesctx.toolsandctx.fs. - A SoMark API key. Set
SOMARK_API_KEYin the environment or configureapiKeybelow. SoMark is an external paid service and receives the uploaded document contents.
Config
All fields optional; defaults apply when omitted.
| Field | Default | Meaning |
|---|---|---|
apiKey |
unset | SoMark API key $SOMARK_API_KEY Empty → the tool errors at execution. |
baseURL |
https://somark.tech/api/v1 |
API base; /parse/async and /parse/async_check append. |
outputFormats |
['markdown', 'json'] |
Formats requested when a call omits outputFormats. |
elementFormats |
{ image: 'url', formula: 'latex', table: 'html', cs: 'image' } |
Partial per-element rendering-format overrides. |
featureConfig |
cross-page off, inline image / table image / image understanding on, header-footer off | Partial feature-switch overrides. |
pollIntervalMs |
2000 |
Delay between status polls. |
maxPollAttempts |
1000 |
Maximum polls (≈ 33 minutes at the default interval). |
maxFileBytes |
209715200 |
Upload cap; SoMark documents a 200 MB limit. |
markdownCapChars |
200000 |
Inclusive cap on the markdown characters returned in one result. |
jsonCapChars |
200000 |
Inclusive cap on the stringified JSON characters returned in one result. |
Example profile patch (cordis.patch.yml in the profile, or a --patch overlay):
- id: tool-somark
config:
apiKey: 'sk-…'
Invalid element/feature/output-format values fail the plugin load with a CONFIG_INVALID error rather than being silently accepted.
The tool
somark_parse takes a required path (absolute path to the document) and an optional outputFormats array. It returns the parsed Markdown (capped by markdownCapChars, flagged truncated), the page/token counts, and the structured JSON when requested and within jsonCapChars (otherwise flagged jsonOmitted).
Failures carry machine-routable codes on the tool result: NO_API_KEY, DOCUMENT_NOT_FOUND, DOCUMENT_NOT_A_FILE, UNSUPPORTED_EXTENSION, FILE_TOO_LARGE, CONFIG_INVALID, SUBMIT_FAILED, TASK_FAILED, POLL_TIMEOUT, ABORTED, REQUEST_FAILED, INVALID_RESPONSE.
Development
pnpm install
pnpm test # vitest (79 tests, 100% src coverage)
pnpm build # tsc → lib/
pnpm pack # tarball for dsh plugin add
Known Limitations and Deferred Work
- No batch/directory parsing — one
pathper call; callers loop the tool. - Element and feature formats are deployment config, not per-call arguments.
- No artifact persistence — the result returns content; consumers can persist via
tool/result. - Oversized JSON is omitted (
jsonOmitted), not spilled.
License
MIT
nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/distilly
titanwings/colleague-skill