Skip to content

Add lazybird/lazybird 0.0.1 - #3570

Merged
crazywoola merged 1 commit into
langgenius:mainfrom
elyssiaamani:add-lazybird-0.0.1
Oct 31, 2026
Merged

crazywoola merged 1 commit into
langgenius:mainfrom
elyssiaamani:add-lazybird-0.0.1

Conversation

@elyssiaamani

Copy link
Copy Markdown
Contributor

Plugin Submission

Plugin information

Submission type

  • New plugin
  • Version update

What changed

New model provider plugin that adds Lazybird as a text to speech (TTS) provider. It offers one model, lazybird-tts, and lists the voices of the user's Lazybird account (their own cloned and designed voices first, then the Lazybird voice library), filtered by the language set in Voice Settings. Long text is split at sentence ends into chunks of up to 2,000 characters and the MP3 audio streams chunk by chunk.

Risk level

  • Low risk
  • Medium risk
  • High risk

Medium because the plugin sends user content (the text to be spoken) to an external service, the Lazybird API.

Required checks

  • I have read and followed the Marketplace submission requirements.
  • I have read and comply with the Plugin Development Guidelines.
  • I tested this plugin on Dify Community Edition and Dify Cloud, or documented any limitation below.
  • 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

  • The plugin calls one fixed, documented HTTPS API: https://api.lazybird.app/v2 (GET /me, GET /voices, POST /generate-speech). network.domains in the manifest lists only api.lazybird.app.
  • It sends the text to be spoken, the chosen voice id and the language filter to that API, authenticated with the user's Lazybird API key in the X-API-Key header.
  • The API key is a secret-input credential kept in Dify's encrypted credential store. The plugin does not log, store or forward it anywhere else.
  • No command or code execution, SQL, file operations, browser automation, arbitrary URL fetching or proxying. No health, financial, biometric or children's data.
  • Privacy policy: PRIVACY.md in the package, plus https://lazybird.app/privacy.

Local validation

$ dify plugin package ./dify-plugin-lazybird -o lazybird-0.0.1.difypkg
plugin packaged successfully

$ python3 validator/validate-difypkg.py lazybird-0.0.1.difypkg --output-dir val --pr-body-file pr-body.md
Blocking failures: 0
Environment/check execution failures: 0
package_contents PASS, package_secrets PASS, package_binaries PASS, manifest_metadata PASS,
readme_metadata PASS, package_dependencies PASS, python_compile PASS, sensitive_capabilities PASS,
prohibited_financial_activity PASS, access_domains PASS (api.lazybird.app only),
dependency_vulnerabilities PASS (2 pinned, no known vulnerabilities)
python_safety: 3 heuristic warnings on lines that pass the credentials dict to the HTTP client; the key is only sent as the X-API-Key header to api.lazybird.app and is never returned or logged.

Live test against the Lazybird API (tests/smoke.py in the source repo): valid key accepted, invalid key rejected with the API's 401 message, voice list loads (171 English voices, 588 in total), a 2,464-character text produced 186 seconds of MP3 that decodes cleanly, and an unknown voice id raises InvokeBadRequestError.

Reviewer notes

  • Tested on Dify Cloud through remote debugging: added the API key under Integrations → Model Provider, set Lazybird TTS as the default Text-to-Speech model, turned on Text to Speech in a Chatflow app, and played both the voice preview and a chat answer.
  • Not yet run on a self-hosted Community Edition. The plugin uses only the standard TTS model interface of dify_plugin 0.10.2 and needs outbound HTTPS to api.lazybird.app.
  • minimum_dify_version is 1.0.0.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HxX8QQetkkCMhLf6Ba1XrP

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HxX8QQetkkCMhLf6Ba1XrP
@github-actions github-actions Bot added the risk: medium Medium-risk Marketplace submission label Oct 30, 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.

Pre Check Plugin and PR Risk Label passed for this revision. Inspected the submitted package, documentation and relevant source: this is a non-draft plugin submission with no Web3 functionality identified. This is an eligibility review, not a comprehensive security audit.

@crazywoola
crazywoola merged commit c5dedbb into langgenius:main Oct 31, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: medium Medium-risk Marketplace submission

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants