@xberg-io/opencode-xberg 1.3.7 → 1.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.opencode/ai-rulez-bundle.json +52 -0
- package/.opencode/ai-rulez-content.js +167 -0
- package/.opencode/commands/xberg-extract.md +14 -0
- package/.opencode/commands/xberg-ocr.md +14 -0
- package/.opencode/plugins/xberg.js +75 -62
- package/.opencode/skills/xberg/SKILL.md +422 -0
- package/.opencode/skills/xberg/index.md +10 -0
- package/.opencode/skills/xberg/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg/references/configuration.md +587 -0
- package/.opencode/skills/xberg/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg/references/python-api.md +657 -0
- package/.opencode/skills/xberg/references/rust-api.md +412 -0
- package/.opencode/skills/xberg/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-batch-extraction/SKILL.md +170 -0
- package/.opencode/skills/xberg-batch-extraction/index.md +10 -0
- package/.opencode/skills/xberg-batch-extraction/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-batch-extraction/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-batch-extraction/references/configuration.md +587 -0
- package/.opencode/skills/xberg-batch-extraction/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-batch-extraction/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-batch-extraction/references/python-api.md +657 -0
- package/.opencode/skills/xberg-batch-extraction/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-batch-extraction/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-chunking/SKILL.md +163 -0
- package/.opencode/skills/xberg-chunking/index.md +10 -0
- package/.opencode/skills/xberg-chunking/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-chunking/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-chunking/references/configuration.md +587 -0
- package/.opencode/skills/xberg-chunking/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-chunking/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-chunking/references/python-api.md +657 -0
- package/.opencode/skills/xberg-chunking/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-chunking/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-extracting-keywords/SKILL.md +170 -0
- package/.opencode/skills/xberg-extracting-keywords/index.md +10 -0
- package/.opencode/skills/xberg-extracting-keywords/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-keywords/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-extracting-keywords/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-keywords/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-keywords/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-keywords/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-keywords/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-keywords/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-extracting-tables/SKILL.md +155 -0
- package/.opencode/skills/xberg-extracting-tables/index.md +10 -0
- package/.opencode/skills/xberg-extracting-tables/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-tables/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-extracting-tables/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-tables/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-tables/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-tables/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-tables/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-tables/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-extracting-with-ocr/SKILL.md +129 -0
- package/.opencode/skills/xberg-extracting-with-ocr/index.md +10 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-picking-a-format/SKILL.md +104 -0
- package/.opencode/skills/xberg-picking-a-format/index.md +10 -0
- package/.opencode/skills/xberg-picking-a-format/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-picking-a-format/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-picking-a-format/references/configuration.md +587 -0
- package/.opencode/skills/xberg-picking-a-format/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-picking-a-format/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-picking-a-format/references/python-api.md +657 -0
- package/.opencode/skills/xberg-picking-a-format/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-picking-a-format/references/supported-formats.md +252 -0
- package/.pi/prompts/xberg-extract.md +14 -0
- package/.pi/prompts/xberg-ocr.md +14 -0
- package/.pi/skills/xberg/SKILL.md +422 -0
- package/.pi/skills/xberg/index.md +10 -0
- package/.pi/skills/xberg/references/advanced-features.md +628 -0
- package/.pi/skills/xberg/references/cli-reference.md +462 -0
- package/.pi/skills/xberg/references/configuration.md +587 -0
- package/.pi/skills/xberg/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg/references/other-bindings.md +345 -0
- package/.pi/skills/xberg/references/python-api.md +657 -0
- package/.pi/skills/xberg/references/rust-api.md +412 -0
- package/.pi/skills/xberg/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-batch-extraction/SKILL.md +170 -0
- package/.pi/skills/xberg-batch-extraction/index.md +10 -0
- package/.pi/skills/xberg-batch-extraction/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-batch-extraction/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-batch-extraction/references/configuration.md +587 -0
- package/.pi/skills/xberg-batch-extraction/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-batch-extraction/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-batch-extraction/references/python-api.md +657 -0
- package/.pi/skills/xberg-batch-extraction/references/rust-api.md +412 -0
- package/.pi/skills/xberg-batch-extraction/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-chunking/SKILL.md +163 -0
- package/.pi/skills/xberg-chunking/index.md +10 -0
- package/.pi/skills/xberg-chunking/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-chunking/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-chunking/references/configuration.md +587 -0
- package/.pi/skills/xberg-chunking/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-chunking/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-chunking/references/python-api.md +657 -0
- package/.pi/skills/xberg-chunking/references/rust-api.md +412 -0
- package/.pi/skills/xberg-chunking/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-extracting-keywords/SKILL.md +170 -0
- package/.pi/skills/xberg-extracting-keywords/index.md +10 -0
- package/.pi/skills/xberg-extracting-keywords/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-keywords/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-extracting-keywords/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-keywords/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-keywords/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-keywords/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-keywords/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-keywords/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-extracting-tables/SKILL.md +155 -0
- package/.pi/skills/xberg-extracting-tables/index.md +10 -0
- package/.pi/skills/xberg-extracting-tables/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-tables/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-extracting-tables/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-tables/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-tables/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-tables/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-tables/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-tables/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-extracting-with-ocr/SKILL.md +129 -0
- package/.pi/skills/xberg-extracting-with-ocr/index.md +10 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-picking-a-format/SKILL.md +104 -0
- package/.pi/skills/xberg-picking-a-format/index.md +10 -0
- package/.pi/skills/xberg-picking-a-format/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-picking-a-format/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-picking-a-format/references/configuration.md +587 -0
- package/.pi/skills/xberg-picking-a-format/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-picking-a-format/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-picking-a-format/references/python-api.md +657 -0
- package/.pi/skills/xberg-picking-a-format/references/rust-api.md +412 -0
- package/.pi/skills/xberg-picking-a-format/references/supported-formats.md +252 -0
- package/README.md +112 -6
- package/package.json +184 -16
- package/scripts/mcp-launch.sh +189 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Use when extracting keywords (YAKE/RAKE) from documents — and, secondarily, when detecting document language or generating embeddings for RAG and search. Covers the keyword config (and its feature gating), `--detect-language`, and the standalone `embed` command with real flags.
|
|
3
|
+
name: xberg-extracting-keywords
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!--
|
|
7
|
+
AI-RULEZ :: GENERATED FILE — DO NOT EDIT
|
|
8
|
+
Content-Hash: blake3:491d3cbcd4f6128d43e32b39c13d03a023b397f97c71da48ed5a02d6be00ae28
|
|
9
|
+
Source-Hash: blake3:662aa704cf97ad20f02258c9dcd1c73822213a426e27ec7ebc292d3f599fb7c2
|
|
10
|
+
Schema-Version: v1
|
|
11
|
+
-->
|
|
12
|
+
|
|
13
|
+
# Extracting keywords, language, and embeddings
|
|
14
|
+
|
|
15
|
+
Use this for the enrichment surface around extraction: statistical keyword
|
|
16
|
+
extraction, language detection, and vector embeddings. Keywords and
|
|
17
|
+
language detection ride along with extraction and land on the result;
|
|
18
|
+
embeddings are produced by a dedicated `embed` command.
|
|
19
|
+
|
|
20
|
+
## Keywords (YAKE / RAKE)
|
|
21
|
+
|
|
22
|
+
Keyword extraction is configured via the `[keywords]` config block (or
|
|
23
|
+
inline JSON) — there is no single `--keywords` CLI flag. When enabled,
|
|
24
|
+
extracted keywords appear on `result.extracted_keywords` (`extractedKeywords`
|
|
25
|
+
in Node.js; the CLI JSON field is `extracted_keywords`). Two algorithms are
|
|
26
|
+
available:
|
|
27
|
+
|
|
28
|
+
- **YAKE** (`"yake"`) — statistical, unsupervised single-document
|
|
29
|
+
extraction. Good general default.
|
|
30
|
+
- **RAKE** (`"rake"`) — co-occurrence / phrase-based. Favors multi-word
|
|
31
|
+
key phrases.
|
|
32
|
+
|
|
33
|
+
> Feature-gated: keyword extraction requires the CLI to be built with the
|
|
34
|
+
> `keywords-yake` and/or `keywords-rake` Cargo features (both are in the
|
|
35
|
+
> default/`full` build). If the CLI was built without them, the `[keywords]`
|
|
36
|
+
> config block is silently ignored — `result.extracted_keywords` simply stays empty
|
|
37
|
+
> rather than erroring. The `"yake"` algorithm needs `keywords-yake`; `"rake"`
|
|
38
|
+
> needs `keywords-rake`.
|
|
39
|
+
|
|
40
|
+
Enable via inline JSON on the CLI:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
xberg extract paper.pdf --format json \
|
|
44
|
+
--config-json '{"keywords":{"algorithm":"yake","max_keywords":15,"language":"en"}}' \
|
|
45
|
+
| jq '.result.extracted_keywords'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Or in a config file:
|
|
49
|
+
|
|
50
|
+
```toml
|
|
51
|
+
[keywords]
|
|
52
|
+
algorithm = "rake" # "yake" or "rake"
|
|
53
|
+
max_keywords = 10 # default 10
|
|
54
|
+
min_score = 0.0 # filter below this score (normalized 0.0-1.0 for both algorithms)
|
|
55
|
+
ngram_range = [1, 3] # unigrams..trigrams (default); config-file only
|
|
56
|
+
language = "en" # stopword language; omit to skip stopword filtering
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
xberg extract report.pdf --config xberg.toml --format json | jq '.result.extracted_keywords'
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Field notes:
|
|
64
|
+
|
|
65
|
+
- `max_keywords` caps how many keywords are returned (default 10).
|
|
66
|
+
- `min_score` filters low-scoring keywords. Both YAKE and RAKE normalize
|
|
67
|
+
their scores to the `0.0`-`1.0` range with *higher-is-better*, so
|
|
68
|
+
`min_score` retains keywords with `score >= min_score` identically for
|
|
69
|
+
either algorithm.
|
|
70
|
+
- `ngram_range` is `[min, max]`: `[1,1]` unigrams only, `[1,2]` adds
|
|
71
|
+
bigrams, `[1,3]` (default) adds trigrams. Config-file only — it is not a
|
|
72
|
+
field on the language bindings' `KeywordConfig`.
|
|
73
|
+
- `language` enables stopword filtering for that language; omit it to
|
|
74
|
+
disable stopword filtering entirely.
|
|
75
|
+
|
|
76
|
+
## Language detection
|
|
77
|
+
|
|
78
|
+
Language detection is a real CLI flag: `--detect-language`. Detected
|
|
79
|
+
languages appear on `result.detected_languages`:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
xberg extract multilingual.pdf --detect-language true --format json \
|
|
83
|
+
| jq '.result.detected_languages'
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
In a config file it lives under `[language_detection]`:
|
|
87
|
+
|
|
88
|
+
```toml
|
|
89
|
+
[language_detection]
|
|
90
|
+
enabled = true
|
|
91
|
+
min_confidence = 0.8
|
|
92
|
+
detect_multiple = false
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The CLI flag enables detection with `min_confidence = 0.8` and
|
|
96
|
+
single-language mode; use the config block to detect multiple languages or
|
|
97
|
+
tune confidence.
|
|
98
|
+
|
|
99
|
+
## Embeddings (`embed` command)
|
|
100
|
+
|
|
101
|
+
The standalone `embed` command produces vector embeddings for text from
|
|
102
|
+
`--text` (repeatable) or stdin. It does not run extraction — pipe
|
|
103
|
+
extracted content in if you want document embeddings.
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Local ONNX preset model (default provider)
|
|
107
|
+
xberg embed --text "first passage" --text "second passage" --preset balanced
|
|
108
|
+
|
|
109
|
+
# Embed extracted document text
|
|
110
|
+
xberg extract report.pdf | xberg embed --preset quality
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Presets for the local provider: `fast`, `balanced` (default), `quality`,
|
|
114
|
+
`multilingual`. Output defaults to JSON (`--format json`).
|
|
115
|
+
|
|
116
|
+
`--provider` selects the embedding source:
|
|
117
|
+
|
|
118
|
+
| Provider | Flag | Notes |
|
|
119
|
+
| -------- | ------------------------------------- | --------------------------------------------- |
|
|
120
|
+
| `local` | `--preset <fast\|balanced\|quality\|multilingual>` | **Default.** ONNX model, no API key. |
|
|
121
|
+
| `llm` | `--model <id>` `--api-key <key>` | liter-llm routing, e.g. `openai/text-embedding-3-small`. |
|
|
122
|
+
| `plugin` | `--plugin <name>` | A backend pre-registered in-process via the plugin API. |
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Provider-hosted embeddings via an LLM
|
|
126
|
+
xberg embed --text "query text" \
|
|
127
|
+
--provider llm --model openai/text-embedding-3-small --api-key "$OPENAI_API_KEY"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Local embedding presets must be downloaded first if not cached. Pre-warm
|
|
131
|
+
them with the cache command:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
xberg cache warm --embedding-model balanced # one preset
|
|
135
|
+
xberg cache warm --all-embeddings # all available presets (currently 8)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Programmatic access
|
|
139
|
+
|
|
140
|
+
Keywords and detected languages live on the document in the result envelope:
|
|
141
|
+
|
|
142
|
+
```python
|
|
143
|
+
from xberg import ExtractInput, extract, ExtractionConfig, KeywordConfig, KeywordAlgorithm
|
|
144
|
+
|
|
145
|
+
config = ExtractionConfig(
|
|
146
|
+
keywords=KeywordConfig(algorithm=KeywordAlgorithm.YAKE, max_keywords=15, language="en"),
|
|
147
|
+
)
|
|
148
|
+
result = await extract(ExtractInput(uri="paper.pdf"), config)
|
|
149
|
+
doc = result.results[0]
|
|
150
|
+
print(doc.extracted_keywords) # extracted keywords (when enabled)
|
|
151
|
+
print(doc.detected_languages) # detected languages (when enabled)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
See `references/python-api.md` and `references/configuration.md` for the keyword / language-detection config
|
|
155
|
+
classes and the embedding presets.
|
|
156
|
+
|
|
157
|
+
## Common pitfalls
|
|
158
|
+
|
|
159
|
+
- **No `--keywords` flag** — keyword extraction is config-only. Use
|
|
160
|
+
`--config-json '{"keywords":{...}}'` or a `[keywords]` config block.
|
|
161
|
+
- **`min_score` direction** — scores are normalized to `0.0`-`1.0` with
|
|
162
|
+
higher-is-better for both YAKE and RAKE, so the same threshold behaves
|
|
163
|
+
identically for either algorithm.
|
|
164
|
+
- **Embeddings ≠ extraction** — `embed` only takes raw text. Pipe
|
|
165
|
+
`xberg extract` output into it for document vectors.
|
|
166
|
+
- **Cold embedding models** — first local run downloads the preset; run
|
|
167
|
+
`xberg cache warm --all-embeddings` to pre-populate.
|
|
168
|
+
|
|
169
|
+
See `references/advanced-features.md` for the embeddings pipeline and
|
|
170
|
+
`references/cli-reference.md` for the `embed` and `cache warm` flag sets.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
AI-RULEZ :: GENERATED FILE — DO NOT EDIT
|
|
3
|
+
Content-Hash: blake3:95ea1ed670e9f4a1d722e167cb5405aa3b445cb8dc79db95981131bd99e390a5
|
|
4
|
+
Source-Hash: blake3:662aa704cf97ad20f02258c9dcd1c73822213a426e27ec7ebc292d3f599fb7c2
|
|
5
|
+
Schema-Version: v1
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
# Concepts
|
|
9
|
+
|
|
10
|
+
* [Extracting Keywords](SKILL.md) - Use when extracting keywords (YAKE/RAKE) from documents — and, secondarily, when detecting document language or generating embeddings for RAG and search. Covers the keyword config (and its feature gating), `--detect-language`, and the standalone `embed` command with real flags.
|