Skip to content

Add Gandr TTS plugin - #2873

Open
AALG123 wants to merge 2 commits into
langgenius:mainfrom
AALG123:add-gandr
Open

Add Gandr TTS plugin#2873
AALG123 wants to merge 2 commits into
langgenius:mainfrom
AALG123:add-gandr

Conversation

@AALG123

@AALG123 AALG123 commented Aug 12, 2026

Copy link
Copy Markdown

Plugin Submission

Plugin information

Submission type

  • New plugin
  • Version update

What changed

Gandr TTS model plugin: text-to-speech via Gandr's OpenAI-compatible speech endpoint (POST /v1/audio/speech), with 23 languages, six stock voices, and automatic mapping from the OpenAI voice names. Redirected here from langgenius/dify-official-plugins#3620 (community plugins belong in this repo).

Risk level

  • Low risk
  • Medium risk
  • High risk

The plugin only calls a fixed, documented third-party HTTPS API (https://tts.gandr.ai, or the operator-configured API Base URL). No user-controlled code, commands, SQL, file operations, browser automation, or arbitrary network requests.

Required checks

  • I have read and followed the Marketplace submission requirements.
  • I have read and comply with the Plugin Developer Agreement.
  • I tested this plugin on Dify Community Edition and Dify Cloud, or documented any limitation below. Limitation: validated against the live Gandr API contract and the provider test harness, not yet run inside a Dify CE deployment. The plugin code paths (credential check, speech request, audio response mapping) mirror the official fishaudio plugin's structure; happy to run a CE validation if the reviewers want one.
  • The package contains only files needed at runtime.
  • The package does not contain secrets, local credentials, .env files, .git directories, virtual environments, caches, logs, or IDE files.
  • The package does not contain executables or bundled binaries, or I explained why they are required below.
  • The plugin README includes setup steps, usage instructions, required APIs or credentials, connection requirements, and the source repository link.
  • The plugin includes PRIVACY.md or a hosted privacy policy, and manifest.yaml references it.
  • All user-facing text is primarily in English, with any localized README files following the i18n guidance.

Security and privacy notes

None. The plugin forwards the synthesis request (text, voice, output format, speed) and the user's own Gandr API key to the configured endpoint over HTTPS. The key is stored by Dify's credential store and is never logged.

Local validation

Package built from the source repo with zip (runtime files only):

  • unzip -l gandr.difypkg: 16 files (manifest.yaml, PRIVACY.md, README.md, main.py, provider/, models/, _assets/icon.svg, pyproject.toml, requirements.txt, uv.lock, .env.example)
  • no .git, pycache, .DS_Store, or credential files present
  • plugin previously reviewed in dify-official-plugins#3620 (redirected here by repo scope, not on substance)

@github-actions github-actions Bot added risk: missing Missing or invalid Marketplace risk selection risk: low Low-risk Marketplace submission and removed risk: missing Missing or invalid Marketplace risk selection labels Aug 12, 2026

@crazywoola crazywoola left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ Request Changes

Decision: Request changes

Failed Checks

Check Status Detail Required action
dify_plugin version ❌ Fail dify_plugin must be installed and >= 0.9.0, but it was not found. Use dify_plugin >= 0.9.0 in the packaged plugin environment.

Full Check Results

Check Status Detail Required action
PR content language ✅ Pass PR title/body CJK ratio=0.0% (zh=0, en=2162, ignored_zh=0, allowed_zh<=0) None.
Project structure ✅ Pass All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. None.
Manifest author ✅ Pass author is valid. None.
Icon validation ✅ Pass icon exists: _assets/icon.svg None.
Version check ✅ Pass version 0.0.1 is available. None.
README language ✅ Pass README.md CJK ratio=0.0% (zh=0, en=1404, allowed_zh<=0) None.
PRIVACY.md ✅ Pass PRIVACY.md exists and is non-empty. None.
Dependency install ✅ Pass requirements.txt not found; skipped. None.
dify_plugin version ❌ Fail dify_plugin must be installed and >= 0.9.0, but it was not found. Use dify_plugin >= 0.9.0 in the packaged plugin environment.
Install test ✅ Pass requirements.txt not found; skipped. None.
Packaging test ✅ Pass packaging check passed. None.

Next steps

  • dify_plugin version: Use dify_plugin >= 0.9.0 in the packaged plugin environment.

Please address these issues and push an update.

@crazywoola

crazywoola commented Aug 15, 2026

Copy link
Copy Markdown
Member

@crazywoola please see the errors in the CI checks above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: low Low-risk Marketplace submission

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants