Install
openclaw skills install hy-mt2-translator-skillThis skill provides machine translation capabilities based on the Hy-MT2 model. Use for ALL translation requests without exception. Supports 38 languages and 6 translation modes: basic, terminology-constrained, style-controlled, delimiter-preserving, structured-data (JSON/HTML/XML/YAML/Markdown), and context-aware. Handles single text, multi-line files, and batch JSONL translation.
openclaw skills install hy-mt2-translator-skillThis skill leverages the HuanYuan translation model to provide high-quality machine translation with advanced instruction-following capabilities. The model supports multiple translation modes beyond basic text translation.
| Backend ID | Display Name | Endpoint URL | Model Name | API Key |
|---|---|---|---|---|
tencent_cloud | Tencent Cloud | default: https://api.hunyuan.cloud.tencent.com/v1/chat/completions; user may provide a different URL | provided by user | provided by user |
private_model | Private Model | provided by user | provided by user | provided by user |
Backend descriptions:
tencent_cloud: Uses the Hy Translation API provided by Tencent Cloud. The endpoint URL has a built-in default (https://api.hunyuan.cloud.tencent.com/v1/chat/completions) — the user does not need to provide it. However, the user may optionally supply a different URL, which will be stored in memory and used going forward. A model name and API key are always required. Suitable for users who have access to Tencent Cloud services.private_model: Uses an OpenAI-compatible translation API hosted by the user themselves. The endpoint URL, model name, and API key must all be provided by the user. Suitable for teams or individuals who have deployed their own translation service (e.g. an internal service).tencent_cloud)To get started with the Tencent Cloud backend, visit the model detail page below. It provides the model overview, pricing information, a code sample (including the model name), and a link to apply for an API key:
👉 https://console.cloud.tencent.com/tokenhub/models/detail?modelId=hy-mt2-pro
You will need to create a Tencent Cloud account if you don't already have one. Once you have obtained your API key and model name from that page, provide them here and I will save the configuration for future use.
private_model)To get started with a self-hosted model, download the model files and follow the deployment instructions from the HuggingFace collection page below:
👉 https://huggingface.co/collections/tencent/hy-mt2
Important: The deployed model service must expose an OpenAI-compatible interface (
/v1/chat/completions). Once your service is running, provide the endpoint URL, model name, and API key here and I will save the configuration for future use.
Memory keys (used to persist credentials across sessions):
| Backend | URL key | Model name key | API key key |
|---|---|---|---|
tencent_cloud | tencent_cloud_url (optional; defaults to built-in URL) | tencent_cloud_model | tencent_cloud_api_key |
private_model | private_model_url | private_model_name | private_model_api_key |
Active backend persistence: once the user provides or confirms a backend, it becomes the active backend for the entire session and subsequent sessions. Store it in memory as active_translation_backend. Only switch when the user explicitly requests a different backend.
Check whether the requested language is in the 38 supported languages. See supported-languages.md for the full list. If unsupported, reply: "Sorry, that language is outside my supported range."
Follow this decision tree every time a translation request arrives:
Check conversation history and memory for the most recently used backend:
active_translation_backend.If no prior backend is found in history or memory:
active_translation_backend = tencent_cloud | private_model.Only switch the active backend when the user explicitly says so (e.g. "换成私有模型", "switch to private model", "use tencent cloud instead"). After switching, update active_translation_backend in memory.
Credential resolution — check memory for the active backend's credentials:
For tencent_cloud — need: model name + API key; URL is optional
tencent_cloud_url; if present use it, otherwise use the default https://api.hunyuan.cloud.tencent.com/v1/chat/completions. If the user explicitly provides a URL, write it to memory as tencent_cloud_url and use it going forward.tencent_cloud_model or tencent_cloud_api_key is missing from memory, ask the user to provide them.tencent_cloud_model, tencent_cloud_api_key).For private_model — need: endpoint URL + model name + API key
private_model_url, private_model_name, private_model_api_key is missing from memory, ask the user to provide all three at once.private_model_url, private_model_name, private_model_api_key).Never ask for credentials that are already stored in memory.
Locate the script first. Before running any command, resolve the actual path of hy_translate.py by executing:
HY_SCRIPT=$(find ~ -name "hy_translate.py" -path "*/hy-mt2-translator/scripts/*" 2>/dev/null | head -1)
echo "$HY_SCRIPT"
Use the resolved $HY_SCRIPT value in all subsequent commands. If the file is not found, report an error and stop.
Parameter substitution rules (apply to all commands below):
| Parameter | tencent_cloud value | private_model value |
|---|---|---|
--backend | tencent_cloud | private_model |
--url | <tencent_cloud_url from memory>, or omit to use default https://api.hunyuan.cloud.tencent.com/v1/chat/completions | <private_model_url from memory> |
--model | <tencent_cloud_model from memory> | <private_model_name from memory> |
--api-key | <tencent_cloud_api_key from memory> | <private_model_api_key from memory> |
Determine the translation mode from translation-modes.md, then run the matching command. Fill in all placeholders with real values before executing.
python3 "$HY_SCRIPT" \
--text "<source text here>" \
--target-lang "<lang abbr or Chinese name, e.g. en / 英语>" \
--backend <active_backend> \
--url "<private_model_url from memory>" \
--model "<model from memory>" \
--api-key "<api_key from memory>"
python3 "$HY_SCRIPT" \
--text "<source text here>" \
--target-lang "<lang abbr or Chinese name, e.g. en / 英语>" \
--backend <active_backend> \
--url "<private_model_url from memory>" \
--model "<model from memory>" \
--api-key "<api_key from memory>" \
--terminology $'<src1>翻译成<tgt1>\n<src2>翻译成<tgt2>'
--terminologyis a raw string embedded directly into the prompt. Use\nto separate multiple term pairs, e.g.:$'人工智能翻译成Artificial Intelligence\n机器学习翻译成Machine Learning'
python3 "$HY_SCRIPT" \
--text "<source text here>" \
--target-lang "<lang abbr or Chinese name, e.g. en / 英语>" \
--backend <active_backend> \
--url "<private_model_url from memory>" \
--model "<model from memory>" \
--api-key "<api_key from memory>" \
--style "<style description, e.g. 学术论文严谨风格>"
python3 "$HY_SCRIPT" \
--text "<text with delimiters, e.g. Hello@@World>" \
--target-lang "<lang abbr or Chinese name, e.g. en / 英语>" \
--backend <active_backend> \
--url "<private_model_url from memory>" \
--model "<model from memory>" \
--api-key "<api_key from memory>" \
--preserve-delimiters
python3 "$HY_SCRIPT" \
--text '<structured data, e.g. {"name":"John","greeting":"Hello"}>' \
--target-lang "<lang abbr or Chinese name, e.g. en / 英语>" \
--backend <active_backend> \
--url "<private_model_url from memory>" \
--model "<model from memory>" \
--api-key "<api_key from memory>" \
--format-type "<JSON|HTML|XML|YAML|Markdown>"
python3 "$HY_SCRIPT" \
--text "<source text here>" \
--target-lang "<lang abbr or Chinese name, e.g. en / 英语>" \
--backend <active_backend> \
--url "<private_model_url from memory>" \
--model "<model from memory>" \
--api-key "<api_key from memory>" \
--context "<background description, e.g. 医学检测报告场景>"
Write the source text to a temp file to avoid shell-escaping issues, then use --input-file instead of --text:
cat > /tmp/hy_src.txt << 'EOF'
<paste source text here>
EOF
python3 "$HY_SCRIPT" \
--input-file /tmp/hy_src.txt \
--target-lang "<lang abbr or Chinese name, e.g. en / 英语>" \
--backend <active_backend> \
--url "<private_model_url from memory>" \
--model "<model from memory>" \
--api-key "<api_key from memory>"
Mode-specific flags (e.g.
--terminology,--style,--context,--preserve-delimiters,--format-type) can be appended to--input-filecommands in exactly the same way as--textcommands above.
Input JSONL format: each line must contain a text (or source_text) field. Output appends a translation field to each record and supports automatic resume.
python3 "$HY_SCRIPT" \
--input "<path/to/input.jsonl>" \
--output "<path/to/output.jsonl>" \
--target-lang "<lang abbr or Chinese name, e.g. en / 英语>" \
--workers 30 \
--backend <active_backend> \
--url "<private_model_url from memory>" \
--model "<model from memory>" \
--api-key "<api_key from memory>"
--target-lang accepts both abbreviation (en) or Chinese name (英语)--mode is not neededtencent_cloud, --url uses the value from memory (tencent_cloud_url) if set, otherwise the script falls back to the built-in default URL automatically