Tencent Hy-MT2-Translator

Other

This 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.

Install

openclaw skills install hy-mt2-translator-skill

HY Translation Skill

This 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.

When to Use

  • Translating text between any language pair
  • Translating with specific terminology requirements (glossary)
  • Translating with style constraints (formal, colloquial, academic, etc.)
  • Translating structured data (JSON, HTML, Markdown) while preserving format
  • Translating text with delimiters that must be preserved
  • Translating with contextual background information

API Backends

Backend IDDisplay NameEndpoint URLModel NameAPI Key
tencent_cloudTencent Clouddefault: https://api.hunyuan.cloud.tencent.com/v1/chat/completions; user may provide a different URLprovided by userprovided by user
private_modelPrivate Modelprovided by userprovided by userprovided 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).

Backend Setup Guide

🌐 Tencent Cloud Backend (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 Backend (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):

BackendURL keyModel name keyAPI key key
tencent_cloudtencent_cloud_url (optional; defaults to built-in URL)tencent_cloud_modeltencent_cloud_api_key
private_modelprivate_model_urlprivate_model_nameprivate_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.

Workflow

Step 1 — Validate target language

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."

Step 2 — Determine active backend and credentials

Follow this decision tree every time a translation request arrives:

  1. Check conversation history and memory for the most recently used backend:

    • Look at recent messages in the current conversation first.
    • If not found in conversation, check memory key active_translation_backend.
    • If found, use that backend — do not ask the user again.
  2. If no prior backend is found in history or memory:

    • Ask the user which backend to use: Tencent Cloud or Private Model.
    • Write the chosen backend to memory: active_translation_backend = tencent_cloud | private_model.
  3. 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.

  4. Credential resolution — check memory for the active backend's credentials:

    For tencent_cloud — need: model name + API key; URL is optional

    • For the URL: check memory for 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.
    • If tencent_cloud_model or tencent_cloud_api_key is missing from memory, ask the user to provide them.
    • Once provided, write to memory (tencent_cloud_model, tencent_cloud_api_key).

    For private_model — need: endpoint URL + model name + API key

    • If any of private_model_url, private_model_name, private_model_api_key is missing from memory, ask the user to provide all three at once.
    • Once provided, write to memory (private_model_url, private_model_name, private_model_api_key).

    Never ask for credentials that are already stored in memory.

Step 3 — Build and execute the translation command

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):

Parametertencent_cloud valueprivate_model value
--backendtencent_cloudprivate_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.

3a. Basic translation (default)

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>"

3b. Terminology-constrained translation

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>'

--terminology is a raw string embedded directly into the prompt. Use \n to separate multiple term pairs, e.g.: $'人工智能翻译成Artificial Intelligence\n机器学习翻译成Machine Learning'

3c. Style-controlled translation

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. 学术论文严谨风格>"

3d. Delimiter-preserving translation

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

3e. Structured-data translation (JSON / HTML / XML / YAML / Markdown)

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>"

3f. Context-aware translation

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. 医学检测报告场景>"

3g. Multi-line / special-character text

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-file commands in exactly the same way as --text commands above.

3h. Batch JSONL translation

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>"

Step 4 — Return the result

  • Single translation: display the translated text directly.
  • Batch job: report success/failure counts and output file path.
  • Never expose the raw API key in the reply.

Key Notes

  • --target-lang accepts both abbreviation (en) or Chinese name (英语)
  • Translation mode is auto-detected from flags; --mode is not needed
  • Batch output resumes automatically if the output file already exists
  • When active backend is tencent_cloud, --url uses the value from memory (tencent_cloud_url) if set, otherwise the script falls back to the built-in default URL automatically