@hasna/skills 0.1.27 → 0.1.30
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/LICENSE +1 -10
- package/README.md +141 -39
- package/bin/index.js +30121 -27576
- package/bin/mcp.js +22073 -18556
- package/dist/cli/cli.test-utils.d.ts +15 -0
- package/dist/cli/commands/auth.d.ts +2 -0
- package/dist/cli/commands/install.d.ts +1 -1
- package/dist/cli/commands/runtime-mcp.d.ts +4 -0
- package/dist/index.d.ts +9 -4
- package/dist/index.js +11606 -598
- package/dist/lib/auth-store.d.ts +13 -0
- package/dist/lib/installer.d.ts +58 -55
- package/dist/lib/mcp-contracts.d.ts +86 -0
- package/dist/lib/project-state.d.ts +43 -0
- package/dist/lib/registry-data/business-marketing.d.ts +2 -0
- package/dist/lib/registry-data/communication.d.ts +2 -0
- package/dist/lib/registry-data/content-generation.d.ts +2 -0
- package/dist/lib/registry-data/data-analysis.d.ts +2 -0
- package/dist/lib/registry-data/design-branding.d.ts +2 -0
- package/dist/lib/registry-data/development-tools.d.ts +2 -0
- package/dist/lib/registry-data/education-learning.d.ts +2 -0
- package/dist/lib/registry-data/event-management.d.ts +2 -0
- package/dist/lib/registry-data/finance-compliance.d.ts +2 -0
- package/dist/lib/registry-data/health-wellness.d.ts +2 -0
- package/dist/lib/registry-data/index.d.ts +2 -0
- package/dist/lib/registry-data/media-processing.d.ts +2 -0
- package/dist/lib/registry-data/productivity-organization.d.ts +2 -0
- package/dist/lib/registry-data/project-management.d.ts +2 -0
- package/dist/lib/registry-data/research-writing.d.ts +2 -0
- package/dist/lib/registry-data/science-academic.d.ts +2 -0
- package/dist/lib/registry-data/travel-lifestyle.d.ts +2 -0
- package/dist/lib/registry-data/web-browser.d.ts +2 -0
- package/dist/lib/registry-types.d.ts +27 -0
- package/dist/lib/registry.d.ts +6 -18
- package/dist/lib/remote-registry.d.ts +3 -0
- package/dist/lib/run-state.d.ts +60 -0
- package/dist/lib/skill-aliases.d.ts +17 -0
- package/dist/lib/skillinfo.d.ts +5 -1
- package/dist/mcp/discovery-tools.d.ts +2 -0
- package/dist/mcp/helpers.d.ts +26 -0
- package/dist/mcp/http.d.ts +11 -0
- package/dist/mcp/index.d.ts +3 -2
- package/dist/mcp/operation-tools.d.ts +2 -0
- package/dist/mcp/resource-meta-tools.d.ts +2 -0
- package/dist/mcp/schedule-tools.d.ts +2 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/types/api.d.ts +7 -4
- package/package.json +22 -11
- package/skills/_common/http-client.ts +1 -1
- package/skills/_common/index.ts +2 -3
- package/skills/_common/install.sh +5 -110
- package/skills/_common/installer.ts +31 -282
- package/skills/_common/skill-install.ts +14 -181
- package/skills/ad-creative-pack/SKILL.md +45 -0
- package/skills/ad-creative-pack/package.json +14 -0
- package/skills/advanced-math/package.json +3 -1
- package/skills/advanced-math/src/calculators.ts +118 -0
- package/skills/advanced-math/src/cli.ts +130 -0
- package/skills/advanced-math/src/conversion.ts +90 -0
- package/skills/advanced-math/src/finance.ts +75 -0
- package/skills/advanced-math/src/formatting.ts +95 -0
- package/skills/advanced-math/src/index.ts +24 -702
- package/skills/advanced-math/src/runtime.ts +49 -0
- package/skills/advanced-math/src/symbolic.ts +110 -0
- package/skills/advanced-math/src/types.ts +36 -0
- package/skills/analyze-data/SKILL.md +2 -2
- package/skills/analyze-data/src/analysis.ts +401 -0
- package/skills/analyze-data/src/cli.ts +66 -0
- package/skills/analyze-data/src/formatters.ts +235 -0
- package/skills/analyze-data/src/index.ts +6 -1027
- package/skills/analyze-data/src/logger.ts +36 -0
- package/skills/analyze-data/src/parsers.ts +57 -0
- package/skills/analyze-data/src/stats.ts +151 -0
- package/skills/analyze-data/src/types.ts +85 -0
- package/skills/api-docs-portal/SKILL.md +46 -0
- package/skills/api-docs-portal/package.json +9 -0
- package/skills/api-test-suite/src/index.ts +13 -0
- package/skills/apidocs/package.json +1 -1
- package/skills/apidocs/src/index.ts +3 -0
- package/skills/audio/package.json +2 -3
- package/skills/audio-cleanup-lab/SKILL.md +2 -2
- package/skills/audio-extract/CLAUDE.md +1 -1
- package/skills/audio-transcript-pack/SKILL.md +43 -0
- package/skills/audio-transcript-pack/package.json +10 -0
- package/skills/blog-article/CLAUDE.md +12 -0
- package/skills/blog-article/SKILL.md +45 -0
- package/skills/{create-blog-article → blog-article}/package.json +3 -3
- package/skills/brand-kit/SKILL.md +45 -0
- package/skills/brand-kit/package.json +14 -0
- package/skills/brand-photo-shoot/SKILL.md +28 -0
- package/skills/brand-photo-shoot/package.json +10 -0
- package/skills/brand-style-guide/SKILL.md +2 -2
- package/skills/brand-style-guide/src/index.ts +0 -0
- package/skills/budget-variance-analyzer/SKILL.md +2 -2
- package/skills/businessactivity/package.json +1 -1
- package/skills/businessactivity/src/index.ts +3 -0
- package/skills/calendar-events/src/ai-parser.ts +103 -0
- package/skills/calendar-events/src/api.ts +157 -0
- package/skills/calendar-events/src/auth.ts +22 -0
- package/skills/calendar-events/src/config.ts +6 -0
- package/skills/calendar-events/src/format.ts +96 -0
- package/skills/calendar-events/src/help.ts +54 -0
- package/skills/calendar-events/src/index.ts +21 -524
- package/skills/calendar-events/src/logger.ts +34 -0
- package/skills/calendar-events/src/types.ts +67 -0
- package/skills/compress-video/SKILL.md +2 -2
- package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.csv +16 -0
- package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.json +227 -0
- package/skills/consolelog/package.json +1 -1
- package/skills/consolelog/src/index.ts +3 -0
- package/skills/contract-review-report/SKILL.md +43 -0
- package/skills/contract-review-report/package.json +10 -0
- package/skills/convert/SKILL.md +2 -3
- package/skills/customer-feedback-report/SKILL.md +44 -0
- package/skills/customer-feedback-report/package.json +10 -0
- package/skills/dashboard-builder/package.json +3 -1
- package/skills/database-explorer/package.json +3 -1
- package/skills/deepresearch/README.md +4 -13
- package/skills/deploy/src/http-client.ts +1 -1
- package/skills/diff-viewer/package.json +4 -1
- package/skills/doc-generate/package.json +0 -1
- package/skills/doc-generate/src/ai.ts +50 -0
- package/skills/doc-generate/src/cli.ts +203 -0
- package/skills/doc-generate/src/dependencies.ts +44 -0
- package/skills/doc-generate/src/document-builder.ts +299 -0
- package/skills/doc-generate/src/index.ts +40 -764
- package/skills/doc-generate/src/markdown-parser.ts +125 -0
- package/skills/doc-generate/src/types.ts +68 -0
- package/skills/domainpurchase/SKILL.md +1 -1
- package/skills/domainpurchase/package.json +1 -1
- package/skills/domainpurchase/src/index.ts +3 -0
- package/skills/domainsearch/SKILL.md +1 -1
- package/skills/domainsearch/package.json +1 -1
- package/skills/domainsearch/src/index.ts +3 -0
- package/skills/email-sequence/SKILL.md +44 -0
- package/skills/email-sequence/package.json +14 -0
- package/skills/excel/CLAUDE.md +2 -2
- package/skills/experiment-power-calculator/package.json +3 -1
- package/skills/extract-invoice/src/cli.ts +97 -0
- package/skills/extract-invoice/src/extractor.ts +170 -0
- package/skills/extract-invoice/src/file-utils.ts +46 -0
- package/skills/extract-invoice/src/formatters.ts +144 -0
- package/skills/extract-invoice/src/index.ts +44 -629
- package/skills/extract-invoice/src/runtime.ts +46 -0
- package/skills/extract-invoice/src/types.ts +88 -0
- package/skills/folder-tree/package.json +3 -1
- package/skills/form-filler/package.json +3 -1
- package/skills/generate-api-client/package.json +3 -1
- package/skills/generate-api-client/src/generator.ts +47 -0
- package/skills/generate-api-client/src/index.ts +3 -777
- package/skills/generate-api-client/src/logger.ts +34 -0
- package/skills/generate-api-client/src/python-generator.ts +245 -0
- package/skills/generate-api-client/src/spec-loader.ts +48 -0
- package/skills/generate-api-client/src/type-mappers.ts +79 -0
- package/skills/generate-api-client/src/types.ts +76 -0
- package/skills/generate-api-client/src/typescript-generator.ts +247 -0
- package/skills/generate-book-cover/package.json +3 -1
- package/skills/generate-dockerfile/src/cli.ts +78 -0
- package/skills/generate-dockerfile/src/dockerfile-templates.ts +392 -0
- package/skills/generate-dockerfile/src/index.ts +12 -790
- package/skills/generate-dockerfile/src/logger.ts +30 -0
- package/skills/generate-dockerfile/src/project-detection.ts +68 -0
- package/skills/generate-dockerfile/src/support-files.ts +171 -0
- package/skills/generate-dockerfile/src/types.ts +29 -0
- package/skills/generate-documentation/src/ai.ts +131 -0
- package/skills/generate-documentation/src/cli.ts +71 -0
- package/skills/generate-documentation/src/code-parser.ts +300 -0
- package/skills/generate-documentation/src/file-processing.ts +182 -0
- package/skills/generate-documentation/src/index.ts +13 -753
- package/skills/generate-documentation/src/runtime.ts +35 -0
- package/skills/generate-documentation/src/types.ts +30 -0
- package/skills/generate-env/package.json +3 -1
- package/skills/generate-env/src/cli.ts +85 -0
- package/skills/generate-env/src/detection.ts +161 -0
- package/skills/generate-env/src/env-data.ts +66 -0
- package/skills/generate-env/src/generators.ts +240 -0
- package/skills/generate-env/src/index.ts +76 -676
- package/skills/generate-env/src/runtime.ts +30 -0
- package/skills/generate-env/src/types.ts +32 -0
- package/skills/generate-favicon/package.json +3 -1
- package/skills/generate-mock-data/package.json +3 -1
- package/skills/generate-mock-data/src/ai.ts +102 -0
- package/skills/generate-mock-data/src/formatters.ts +84 -0
- package/skills/generate-mock-data/src/generator.ts +377 -0
- package/skills/generate-mock-data/src/index.ts +15 -716
- package/skills/generate-mock-data/src/logger.ts +37 -0
- package/skills/generate-mock-data/src/presets.ts +110 -0
- package/skills/generate-mock-data/src/types.ts +21 -0
- package/skills/generate-pr-description/src/ai.ts +144 -0
- package/skills/generate-pr-description/src/cli.ts +80 -0
- package/skills/generate-pr-description/src/clipboard.ts +30 -0
- package/skills/generate-pr-description/src/formatters.ts +231 -0
- package/skills/generate-pr-description/src/git.ts +153 -0
- package/skills/generate-pr-description/src/index.ts +21 -714
- package/skills/generate-pr-description/src/types.ts +49 -0
- package/skills/generate-presentation/src/ai-clients.ts +61 -0
- package/skills/generate-presentation/src/cli.ts +126 -0
- package/skills/generate-presentation/src/index.ts +3 -751
- package/skills/generate-presentation/src/logger.ts +67 -0
- package/skills/generate-presentation/src/presentation-generator.ts +425 -0
- package/skills/generate-presentation/src/runtime.ts +6 -0
- package/skills/generate-presentation/src/security.ts +12 -0
- package/skills/generate-presentation/src/types.ts +28 -0
- package/skills/generate-qrcode/package.json +4 -1
- package/skills/generate-regex/package.json +3 -1
- package/skills/generate-resume/src/cli.ts +157 -0
- package/skills/generate-resume/src/index.ts +13 -917
- package/skills/generate-resume/src/parsers.ts +95 -0
- package/skills/generate-resume/src/renderers.ts +538 -0
- package/skills/generate-resume/src/security.ts +39 -0
- package/skills/generate-resume/src/types.ts +86 -0
- package/skills/generate-social-posts/src/ai.ts +88 -0
- package/skills/generate-social-posts/src/cli.ts +118 -0
- package/skills/generate-social-posts/src/exporters.ts +126 -0
- package/skills/generate-social-posts/src/generator.ts +130 -0
- package/skills/generate-social-posts/src/index.ts +19 -709
- package/skills/generate-social-posts/src/platforms.ts +39 -0
- package/skills/generate-social-posts/src/runtime.ts +34 -0
- package/skills/generate-social-posts/src/source.ts +116 -0
- package/skills/generate-social-posts/src/types.ts +58 -0
- package/skills/gif-maker/package.json +4 -1
- package/skills/github-manager/package.json +3 -1
- package/skills/gmail/CLAUDE.md +1 -1
- package/skills/highlight-reel-generator/src/index.ts +19 -0
- package/skills/hook/src/commands/create.ts +20 -845
- package/skills/hook/src/templates/root.ts +196 -0
- package/skills/hook/src/templates/source.ts +647 -0
- package/skills/http-server/package.json +3 -1
- package/skills/icon-pack/README.md +28 -0
- package/skills/icon-pack/SKILL.md +23 -0
- package/skills/icon-pack/package.json +29 -0
- package/skills/{audio → icon-pack}/tsconfig.json +10 -12
- package/skills/image/package.json +1 -2
- package/skills/implementation-agent/package.json +3 -1
- package/skills/implementation-agent/src/ai-generation.ts +225 -0
- package/skills/implementation-agent/src/index.ts +3 -960
- package/skills/implementation-agent/src/minimist.d.ts +15 -0
- package/skills/implementation-agent/src/templates.ts +686 -0
- package/skills/implementation-agent/src/types.ts +53 -0
- package/skills/implementation-plan/package.json +3 -1
- package/skills/implementation-todo/package.json +3 -1
- package/skills/invoice/package.json +1 -1
- package/skills/invoice/src/index.ts +3 -0
- package/skills/invoice-reconciliation/SKILL.md +42 -0
- package/skills/invoice-reconciliation/package.json +10 -0
- package/skills/landing-page-pack/SKILL.md +47 -0
- package/skills/landing-page-pack/package.json +14 -0
- package/skills/latex-table-generator/package.json +3 -1
- package/skills/logo-design/SKILL.md +25 -44
- package/skills/logo-design/package.json +3 -15
- package/skills/lorem-generator/package.json +3 -1
- package/skills/lorem-generator/src/index.ts +13 -0
- package/skills/managehook/package.json +1 -1
- package/skills/managehook/src/index.ts +3 -0
- package/skills/managemcp/package.json +1 -1
- package/skills/managemcp/src/index.ts +3 -0
- package/skills/manageskill/package.json +1 -1
- package/skills/manageskill/src/index.ts +3 -0
- package/skills/markdown-validator/package.json +3 -1
- package/skills/markdown-validator/src/index.ts +1 -4
- package/skills/market-research-report/SKILL.md +41 -0
- package/skills/market-research-report/package.json +10 -0
- package/skills/mcp-builder/package.json +4 -1
- package/skills/mcp-builder/src/ai-descriptions.ts +37 -0
- package/skills/mcp-builder/src/generators.ts +513 -0
- package/skills/mcp-builder/src/index.ts +7 -908
- package/skills/mcp-builder/src/minimist.d.ts +15 -0
- package/skills/mcp-builder/src/naming.ts +12 -0
- package/skills/mcp-builder/src/options.ts +170 -0
- package/skills/mcp-builder/src/templates.ts +149 -0
- package/skills/mcp-builder/src/types.ts +42 -0
- package/skills/meeting-pack/SKILL.md +43 -0
- package/skills/meeting-pack/package.json +10 -0
- package/skills/merge-pdfs/package.json +5 -1
- package/skills/migration-plan-pack/SKILL.md +45 -0
- package/skills/migration-plan-pack/package.json +10 -0
- package/skills/music/package.json +2 -3
- package/skills/music-album/SKILL.md +37 -0
- package/skills/music-album/package.json +10 -0
- package/skills/notion-manager/package.json +3 -1
- package/skills/npmpublish/CLAUDE.md +5 -8
- package/skills/npmpublish/README.md +5 -26
- package/skills/npmpublish/src/index.ts +9 -147
- package/skills/one-page-website/SKILL.md +46 -0
- package/skills/one-page-website/package.json +10 -0
- package/skills/one-page-website/tsconfig.json +8 -0
- package/skills/pdf-generate/src/cli.ts +162 -0
- package/skills/pdf-generate/src/html.ts +84 -0
- package/skills/pdf-generate/src/index.ts +11 -800
- package/skills/pdf-generate/src/markdown.ts +27 -0
- package/skills/pdf-generate/src/pdf-writer.ts +78 -0
- package/skills/pdf-generate/src/runtime.ts +34 -0
- package/skills/pdf-generate/src/security.ts +37 -0
- package/skills/pdf-generate/src/templates.ts +311 -0
- package/skills/pdf-generate/src/types.ts +28 -0
- package/skills/pdf-read/SKILL.md +10 -10
- package/skills/pdf-to-dataset/SKILL.md +45 -0
- package/skills/pdf-to-dataset/package.json +10 -0
- package/skills/pdf-to-markdown/SKILL.md +49 -0
- package/skills/pdf-to-markdown/package.json +10 -0
- package/skills/pdf-to-markdown/tsconfig.json +10 -0
- package/skills/performance-audit-report/SKILL.md +42 -0
- package/skills/performance-audit-report/package.json +10 -0
- package/skills/persona-based-adwriter/src/index.ts +19 -0
- package/skills/photo-album/SKILL.md +29 -0
- package/skills/photo-album/package.json +9 -0
- package/skills/photo-album/tsconfig.json +4 -0
- package/skills/pitch-deck/SKILL.md +43 -0
- package/skills/pitch-deck/package.json +9 -0
- package/skills/playlist-maker/SKILL.md +33 -0
- package/skills/playlist-maker/package.json +9 -0
- package/skills/playlist-maker/tsconfig.json +4 -0
- package/skills/product-mockup/SKILL.md +45 -0
- package/skills/product-mockup/package.json +3 -20
- package/skills/product-mockup/tsconfig.json +3 -5
- package/skills/project-retro-companion/src/index.ts +19 -0
- package/skills/proposal-pack/SKILL.md +45 -0
- package/skills/proposal-pack/package.json +10 -0
- package/skills/read-pdf/SKILL.md +5 -4
- package/skills/repo-onboarding-report/SKILL.md +42 -0
- package/skills/repo-onboarding-report/package.json +10 -0
- package/skills/sales-call-recapper/src/index.ts +20 -0
- package/skills/salescopy/package.json +1 -1
- package/skills/salescopy/src/index.ts +3 -0
- package/skills/scaffold-project/src/ai-detect.ts +136 -0
- package/skills/scaffold-project/src/file-generators.ts +292 -0
- package/skills/scaffold-project/src/index.ts +8 -991
- package/skills/scaffold-project/src/project-config.ts +338 -0
- package/skills/scaffold-project/src/templates.ts +173 -0
- package/skills/scaffold-project/src/types.ts +58 -0
- package/skills/scientific-figure-check/package.json +3 -1
- package/skills/sdk-generator/SKILL.md +45 -0
- package/skills/sdk-generator/package.json +10 -0
- package/skills/sdk-generator/tsconfig.json +8 -0
- package/skills/security-audit/src/index.ts +25 -6
- package/skills/security-audit-report/SKILL.md +40 -0
- package/skills/security-audit-report/package.json +10 -0
- package/skills/seo-content-pack/SKILL.md +44 -0
- package/skills/seo-content-pack/package.json +9 -0
- package/skills/short-video-pack/SKILL.md +30 -0
- package/skills/short-video-pack/package.json +10 -0
- package/skills/skill-academic-journal-matcher/bin/cli.ts +34 -0
- package/skills/skill-action-item-router/bin/cli.ts +34 -0
- package/skills/skill-ad-creative-generator/bin/cli.ts +34 -0
- package/skills/skill-advanced-math/bin/cli.ts +34 -0
- package/skills/skill-analyze-data/bin/cli.ts +19 -0
- package/skills/skill-anomaly-investigator/bin/cli.ts +34 -0
- package/skills/skill-api-test-suite/bin/cli.ts +34 -0
- package/skills/skill-apidocs/bin/cli.ts +87 -0
- package/skills/skill-audio-cleanup-lab/bin/cli.ts +6 -0
- package/skills/skill-audiobook-chapter-proofer/bin/cli.ts +34 -0
- package/skills/skill-banner-ad-suite/bin/cli.ts +34 -0
- package/skills/skill-benchmark-finder/bin/cli.ts +34 -0
- package/skills/skill-bio-sequence-tool/bin/cli.ts +34 -0
- package/skills/skill-blog-topic-cluster/bin/cli.ts +34 -0
- package/skills/skill-brand-style-guide/bin/cli.ts +19 -0
- package/skills/skill-brand-voice-audit/bin/cli.ts +34 -0
- package/skills/skill-budget-variance-analyzer/bin/cli.ts +6 -0
- package/skills/skill-businessactivity/bin/cli.ts +28 -0
- package/skills/skill-calendar-events/bin/cli.ts +34 -0
- package/skills/skill-campaign-metric-brief/bin/cli.ts +34 -0
- package/skills/skill-campaign-moodboard/bin/cli.ts +34 -0
- package/skills/skill-caption-style-stylist/bin/cli.ts +34 -0
- package/skills/skill-chemistry-calculator/bin/cli.ts +34 -0
- package/skills/skill-churn-risk-notifier/bin/cli.ts +34 -0
- package/skills/skill-citation-formatter/bin/cli.ts +34 -0
- package/skills/skill-classroom-newsletter-kit/bin/cli.ts +34 -0
- package/skills/skill-color-palette-harmonizer/bin/cli.ts +34 -0
- package/skills/skill-competitor-ad-analyzer/bin/cli.ts +34 -0
- package/skills/skill-compliance-copy-check/bin/cli.ts +34 -0
- package/skills/skill-compliance-report-pack/bin/cli.ts +34 -0
- package/skills/skill-compress-video/bin/cli.ts +19 -0
- package/skills/skill-consolelog/bin/cli.ts +884 -0
- package/skills/skill-contract-plainlanguage/bin/cli.ts +34 -0
- package/skills/skill-copytone-translator/bin/cli.ts +34 -0
- package/skills/skill-create-blog-article/bin/cli.ts +34 -0
- package/skills/skill-create-ebook/bin/cli.ts +34 -0
- package/skills/skill-crm-note-enhancer/bin/cli.ts +34 -0
- package/skills/skill-customer-journey-mapper/bin/cli.ts +34 -0
- package/skills/skill-dashboard-builder/bin/cli.ts +34 -0
- package/skills/skill-dashboard-narrator/bin/cli.ts +34 -0
- package/skills/skill-data-anonymizer/bin/cli.ts +34 -0
- package/skills/skill-database-explorer/bin/cli.ts +34 -0
- package/skills/skill-dataset-health-check/bin/cli.ts +34 -0
- package/skills/skill-decision-journal/bin/cli.ts +34 -0
- package/skills/skill-delegation-brief-writer/bin/cli.ts +34 -0
- package/skills/skill-destination-briefing/bin/cli.ts +34 -0
- package/skills/skill-diff-viewer/bin/cli.ts +34 -0
- package/skills/skill-domainpurchase/bin/cli.ts +683 -0
- package/skills/skill-domainsearch/bin/cli.ts +410 -0
- package/skills/skill-educational-resource-finder/bin/cli.ts +34 -0
- package/skills/skill-email-campaign/bin/cli.ts +34 -0
- package/skills/skill-exam-readiness-check/bin/cli.ts +34 -0
- package/skills/skill-experiment-power-calculator/bin/cli.ts +34 -0
- package/skills/skill-extract-audio/bin/cli.ts +19 -0
- package/skills/skill-extract-frames/bin/cli.ts +34 -0
- package/skills/skill-extract-invoice/bin/cli.ts +34 -0
- package/skills/skill-family-activity-curator/bin/cli.ts +34 -0
- package/skills/skill-faq-packager/bin/cli.ts +34 -0
- package/skills/skill-feedback-survey-designer/bin/cli.ts +34 -0
- package/skills/skill-field-trip-planner/bin/cli.ts +34 -0
- package/skills/skill-file-organizer/bin/cli.ts +34 -0
- package/skills/skill-folder-tree/bin/cli.ts +34 -0
- package/skills/skill-forecast-scenario-lab/bin/cli.ts +34 -0
- package/skills/skill-form-filler/bin/cli.ts +34 -0
- package/skills/skill-generate-api-client/bin/cli.ts +34 -0
- package/skills/skill-generate-book-cover/bin/cli.ts +34 -0
- package/skills/skill-generate-chart/bin/cli.ts +34 -0
- package/skills/skill-generate-diagram/bin/cli.ts +34 -0
- package/skills/skill-generate-dockerfile/bin/cli.ts +34 -0
- package/skills/skill-generate-documentation/bin/cli.ts +34 -0
- package/skills/skill-generate-docx/bin/cli.ts +6 -0
- package/skills/skill-generate-env/bin/cli.ts +34 -0
- package/skills/skill-generate-excel/bin/cli.ts +34 -0
- package/skills/skill-generate-favicon/bin/cli.ts +34 -0
- package/skills/skill-generate-mock-data/bin/cli.ts +34 -0
- package/skills/skill-generate-pdf/bin/cli.ts +6 -0
- package/skills/skill-generate-pr-description/bin/cli.ts +34 -0
- package/skills/skill-generate-presentation/bin/cli.ts +34 -0
- package/skills/skill-generate-qrcode/bin/cli.ts +34 -0
- package/skills/skill-generate-regex/bin/cli.ts +34 -0
- package/skills/skill-generate-resume/bin/cli.ts +34 -0
- package/skills/skill-generate-sitemap/bin/cli.ts +34 -0
- package/skills/skill-generate-social-posts/bin/cli.ts +34 -0
- package/skills/skill-generate-sql/bin/cli.ts +34 -0
- package/skills/skill-gif-maker/bin/cli.ts +34 -0
- package/skills/skill-github-manager/bin/cli.ts +34 -0
- package/skills/skill-gmail/bin/cli.ts +34 -0
- package/skills/skill-goal-quarterly-roadmap/bin/cli.ts +34 -0
- package/skills/skill-grant-application-drafter/bin/cli.ts +34 -0
- package/skills/skill-grocery-basket-optimizer/bin/cli.ts +34 -0
- package/skills/skill-guest-communication-suite/bin/cli.ts +34 -0
- package/skills/skill-habit-reflection-digest/bin/cli.ts +34 -0
- package/skills/skill-highlight-reel-generator/bin/cli.ts +34 -0
- package/skills/skill-homework-feedback-coach/bin/cli.ts +34 -0
- package/skills/skill-household-maintenance-mgr/bin/cli.ts +34 -0
- package/skills/skill-http-server/bin/cli.ts +34 -0
- package/skills/skill-implementation-agent/bin/cli.ts +34 -0
- package/skills/skill-implementation-plan/bin/cli.ts +34 -0
- package/skills/skill-implementation-todo/bin/cli.ts +34 -0
- package/skills/skill-inbox-priority-planner/bin/cli.ts +34 -0
- package/skills/skill-invoice/bin/cli.ts +20 -0
- package/skills/skill-invoice-dispute-helper/bin/cli.ts +34 -0
- package/skills/skill-itinerary-architect/bin/cli.ts +34 -0
- package/skills/skill-jingle-composer/bin/cli.ts +34 -0
- package/skills/skill-kpi-digest-generator/bin/cli.ts +34 -0
- package/skills/skill-lab-notebook-formatter/bin/cli.ts +34 -0
- package/skills/skill-landing-page-copy/bin/cli.ts +34 -0
- package/skills/skill-latex-table-generator/bin/cli.ts +34 -0
- package/skills/skill-learning-style-profiler/bin/cli.ts +34 -0
- package/skills/skill-lesson-plan-customizer/bin/cli.ts +34 -0
- package/skills/skill-livestream-runofshow/bin/cli.ts +34 -0
- package/skills/skill-longform-structurer/bin/cli.ts +34 -0
- package/skills/skill-lorem-generator/bin/cli.ts +34 -0
- package/skills/skill-managehook/bin/cli.ts +241 -0
- package/skills/skill-managemcp/bin/cli.ts +241 -0
- package/skills/skill-manageskill/bin/cli.ts +241 -0
- package/skills/skill-markdown-validator/bin/cli.ts +34 -0
- package/skills/skill-mcp-builder/bin/cli.ts +34 -0
- package/skills/skill-meal-plan-designer/bin/cli.ts +34 -0
- package/skills/skill-meeting-insight-summarizer/bin/cli.ts +34 -0
- package/skills/skill-merge-pdfs/bin/cli.ts +34 -0
- package/skills/skill-microcopy-generator/bin/cli.ts +34 -0
- package/skills/skill-mindfulness-prompt-cache/bin/cli.ts +34 -0
- package/skills/skill-notion-manager/bin/cli.ts +34 -0
- package/skills/skill-onboarding-sequence-builder/bin/cli.ts +34 -0
- package/skills/skill-onsite-ops-checklist/bin/cli.ts +34 -0
- package/skills/skill-outreach-cadence-designer/bin/cli.ts +34 -0
- package/skills/skill-packaging-concept-studio/bin/cli.ts +34 -0
- package/skills/skill-packing-plan-pro/bin/cli.ts +34 -0
- package/skills/skill-parent-teacher-brief/bin/cli.ts +34 -0
- package/skills/skill-partner-kit-assembler/bin/cli.ts +34 -0
- package/skills/skill-payroll-change-prepper/bin/cli.ts +34 -0
- package/skills/skill-persona-based-adwriter/bin/cli.ts +34 -0
- package/skills/skill-persona-generator/bin/cli.ts +34 -0
- package/skills/skill-personal-daily-ops/bin/cli.ts +34 -0
- package/skills/skill-pet-care-scheduler/bin/cli.ts +34 -0
- package/skills/skill-podcast-show-notes/bin/cli.ts +34 -0
- package/skills/skill-presentation-theme-maker/bin/cli.ts +34 -0
- package/skills/skill-press-release-drafter/bin/cli.ts +34 -0
- package/skills/skill-print-collateral-designer/bin/cli.ts +34 -0
- package/skills/skill-procurement-scorecard/bin/cli.ts +34 -0
- package/skills/skill-product-demo-script/bin/cli.ts +34 -0
- package/skills/skill-product-mockup/bin/cli.ts +34 -0
- package/skills/skill-project-retro-companion/bin/cli.ts +34 -0
- package/skills/skill-proposal-redline-advisor/bin/cli.ts +34 -0
- package/skills/skill-regex-tester/bin/cli.ts +34 -0
- package/skills/skill-remove-background/bin/cli.ts +34 -0
- package/skills/skill-risk-disclosure-kit/bin/cli.ts +34 -0
- package/skills/skill-roi-comparison-tool/bin/cli.ts +34 -0
- package/skills/skill-sales-call-recapper/bin/cli.ts +34 -0
- package/skills/skill-salescopy/bin/cli.ts +20 -0
- package/skills/skill-scaffold-project/bin/cli.ts +34 -0
- package/skills/skill-scholarship-tracker/bin/cli.ts +34 -0
- package/skills/skill-scientific-figure-check/bin/cli.ts +34 -0
- package/skills/skill-seating-chart-maker/bin/cli.ts +34 -0
- package/skills/skill-security-audit/bin/cli.ts +34 -0
- package/skills/skill-seo-brief-builder/bin/cli.ts +34 -0
- package/skills/skill-slack-assistant/bin/cli.ts +34 -0
- package/skills/skill-sleep-routine-analyzer/bin/cli.ts +34 -0
- package/skills/skill-social-media-kit/bin/cli.ts +34 -0
- package/skills/skill-split-pdf/bin/cli.ts +34 -0
- package/skills/skill-sponsorship-proposal-lab/bin/cli.ts +34 -0
- package/skills/skill-spreadsheet-cleanroom/bin/cli.ts +34 -0
- package/skills/skill-statistical-test-selector/bin/cli.ts +34 -0
- package/skills/skill-stress-relief-playbook/bin/cli.ts +34 -0
- package/skills/skill-study-guide-builder/bin/cli.ts +34 -0
- package/skills/skill-subscription-spend-watcher/bin/cli.ts +34 -0
- package/skills/skill-subtitle/bin/cli.ts +20 -0
- package/skills/skill-survey-insight-extractor/bin/cli.ts +34 -0
- package/skills/skill-terraform-generator/bin/cli.ts +34 -0
- package/skills/skill-testimonial-graphics/bin/cli.ts +34 -0
- package/skills/skill-timesheet/bin/cli.ts +47 -0
- package/skills/skill-travel-budget-balancer/bin/cli.ts +34 -0
- package/skills/skill-validate-config/bin/cli.ts +34 -0
- package/skills/skill-video-cut-suggester/bin/cli.ts +34 -0
- package/skills/skill-video-downloader/bin/cli.ts +34 -0
- package/skills/skill-video-thumbnail/bin/cli.ts +34 -0
- package/skills/skill-voiceover-casting-assistant/bin/cli.ts +34 -0
- package/skills/skill-watermark/bin/cli.ts +34 -0
- package/skills/skill-webcrawling/bin/cli.ts +21 -0
- package/skills/skill-webinar-script-coach/bin/cli.ts +34 -0
- package/skills/skill-wellness-progress-reporter/bin/cli.ts +34 -0
- package/skills/skill-workout-cycle-planner/bin/cli.ts +34 -0
- package/skills/slack-assistant/package.json +3 -1
- package/skills/slide-deck-generator/SKILL.md +44 -0
- package/skills/slide-deck-generator/package.json +10 -0
- package/skills/sms/package.json +1 -1
- package/skills/sms/src/index.ts +15 -0
- package/skills/social-content-calendar/SKILL.md +45 -0
- package/skills/social-content-calendar/package.json +14 -0
- package/skills/split-pdf/package.json +4 -1
- package/skills/subtitle/package.json +2 -1
- package/skills/subtitle/src/index.ts +3 -0
- package/skills/terraform-generator/package.json +3 -1
- package/skills/test-suite-generator/SKILL.md +41 -0
- package/skills/test-suite-generator/package.json +10 -0
- package/skills/timesheet/package.json +1 -1
- package/skills/timesheet/src/index.ts +3 -0
- package/skills/transcript/SKILL.md +1 -8
- package/skills/validate-config/package.json +3 -1
- package/skills/video/package.json +6 -4
- package/skills/video-downloader/package.json +3 -1
- package/skills/video-highlight-pack/SKILL.md +44 -0
- package/skills/video-highlight-pack/package.json +10 -0
- package/skills/voiceover-jingle-pack/SKILL.md +28 -0
- package/skills/voiceover-jingle-pack/package.json +10 -0
- package/skills/watermark/package.json +6 -1
- package/skills/webcrawling/package.json +2 -1
- package/skills/write/SKILL.md +6 -6
- package/dist/server/serve.d.ts +0 -11
- package/skills/apidocs/.claude/settings.json +0 -5
- package/skills/audio/.env.example +0 -14
- package/skills/audio/QUICKSTART.md +0 -158
- package/skills/audio/README.md +0 -256
- package/skills/audio/src/index-local.ts +0 -206
- package/skills/audio/src/index.ts +0 -95
- package/skills/audio/src/providers/elevenlabs.ts +0 -115
- package/skills/audio/src/providers/google.ts +0 -116
- package/skills/audio/src/providers/minimax.ts +0 -83
- package/skills/audio/src/providers/openai.ts +0 -115
- package/skills/audio/src/types.ts +0 -79
- package/skills/audiobook-chapter-proofer/CLAUDE.md +0 -19
- package/skills/audiobook-chapter-proofer/package.json +0 -27
- package/skills/audiobook-chapter-proofer/src/index.ts +0 -285
- package/skills/browse/src/client.ts +0 -373
- package/skills/browse/src/index-local.ts +0 -430
- package/skills/browse/src/index.ts +0 -110
- package/skills/browse/src/sse-server.ts +0 -919
- package/skills/browse/src/types.ts +0 -104
- package/skills/consolelog/src/server/index.ts +0 -508
- package/skills/create-blog-article/CLAUDE.md +0 -19
- package/skills/create-blog-article/src/index.ts +0 -745
- package/skills/create-blog-article/tsconfig.json +0 -10
- package/skills/deepresearch/src/agents/query-generator.ts +0 -91
- package/skills/deepresearch/src/agents/synthesizer.ts +0 -111
- package/skills/deepresearch/src/index.ts +0 -224
- package/skills/deepresearch/src/research.ts +0 -166
- package/skills/deepresearch/src/services/anthropic.ts +0 -69
- package/skills/deepresearch/src/services/exa.ts +0 -108
- package/skills/deepresearch/src/services/firecrawl.ts +0 -88
- package/skills/deepresearch/src/services/openai.ts +0 -81
- package/skills/deepresearch/src/types.ts +0 -76
- package/skills/deepresearch/src/utils/file.ts +0 -111
- package/skills/deepresearch/src/utils/logger.ts +0 -84
- package/skills/domainpurchase/src/server/index.ts +0 -332
- package/skills/domainsearch/src/server/index.ts +0 -229
- package/skills/e2bswarm/README.md +0 -135
- package/skills/e2bswarm/SKILL.md +0 -118
- package/skills/e2bswarm/examples/tasks-example.json +0 -38
- package/skills/e2bswarm/package.json +0 -59
- package/skills/e2bswarm/src/commands/collect.ts +0 -135
- package/skills/e2bswarm/src/commands/install.ts +0 -164
- package/skills/e2bswarm/src/commands/kill.ts +0 -62
- package/skills/e2bswarm/src/commands/spawn.ts +0 -134
- package/skills/e2bswarm/src/commands/status.ts +0 -90
- package/skills/e2bswarm/src/commands/sync.ts +0 -208
- package/skills/e2bswarm/src/index.ts +0 -121
- package/skills/e2bswarm/src/lib/config.ts +0 -75
- package/skills/e2bswarm/src/lib/e2b.ts +0 -490
- package/skills/e2bswarm/src/lib/github.ts +0 -253
- package/skills/e2bswarm/src/lib/logger.ts +0 -41
- package/skills/e2bswarm/src/lib/paths.ts +0 -75
- package/skills/e2bswarm/src/lib/tasks.ts +0 -320
- package/skills/e2bswarm/src/types/index.ts +0 -107
- package/skills/e2bswarm/templates/codebox/e2b.Dockerfile +0 -38
- package/skills/e2bswarm/templates/codebox/e2b.toml +0 -3
- package/skills/e2bswarm/templates/setup.sh +0 -21
- package/skills/e2bswarm/tsconfig.json +0 -19
- package/skills/generate-book-cover/src/index.ts +0 -694
- package/skills/image/src/index-local.ts +0 -206
- package/skills/image/src/index.ts +0 -96
- package/skills/image/src/providers/google.ts +0 -79
- package/skills/image/src/providers/minimax.ts +0 -94
- package/skills/image/src/providers/openai.ts +0 -80
- package/skills/image/src/providers/xai.ts +0 -73
- package/skills/image/src/types.ts +0 -37
- package/skills/logo-design/CLAUDE.md +0 -30
- package/skills/logo-design/src/index.ts +0 -322
- package/skills/managehook/src/server/index.ts +0 -108
- package/skills/managemcp/src/server/index.ts +0 -108
- package/skills/manageskill/src/server/index.ts +0 -108
- package/skills/music/CLAUDE.md +0 -9
- package/skills/music/src/index.ts +0 -94
- package/skills/music/tsconfig.json +0 -10
- package/skills/pdf-read/src/index.ts +0 -320
- package/skills/product-mockup/CLAUDE.md +0 -19
- package/skills/product-mockup/src/index.ts +0 -290
- package/skills/read-pdf/src/index.ts +0 -388
- package/skills/remove-background/src/index.ts +0 -405
- package/skills/sound-effects/SKILL.md +0 -34
- package/skills/sound-effects/package.json +0 -21
- package/skills/sound-effects/src/index.ts +0 -172
- package/skills/sound-effects/tsconfig.json +0 -8
- package/skills/transcript/src/chunker.ts +0 -215
- package/skills/transcript/src/formatter.ts +0 -134
- package/skills/transcript/src/index-local.ts +0 -226
- package/skills/transcript/src/index.ts +0 -110
- package/skills/transcript/src/providers/elevenlabs.ts +0 -133
- package/skills/transcript/src/providers/gemini.ts +0 -192
- package/skills/transcript/src/providers/index.ts +0 -54
- package/skills/transcript/src/providers/openai.ts +0 -203
- package/skills/transcript/src/types.ts +0 -106
- package/skills/video/.env.example +0 -14
- package/skills/video/EXAMPLES.md +0 -266
- package/skills/video/LICENSE +0 -192
- package/skills/video/README.md +0 -174
- package/skills/video/src/cli.ts +0 -155
- package/skills/video/src/index-local.ts +0 -148
- package/skills/video/src/index.ts +0 -96
- package/skills/video/src/providers/google-veo.ts +0 -126
- package/skills/video/src/providers/index.ts +0 -22
- package/skills/video/src/providers/minimax.ts +0 -100
- package/skills/video/src/providers/openai-sora.ts +0 -164
- package/skills/video/src/providers/runway.ts +0 -159
- package/skills/video/src/types.ts +0 -35
- package/skills/video/tsconfig.json +0 -22
- package/skills/voiceover-casting-assistant/CLAUDE.md +0 -19
- package/skills/voiceover-casting-assistant/package.json +0 -27
- package/skills/voiceover-casting-assistant/src/index.ts +0 -255
- package/skills/voiceover-casting-assistant/tsconfig.json +0 -10
- package/skills/webcrawling/src/commands/config.ts +0 -34
- package/skills/webcrawling/src/commands/crawl.ts +0 -33
- package/skills/webcrawling/src/commands/scrape.ts +0 -32
- package/skills/webcrawling/src/commands/sessions.ts +0 -42
- package/skills/webcrawling/src/lib/crawler.ts +0 -174
- package/skills/webcrawling/src/lib/storage.ts +0 -130
- package/skills/webcrawling/src/types/index.ts +0 -45
- package/skills/webcrawling/src/utils/logger.ts +0 -30
- package/skills/webcrawling/src/utils/paths.ts +0 -28
- /package/skills/{audiobook-chapter-proofer → blog-article}/tsconfig.json +0 -0
package/skills/audio/README.md
DELETED
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
# Audio Generation Skill
|
|
2
|
-
|
|
3
|
-
A comprehensive Claude Code skill for generating high-quality audio using AI-powered text-to-speech APIs.
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
|
|
7
|
-
- Multiple TTS providers: ElevenLabs, OpenAI TTS, and Google Text-to-Speech
|
|
8
|
-
- Simple, elegant CLI interface
|
|
9
|
-
- Voice selection and listing
|
|
10
|
-
- Multiple languages support
|
|
11
|
-
- Customizable speech speed
|
|
12
|
-
- Clean TypeScript implementation with full type safety
|
|
13
|
-
- Native fetch API (no external HTTP libraries needed)
|
|
14
|
-
|
|
15
|
-
## Supported Providers
|
|
16
|
-
|
|
17
|
-
### ElevenLabs
|
|
18
|
-
- Natural voice synthesis with voice cloning capabilities
|
|
19
|
-
- Models: `eleven_multilingual_v2`, `eleven_flash_v2_5`, `eleven_v3`
|
|
20
|
-
- Multiple languages and voice options
|
|
21
|
-
- Professional-quality audio output
|
|
22
|
-
|
|
23
|
-
### OpenAI TTS
|
|
24
|
-
- High-quality text-to-speech
|
|
25
|
-
- Models: `tts-1` (fast), `tts-1-hd` (high quality)
|
|
26
|
-
- Voices: alloy, echo, fable, onyx, nova, shimmer
|
|
27
|
-
- Speed control (0.25x to 4.0x)
|
|
28
|
-
|
|
29
|
-
### Google Text-to-Speech
|
|
30
|
-
- Cloud-based TTS service
|
|
31
|
-
- Wide range of voices and languages
|
|
32
|
-
- Natural-sounding speech synthesis
|
|
33
|
-
- Configurable pitch and speaking rate
|
|
34
|
-
|
|
35
|
-
## Installation
|
|
36
|
-
|
|
37
|
-
1. Install Bun (if not already installed):
|
|
38
|
-
```bash
|
|
39
|
-
curl -fsSL https://bun.sh/install | bash
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
2. Clone and navigate to the skill directory:
|
|
43
|
-
```bash
|
|
44
|
-
git clone https://github.com/hasnaxyz/audio.git
|
|
45
|
-
cd audio
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
3. Install dependencies:
|
|
49
|
-
```bash
|
|
50
|
-
bun install
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
4. Set up environment variables:
|
|
54
|
-
```bash
|
|
55
|
-
cp .env.example .env
|
|
56
|
-
# Edit .env and add your API keys
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Configuration
|
|
60
|
-
|
|
61
|
-
Create a `.env` file with your API keys:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
ELEVENLABS_API_KEY=your_elevenlabs_api_key_here
|
|
65
|
-
OPENAI_API_KEY=your_openai_api_key_here
|
|
66
|
-
GOOGLE_API_KEY=your_google_api_key_here
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Getting API Keys
|
|
70
|
-
|
|
71
|
-
- **ElevenLabs**: https://elevenlabs.io/
|
|
72
|
-
- **OpenAI**: https://platform.openai.com/api-keys
|
|
73
|
-
- **Google Cloud**: https://console.cloud.google.com/apis/credentials
|
|
74
|
-
|
|
75
|
-
## Usage
|
|
76
|
-
|
|
77
|
-
### Generate Audio
|
|
78
|
-
|
|
79
|
-
#### ElevenLabs
|
|
80
|
-
```bash
|
|
81
|
-
bun run src/index.ts generate \
|
|
82
|
-
--provider elevenlabs \
|
|
83
|
-
--text "Hello world, this is a test of ElevenLabs text to speech" \
|
|
84
|
-
--voice rachel \
|
|
85
|
-
--model eleven_multilingual_v2 \
|
|
86
|
-
--output ./output.mp3
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
#### OpenAI TTS
|
|
90
|
-
```bash
|
|
91
|
-
bun run src/index.ts generate \
|
|
92
|
-
--provider openai \
|
|
93
|
-
--text "Hello world, this is a test of OpenAI text to speech" \
|
|
94
|
-
--voice nova \
|
|
95
|
-
--model tts-1-hd \
|
|
96
|
-
--speed 1.0 \
|
|
97
|
-
--output ./output.mp3
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
#### Google Text-to-Speech
|
|
101
|
-
```bash
|
|
102
|
-
bun run src/index.ts generate \
|
|
103
|
-
--provider google \
|
|
104
|
-
--text "Hello world, this is a test of Google text to speech" \
|
|
105
|
-
--language en-US \
|
|
106
|
-
--speed 1.0 \
|
|
107
|
-
--output ./output.mp3
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
### List Available Voices
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
# ElevenLabs voices
|
|
114
|
-
bun run src/index.ts voices --provider elevenlabs
|
|
115
|
-
|
|
116
|
-
# OpenAI voices
|
|
117
|
-
bun run src/index.ts voices --provider openai
|
|
118
|
-
|
|
119
|
-
# Google voices
|
|
120
|
-
bun run src/index.ts voices --provider google
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Show Help
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
bun run src/index.ts help
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
## CLI Options
|
|
130
|
-
|
|
131
|
-
### Generate Command
|
|
132
|
-
|
|
133
|
-
| Option | Description | Required | Default |
|
|
134
|
-
|--------|-------------|----------|---------|
|
|
135
|
-
| `--provider` | Provider to use (elevenlabs, openai, google) | Yes | - |
|
|
136
|
-
| `--text` | Text to convert to speech | Yes | - |
|
|
137
|
-
| `--output` | Output file path (e.g., ./output.mp3) | Yes | - |
|
|
138
|
-
| `--voice` | Voice to use (provider-specific) | No | Provider default |
|
|
139
|
-
| `--model` | Model to use (provider-specific) | No | Provider default |
|
|
140
|
-
| `--language` | Language code (Google TTS, e.g., en-US) | No | en-US |
|
|
141
|
-
| `--speed` | Speaking speed (0.25-4.0) | No | 1.0 |
|
|
142
|
-
|
|
143
|
-
### Voices Command
|
|
144
|
-
|
|
145
|
-
| Option | Description | Required |
|
|
146
|
-
|--------|-------------|----------|
|
|
147
|
-
| `--provider` | Provider to list voices from | Yes |
|
|
148
|
-
|
|
149
|
-
## Examples
|
|
150
|
-
|
|
151
|
-
### Quick Test with Different Providers
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
# ElevenLabs - Natural voice
|
|
155
|
-
bun run src/index.ts generate \
|
|
156
|
-
--provider elevenlabs \
|
|
157
|
-
--text "The quick brown fox jumps over the lazy dog" \
|
|
158
|
-
--voice rachel \
|
|
159
|
-
--output ./elevenlabs_test.mp3
|
|
160
|
-
|
|
161
|
-
# OpenAI - High quality
|
|
162
|
-
bun run src/index.ts generate \
|
|
163
|
-
--provider openai \
|
|
164
|
-
--text "The quick brown fox jumps over the lazy dog" \
|
|
165
|
-
--voice nova \
|
|
166
|
-
--model tts-1-hd \
|
|
167
|
-
--output ./openai_test.mp3
|
|
168
|
-
|
|
169
|
-
# Google - Multilingual
|
|
170
|
-
bun run src/index.ts generate \
|
|
171
|
-
--provider google \
|
|
172
|
-
--text "The quick brown fox jumps over the lazy dog" \
|
|
173
|
-
--language en-US \
|
|
174
|
-
--output ./google_test.mp3
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### Generate with Custom Speed
|
|
178
|
-
|
|
179
|
-
```bash
|
|
180
|
-
# Slower speech
|
|
181
|
-
bun run src/index.ts generate \
|
|
182
|
-
--provider openai \
|
|
183
|
-
--text "This is spoken slowly" \
|
|
184
|
-
--voice onyx \
|
|
185
|
-
--speed 0.75 \
|
|
186
|
-
--output ./slow.mp3
|
|
187
|
-
|
|
188
|
-
# Faster speech
|
|
189
|
-
bun run src/index.ts generate \
|
|
190
|
-
--provider openai \
|
|
191
|
-
--text "This is spoken quickly" \
|
|
192
|
-
--voice nova \
|
|
193
|
-
--speed 1.5 \
|
|
194
|
-
--output ./fast.mp3
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
## Project Structure
|
|
198
|
-
|
|
199
|
-
```
|
|
200
|
-
audio/
|
|
201
|
-
├── SKILL.md # Skill metadata and description
|
|
202
|
-
├── README.md # This file
|
|
203
|
-
├── package.json # Bun project configuration
|
|
204
|
-
├── tsconfig.json # TypeScript configuration
|
|
205
|
-
├── .env.example # Example environment variables
|
|
206
|
-
├── src/
|
|
207
|
-
│ ├── index.ts # CLI entry point
|
|
208
|
-
│ ├── types.ts # TypeScript type definitions
|
|
209
|
-
│ └── providers/
|
|
210
|
-
│ ├── elevenlabs.ts # ElevenLabs provider
|
|
211
|
-
│ ├── openai.ts # OpenAI TTS provider
|
|
212
|
-
│ └── google.ts # Google TTS provider
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## Development
|
|
216
|
-
|
|
217
|
-
### Run in Development Mode
|
|
218
|
-
|
|
219
|
-
```bash
|
|
220
|
-
bun run dev
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
### Type Checking
|
|
224
|
-
|
|
225
|
-
```bash
|
|
226
|
-
bun run tsc --noEmit
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
## Error Handling
|
|
230
|
-
|
|
231
|
-
The CLI provides clear error messages for common issues:
|
|
232
|
-
|
|
233
|
-
- Missing API keys
|
|
234
|
-
- Invalid providers
|
|
235
|
-
- Voice not found
|
|
236
|
-
- API errors
|
|
237
|
-
- File write errors
|
|
238
|
-
|
|
239
|
-
## Troubleshooting
|
|
240
|
-
|
|
241
|
-
### "API key not found" error
|
|
242
|
-
Make sure you've created a `.env` file with the appropriate API key for the provider you're using.
|
|
243
|
-
|
|
244
|
-
### "Voice not found" error
|
|
245
|
-
Use the `voices` command to list available voices for your chosen provider.
|
|
246
|
-
|
|
247
|
-
### API errors
|
|
248
|
-
Check that your API keys are valid and have sufficient credits/quota.
|
|
249
|
-
|
|
250
|
-
## License
|
|
251
|
-
|
|
252
|
-
MIT
|
|
253
|
-
|
|
254
|
-
## Contributing
|
|
255
|
-
|
|
256
|
-
Contributions are welcome! Please feel free to submit issues or pull requests.
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Audio Generation CLI
|
|
5
|
-
* Unified interface for ElevenLabs, OpenAI TTS, and Google Text-to-Speech
|
|
6
|
-
*/
|
|
7
|
-
import { handleInstallCommand } from '../../_common';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// Handle install/uninstall commands
|
|
11
|
-
const SKILL_META = {
|
|
12
|
-
name: 'audio',
|
|
13
|
-
description: 'Audio generation skill for Claude Code using ElevenLabs, OpenAI TTS, and Google Text-to-Speech',
|
|
14
|
-
version: '1.0.0',
|
|
15
|
-
commands: `Use: audio --help`,
|
|
16
|
-
requiredEnvVars: ['SKILL_API_KEY'],
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
if (await handleInstallCommand(SKILL_META, process.argv.slice(2))) {
|
|
20
|
-
process.exit(0);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
import { MinimaxProvider } from './providers/minimax';
|
|
24
|
-
import { ElevenLabsProvider } from './providers/elevenlabs';
|
|
25
|
-
import { OpenAIProvider } from './providers/openai';
|
|
26
|
-
import { GoogleProvider } from './providers/google';
|
|
27
|
-
import type { AudioProvider, Provider } from './types';
|
|
28
|
-
|
|
29
|
-
// Parse command line arguments
|
|
30
|
-
function parseArgs(): {
|
|
31
|
-
command: string;
|
|
32
|
-
provider?: Provider;
|
|
33
|
-
text?: string;
|
|
34
|
-
voice?: string;
|
|
35
|
-
model?: string;
|
|
36
|
-
output?: string;
|
|
37
|
-
language?: string;
|
|
38
|
-
speed?: number;
|
|
39
|
-
} {
|
|
40
|
-
const args = process.argv.slice(2);
|
|
41
|
-
const parsed: any = { command: args[0] || 'help' };
|
|
42
|
-
|
|
43
|
-
for (let i = 1; i < args.length; i += 2) {
|
|
44
|
-
const key = args[i].replace(/^--/, '');
|
|
45
|
-
const value = args[i + 1];
|
|
46
|
-
parsed[key] = value;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Convert speed to number if present
|
|
50
|
-
if (parsed.speed) {
|
|
51
|
-
parsed.speed = parseFloat(parsed.speed);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return parsed;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Get provider instance
|
|
58
|
-
function getProvider(providerName: Provider): AudioProvider {
|
|
59
|
-
switch (providerName) {
|
|
60
|
-
case 'minimax':
|
|
61
|
-
return new MinimaxProvider();
|
|
62
|
-
case 'elevenlabs':
|
|
63
|
-
return new ElevenLabsProvider();
|
|
64
|
-
case 'openai':
|
|
65
|
-
return new OpenAIProvider();
|
|
66
|
-
case 'google':
|
|
67
|
-
return new GoogleProvider();
|
|
68
|
-
default:
|
|
69
|
-
throw new Error(
|
|
70
|
-
`Unknown provider: ${providerName}. Use: minimax, elevenlabs, openai, or google`
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// Display help information
|
|
76
|
-
function showHelp(): void {
|
|
77
|
-
console.log(`
|
|
78
|
-
Audio Generation CLI - Generate high-quality audio using AI
|
|
79
|
-
|
|
80
|
-
USAGE:
|
|
81
|
-
bun run src/index.ts <command> [options]
|
|
82
|
-
|
|
83
|
-
COMMANDS:
|
|
84
|
-
generate Generate audio from text
|
|
85
|
-
voices List available voices for a provider
|
|
86
|
-
help Show this help message
|
|
87
|
-
|
|
88
|
-
GENERATE OPTIONS:
|
|
89
|
-
--provider <name> Provider to use: elevenlabs, openai, google (required)
|
|
90
|
-
--text <text> Text to convert to speech (required)
|
|
91
|
-
--voice <voice> Voice to use (optional, provider-specific)
|
|
92
|
-
--model <model> Model to use (optional, provider-specific)
|
|
93
|
-
--output <path> Output file path (required, e.g., ./output.mp3)
|
|
94
|
-
--language <code> Language code (optional, for Google TTS, e.g., en-US)
|
|
95
|
-
--speed <number> Speaking speed (optional, 0.25-4.0, default: 1.0)
|
|
96
|
-
|
|
97
|
-
VOICES OPTIONS:
|
|
98
|
-
--provider <name> Provider to list voices from (required)
|
|
99
|
-
|
|
100
|
-
EXAMPLES:
|
|
101
|
-
# Generate audio with ElevenLabs
|
|
102
|
-
bun run src/index.ts generate --provider elevenlabs --text "Hello world" --voice rachel --output ./output.mp3
|
|
103
|
-
|
|
104
|
-
# Generate audio with OpenAI TTS
|
|
105
|
-
bun run src/index.ts generate --provider openai --text "Hello world" --voice nova --output ./output.mp3
|
|
106
|
-
|
|
107
|
-
# Generate audio with Google TTS
|
|
108
|
-
bun run src/index.ts generate --provider google --text "Hello world" --language en-US --output ./output.mp3
|
|
109
|
-
|
|
110
|
-
# List available voices
|
|
111
|
-
bun run src/index.ts voices --provider elevenlabs
|
|
112
|
-
bun run src/index.ts voices --provider openai
|
|
113
|
-
bun run src/index.ts voices --provider google
|
|
114
|
-
|
|
115
|
-
ENVIRONMENT VARIABLES:
|
|
116
|
-
ELEVENLABS_API_KEY API key for ElevenLabs
|
|
117
|
-
OPENAI_API_KEY API key for OpenAI
|
|
118
|
-
GOOGLE_API_KEY API key for Google Cloud TTS
|
|
119
|
-
`);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Main CLI handler
|
|
123
|
-
async function main(): Promise<void> {
|
|
124
|
-
const args = parseArgs();
|
|
125
|
-
|
|
126
|
-
try {
|
|
127
|
-
switch (args.command) {
|
|
128
|
-
case 'generate': {
|
|
129
|
-
if (!args.provider) {
|
|
130
|
-
console.error('Error: --provider is required');
|
|
131
|
-
console.error('Use: bun run src/index.ts help');
|
|
132
|
-
process.exit(1);
|
|
133
|
-
}
|
|
134
|
-
if (!args.text) {
|
|
135
|
-
console.error('Error: --text is required');
|
|
136
|
-
console.error('Use: bun run src/index.ts help');
|
|
137
|
-
process.exit(1);
|
|
138
|
-
}
|
|
139
|
-
if (!args.output) {
|
|
140
|
-
console.error('Error: --output is required');
|
|
141
|
-
console.error('Use: bun run src/index.ts help');
|
|
142
|
-
process.exit(1);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
const provider = getProvider(args.provider as Provider);
|
|
146
|
-
console.log(`Generating audio with ${provider.name}...`);
|
|
147
|
-
|
|
148
|
-
await provider.generate({
|
|
149
|
-
text: args.text,
|
|
150
|
-
voice: args.voice,
|
|
151
|
-
model: args.model,
|
|
152
|
-
output: args.output,
|
|
153
|
-
language: args.language,
|
|
154
|
-
speed: args.speed,
|
|
155
|
-
});
|
|
156
|
-
break;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
case 'voices': {
|
|
160
|
-
if (!args.provider) {
|
|
161
|
-
console.error('Error: --provider is required');
|
|
162
|
-
console.error('Use: bun run src/index.ts help');
|
|
163
|
-
process.exit(1);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
const provider = getProvider(args.provider as Provider);
|
|
167
|
-
console.log(`Fetching voices from ${provider.name}...\n`);
|
|
168
|
-
|
|
169
|
-
const voices = await provider.listVoices();
|
|
170
|
-
|
|
171
|
-
if (voices.length === 0) {
|
|
172
|
-
console.log('No voices available');
|
|
173
|
-
break;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
console.log(`Found ${voices.length} voices:\n`);
|
|
177
|
-
voices.forEach((voice) => {
|
|
178
|
-
console.log(` ${voice.name} (${voice.id})`);
|
|
179
|
-
if (voice.description) {
|
|
180
|
-
console.log(` ${voice.description}`);
|
|
181
|
-
}
|
|
182
|
-
if (voice.category) {
|
|
183
|
-
console.log(` Category: ${voice.category}`);
|
|
184
|
-
}
|
|
185
|
-
console.log('');
|
|
186
|
-
});
|
|
187
|
-
break;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
case 'help':
|
|
191
|
-
showHelp();
|
|
192
|
-
break;
|
|
193
|
-
|
|
194
|
-
default:
|
|
195
|
-
console.error(`Unknown command: ${args.command}`);
|
|
196
|
-
console.error('Use: bun run src/index.ts help');
|
|
197
|
-
process.exit(1);
|
|
198
|
-
}
|
|
199
|
-
} catch (error) {
|
|
200
|
-
console.error('Error:', error instanceof Error ? error.message : String(error));
|
|
201
|
-
process.exit(1);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// Run the CLI
|
|
206
|
-
main();
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
import { executeAndSave, executeSkill, handleInstallCommand } from "../../_common";
|
|
4
|
-
|
|
5
|
-
const SKILL = "audio";
|
|
6
|
-
|
|
7
|
-
const SKILL_META = {
|
|
8
|
-
name: "audio",
|
|
9
|
-
description: "Generate speech and audio using provider-cost AI backends",
|
|
10
|
-
version: "1.0.0",
|
|
11
|
-
commands: "audio generate --provider <provider> --text <text> --output <file>",
|
|
12
|
-
requiredEnvVars: ["SKILL_API_KEY"],
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
if (await handleInstallCommand(SKILL_META, process.argv.slice(2))) {
|
|
16
|
-
process.exit(0);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function parseArgs(): Record<string, string | boolean> {
|
|
20
|
-
const parsed: Record<string, string | boolean> = {};
|
|
21
|
-
const args = process.argv.slice(2);
|
|
22
|
-
for (let i = 0; i < args.length; i++) {
|
|
23
|
-
const arg = args[i];
|
|
24
|
-
if (arg.startsWith("--")) {
|
|
25
|
-
const key = arg.slice(2);
|
|
26
|
-
const next = args[i + 1];
|
|
27
|
-
if (next && !next.startsWith("--")) {
|
|
28
|
-
parsed[key] = next;
|
|
29
|
-
i++;
|
|
30
|
-
} else {
|
|
31
|
-
parsed[key] = true;
|
|
32
|
-
}
|
|
33
|
-
} else if (!parsed.command) {
|
|
34
|
-
parsed.command = arg;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return parsed;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function printHelp() {
|
|
41
|
-
console.log(`Skill Audio CLI
|
|
42
|
-
|
|
43
|
-
USAGE:
|
|
44
|
-
audio generate --provider <provider> --text <text> [options]
|
|
45
|
-
|
|
46
|
-
PROVIDERS:
|
|
47
|
-
openai tts-1, tts-1-hd
|
|
48
|
-
minimax speech-2.8-turbo, speech-2.8-hd
|
|
49
|
-
gemini gemini-2.5-flash-preview-tts, gemini-2.5-pro-preview-tts
|
|
50
|
-
|
|
51
|
-
OPTIONS:
|
|
52
|
-
--model <model> Provider model override
|
|
53
|
-
--text <text> Text to synthesize
|
|
54
|
-
--voice <voice> Provider-specific voice
|
|
55
|
-
--format <format> mp3, wav, or opus
|
|
56
|
-
--output <path> Save generated audio
|
|
57
|
-
|
|
58
|
-
EXAMPLES:
|
|
59
|
-
audio generate --provider openai --text "Welcome to Skills.md" --voice alloy --output ./voice.mp3
|
|
60
|
-
audio generate --provider minimax --text "Fast narration" --output ./voice.mp3`);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
async function main() {
|
|
64
|
-
const args = parseArgs();
|
|
65
|
-
const command = (args.command as string) || "help";
|
|
66
|
-
|
|
67
|
-
if (command === "help" || args.help) {
|
|
68
|
-
printHelp();
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const { command: _command, ...params } = args;
|
|
73
|
-
if (params.output) {
|
|
74
|
-
const success = await executeAndSave({ skill: SKILL, command, ...params });
|
|
75
|
-
process.exit(success ? 0 : 1);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const result = await executeSkill({ skill: SKILL, command, ...params });
|
|
79
|
-
if (result instanceof Blob) {
|
|
80
|
-
console.error("Unexpected binary response. Pass --output to save audio output.");
|
|
81
|
-
process.exit(1);
|
|
82
|
-
}
|
|
83
|
-
if (result.success && result.output) {
|
|
84
|
-
console.log(result.output);
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
console.error(`Error: ${result.error || "Audio generation failed"}`);
|
|
88
|
-
if (result.details) console.error(result.details);
|
|
89
|
-
process.exit(1);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
main().catch((error) => {
|
|
93
|
-
console.error(`Fatal error: ${(error as Error).message}`);
|
|
94
|
-
process.exit(1);
|
|
95
|
-
});
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ElevenLabs Text-to-Speech Provider
|
|
3
|
-
* Supports text-to-speech, voice cloning, and multiple languages
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type {
|
|
7
|
-
AudioProvider,
|
|
8
|
-
GenerateOptions,
|
|
9
|
-
Voice,
|
|
10
|
-
ElevenLabsVoice,
|
|
11
|
-
ElevenLabsGenerateRequest,
|
|
12
|
-
} from '../types';
|
|
13
|
-
|
|
14
|
-
export class ElevenLabsProvider implements AudioProvider {
|
|
15
|
-
name = 'ElevenLabs';
|
|
16
|
-
private apiKey: string;
|
|
17
|
-
private baseUrl = 'https://api.elevenlabs.io/v1';
|
|
18
|
-
|
|
19
|
-
constructor() {
|
|
20
|
-
const apiKey = process.env.ELEVENLABS_API_KEY;
|
|
21
|
-
if (!apiKey) {
|
|
22
|
-
throw new Error('ELEVENLABS_API_KEY environment variable is required');
|
|
23
|
-
}
|
|
24
|
-
this.apiKey = apiKey;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
async generate(options: GenerateOptions): Promise<void> {
|
|
28
|
-
const {
|
|
29
|
-
text,
|
|
30
|
-
voice = 'rachel',
|
|
31
|
-
model = 'eleven_multilingual_v2',
|
|
32
|
-
output,
|
|
33
|
-
} = options;
|
|
34
|
-
|
|
35
|
-
// Get voice ID from voice name
|
|
36
|
-
const voiceId = await this.getVoiceId(voice);
|
|
37
|
-
|
|
38
|
-
const requestBody: ElevenLabsGenerateRequest = {
|
|
39
|
-
text,
|
|
40
|
-
model_id: model,
|
|
41
|
-
voice_settings: {
|
|
42
|
-
stability: 0.5,
|
|
43
|
-
similarity_boost: 0.5,
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
const url = `${this.baseUrl}/text-to-speech/${voiceId}`;
|
|
48
|
-
|
|
49
|
-
const response = await fetch(url, {
|
|
50
|
-
method: 'POST',
|
|
51
|
-
headers: {
|
|
52
|
-
'Accept': 'audio/mpeg',
|
|
53
|
-
'Content-Type': 'application/json',
|
|
54
|
-
'xi-api-key': this.apiKey,
|
|
55
|
-
},
|
|
56
|
-
body: JSON.stringify(requestBody),
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
if (!response.ok) {
|
|
60
|
-
const errorText = await response.text();
|
|
61
|
-
throw new Error(`ElevenLabs API error: ${response.status} - ${errorText}`);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const audioBuffer = await response.arrayBuffer();
|
|
65
|
-
await Bun.write(output, audioBuffer);
|
|
66
|
-
|
|
67
|
-
console.log(`Audio generated successfully: ${output}`);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
async listVoices(): Promise<Voice[]> {
|
|
71
|
-
const url = `${this.baseUrl}/voices`;
|
|
72
|
-
|
|
73
|
-
const response = await fetch(url, {
|
|
74
|
-
headers: {
|
|
75
|
-
'xi-api-key': this.apiKey,
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
if (!response.ok) {
|
|
80
|
-
const errorText = await response.text();
|
|
81
|
-
throw new Error(`ElevenLabs API error: ${response.status} - ${errorText}`);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const data = await response.json() as { voices: ElevenLabsVoice[] };
|
|
85
|
-
|
|
86
|
-
return data.voices.map((voice) => ({
|
|
87
|
-
id: voice.voice_id,
|
|
88
|
-
name: voice.name,
|
|
89
|
-
description: voice.description,
|
|
90
|
-
previewUrl: voice.preview_url,
|
|
91
|
-
category: voice.category,
|
|
92
|
-
}));
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
private async getVoiceId(voiceName: string): Promise<string> {
|
|
96
|
-
// If it's already a voice ID (long alphanumeric string), use it directly
|
|
97
|
-
if (voiceName.length > 20) {
|
|
98
|
-
return voiceName;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Otherwise, look up the voice by name
|
|
102
|
-
const voices = await this.listVoices();
|
|
103
|
-
const voice = voices.find(
|
|
104
|
-
(v) => v.name.toLowerCase() === voiceName.toLowerCase()
|
|
105
|
-
);
|
|
106
|
-
|
|
107
|
-
if (!voice) {
|
|
108
|
-
throw new Error(
|
|
109
|
-
`Voice "${voiceName}" not found. Use "voices" command to list available voices.`
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return voice.id;
|
|
114
|
-
}
|
|
115
|
-
}
|