@vodailoc/kilo-kit-mcp 1.1.0 → 1.1.1
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/.mcp/kilo-kit.codex-windows.toml +5 -0
- package/LICENSE +190 -190
- package/QUICKSTART.md +265 -255
- package/README.md +290 -266
- package/mcp/README.md +29 -5
- package/mcp/dist/server.js +1 -1
- package/mcp/package.json +1 -2
- package/package.json +3 -2
- package/skills/README.md +647 -647
- package/skills/SKILLS_INDEX.md +139 -139
- package/skills/ai-media/ai-multimodal/.env.example +97 -97
- package/skills/ai-media/ai-multimodal/SKILL.md +357 -357
- package/skills/ai-media/ai-multimodal/references/audio-processing.md +373 -373
- package/skills/ai-media/ai-multimodal/references/image-generation.md +558 -558
- package/skills/ai-media/ai-multimodal/references/video-analysis.md +502 -502
- package/skills/ai-media/ai-multimodal/references/vision-understanding.md +483 -483
- package/skills/ai-media/ai-multimodal/scripts/document_converter.py +395 -395
- package/skills/ai-media/ai-multimodal/scripts/gemini_batch_process.py +480 -480
- package/skills/ai-media/ai-multimodal/scripts/media_optimizer.py +506 -506
- package/skills/ai-media/ai-multimodal/scripts/requirements.txt +26 -26
- package/skills/ai-media/ai-multimodal/scripts/tests/requirements.txt +20 -20
- package/skills/ai-media/ai-multimodal/scripts/tests/test_document_converter.py +299 -299
- package/skills/ai-media/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -362
- package/skills/ai-media/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -373
- package/skills/ai-media/media-processing/SKILL.md +358 -358
- package/skills/ai-media/media-processing/references/ffmpeg-encoding.md +358 -358
- package/skills/ai-media/media-processing/references/ffmpeg-filters.md +503 -503
- package/skills/ai-media/media-processing/references/ffmpeg-streaming.md +403 -403
- package/skills/ai-media/media-processing/references/format-compatibility.md +375 -375
- package/skills/ai-media/media-processing/references/imagemagick-batch.md +612 -612
- package/skills/ai-media/media-processing/references/imagemagick-editing.md +623 -623
- package/skills/ai-media/media-processing/scripts/batch_resize.py +342 -342
- package/skills/ai-media/media-processing/scripts/media_convert.py +311 -311
- package/skills/ai-media/media-processing/scripts/requirements.txt +24 -24
- package/skills/ai-media/media-processing/scripts/tests/requirements.txt +2 -2
- package/skills/ai-media/media-processing/scripts/tests/test_batch_resize.py +372 -372
- package/skills/ai-media/media-processing/scripts/tests/test_media_convert.py +259 -259
- package/skills/ai-media/media-processing/scripts/tests/test_video_optimize.py +397 -397
- package/skills/ai-media/media-processing/scripts/video_optimize.py +414 -414
- package/skills/ai-media/screenshot/LICENSE.txt +201 -201
- package/skills/ai-media/screenshot/SKILL.md +267 -267
- package/skills/ai-media/screenshot/agents/openai.yaml +6 -6
- package/skills/ai-media/screenshot/assets/screenshot-small.svg +5 -5
- package/skills/ai-media/screenshot/scripts/ensure_macos_permissions.sh +54 -54
- package/skills/ai-media/screenshot/scripts/macos_display_info.swift +22 -22
- package/skills/ai-media/screenshot/scripts/macos_permissions.swift +40 -40
- package/skills/ai-media/screenshot/scripts/macos_window_info.swift +126 -126
- package/skills/ai-media/screenshot/scripts/take_screenshot.ps1 +163 -163
- package/skills/ai-media/screenshot/scripts/take_screenshot.py +585 -585
- package/skills/ai-media/sora/LICENSE.txt +201 -201
- package/skills/ai-media/sora/SKILL.md +153 -153
- package/skills/ai-media/sora/agents/openai.yaml +6 -6
- package/skills/ai-media/sora/assets/sora-small.svg +4 -4
- package/skills/ai-media/sora/references/cinematic-shots.md +53 -53
- package/skills/ai-media/sora/references/cli.md +248 -248
- package/skills/ai-media/sora/references/codex-network.md +28 -28
- package/skills/ai-media/sora/references/prompting.md +137 -137
- package/skills/ai-media/sora/references/sample-prompts.md +95 -95
- package/skills/ai-media/sora/references/social-ads.md +42 -42
- package/skills/ai-media/sora/references/troubleshooting.md +58 -58
- package/skills/ai-media/sora/references/video-api.md +45 -45
- package/skills/ai-media/sora/scripts/sora.py +970 -970
- package/skills/design/aesthetic/SKILL.md +121 -121
- package/skills/design/aesthetic/assets/design-guideline-template.md +163 -163
- package/skills/design/aesthetic/assets/design-story-template.md +135 -135
- package/skills/design/aesthetic/references/design-principles.md +62 -62
- package/skills/design/aesthetic/references/design-resources.md +75 -75
- package/skills/design/aesthetic/references/micro-interactions.md +53 -53
- package/skills/design/aesthetic/references/storytelling-design.md +50 -50
- package/skills/design/figma/LICENSE.txt +202 -202
- package/skills/design/figma/SKILL.md +42 -42
- package/skills/design/figma/agents/openai.yaml +14 -14
- package/skills/design/figma/assets/figma-small.svg +3 -3
- package/skills/design/figma/assets/icon.svg +28 -28
- package/skills/design/figma/references/figma-mcp-config.md +35 -35
- package/skills/design/figma/references/figma-tools-and-prompts.md +34 -34
- package/skills/design/figma-implement-design/LICENSE.txt +202 -202
- package/skills/design/figma-implement-design/SKILL.md +264 -264
- package/skills/design/figma-implement-design/agents/openai.yaml +14 -14
- package/skills/design/figma-implement-design/assets/figma-small.svg +3 -3
- package/skills/design/figma-implement-design/assets/icon.svg +28 -28
- package/skills/design/frontend-design/SKILL.md +41 -41
- package/skills/design/frontend-design/references/animejs.md +395 -395
- package/skills/design/ui-styling/LICENSE.txt +201 -201
- package/skills/design/ui-styling/SKILL.md +321 -321
- package/skills/design/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -94
- package/skills/design/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Jura-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Lora-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -93
- package/skills/design/ui-styling/references/canvas-design-system.md +320 -320
- package/skills/design/ui-styling/references/shadcn-accessibility.md +471 -471
- package/skills/design/ui-styling/references/shadcn-components.md +424 -424
- package/skills/design/ui-styling/references/shadcn-theming.md +373 -373
- package/skills/design/ui-styling/references/tailwind-customization.md +483 -483
- package/skills/design/ui-styling/references/tailwind-responsive.md +382 -382
- package/skills/design/ui-styling/references/tailwind-utilities.md +455 -455
- package/skills/design/ui-styling/scripts/requirements.txt +17 -17
- package/skills/design/ui-styling/scripts/shadcn_add.py +292 -292
- package/skills/design/ui-styling/scripts/tailwind_config_gen.py +456 -456
- package/skills/design/ui-styling/scripts/tests/requirements.txt +3 -3
- package/skills/design/ui-styling/scripts/tests/test_shadcn_add.py +266 -266
- package/skills/design/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -336
- package/skills/engineering/aspnet-core/LICENSE.txt +201 -201
- package/skills/engineering/aspnet-core/SKILL.md +61 -61
- package/skills/engineering/aspnet-core/agents/openai.yaml +5 -5
- package/skills/engineering/aspnet-core/references/_sections.md +40 -40
- package/skills/engineering/aspnet-core/references/apis-minimal-and-controllers.md +81 -81
- package/skills/engineering/aspnet-core/references/data-state-and-services.md +69 -69
- package/skills/engineering/aspnet-core/references/program-and-pipeline.md +103 -103
- package/skills/engineering/aspnet-core/references/realtime-grpc-and-background-work.md +58 -58
- package/skills/engineering/aspnet-core/references/security-and-identity.md +75 -75
- package/skills/engineering/aspnet-core/references/source-map.md +43 -43
- package/skills/engineering/aspnet-core/references/stack-selection.md +63 -63
- package/skills/engineering/aspnet-core/references/testing-performance-and-operations.md +92 -92
- package/skills/engineering/aspnet-core/references/ui-blazor.md +53 -53
- package/skills/engineering/aspnet-core/references/ui-mvc.md +56 -56
- package/skills/engineering/aspnet-core/references/ui-razor-pages.md +55 -55
- package/skills/engineering/aspnet-core/references/versioning-and-upgrades.md +51 -51
- package/skills/engineering/backend-development/SKILL.md +95 -95
- package/skills/engineering/backend-development/references/backend-api-design.md +495 -495
- package/skills/engineering/backend-development/references/backend-architecture.md +454 -454
- package/skills/engineering/backend-development/references/backend-authentication.md +338 -338
- package/skills/engineering/backend-development/references/backend-code-quality.md +659 -659
- package/skills/engineering/backend-development/references/backend-debugging.md +904 -904
- package/skills/engineering/backend-development/references/backend-devops.md +494 -494
- package/skills/engineering/backend-development/references/backend-mindset.md +387 -387
- package/skills/engineering/backend-development/references/backend-performance.md +397 -397
- package/skills/engineering/backend-development/references/backend-security.md +290 -290
- package/skills/engineering/backend-development/references/backend-technologies.md +256 -256
- package/skills/engineering/backend-development/references/backend-testing.md +429 -429
- package/skills/engineering/better-auth/SKILL.md +204 -204
- package/skills/engineering/better-auth/references/advanced-features.md +553 -553
- package/skills/engineering/better-auth/references/database-integration.md +577 -577
- package/skills/engineering/better-auth/references/email-password-auth.md +416 -416
- package/skills/engineering/better-auth/references/oauth-providers.md +430 -430
- package/skills/engineering/better-auth/scripts/better_auth_init.py +521 -521
- package/skills/engineering/better-auth/scripts/requirements.txt +15 -15
- package/skills/engineering/better-auth/scripts/tests/test_better_auth_init.py +421 -421
- package/skills/engineering/code-review/SKILL.md +140 -140
- package/skills/engineering/code-review/references/code-review-reception.md +208 -208
- package/skills/engineering/code-review/references/requesting-code-review.md +104 -104
- package/skills/engineering/code-review/references/verification-before-completion.md +138 -138
- package/skills/engineering/context-engineering/SKILL.md +86 -86
- package/skills/engineering/context-engineering/references/context-compression.md +84 -84
- package/skills/engineering/context-engineering/references/context-degradation.md +93 -93
- package/skills/engineering/context-engineering/references/context-fundamentals.md +75 -75
- package/skills/engineering/context-engineering/references/context-optimization.md +82 -82
- package/skills/engineering/context-engineering/references/evaluation.md +89 -89
- package/skills/engineering/context-engineering/references/memory-systems.md +88 -88
- package/skills/engineering/context-engineering/references/multi-agent-patterns.md +90 -90
- package/skills/engineering/context-engineering/references/project-development.md +97 -97
- package/skills/engineering/context-engineering/references/tool-design.md +86 -86
- package/skills/engineering/context-engineering/scripts/compression_evaluator.py +329 -329
- package/skills/engineering/context-engineering/scripts/context_analyzer.py +294 -294
- package/skills/engineering/databases/SKILL.md +232 -232
- package/skills/engineering/databases/references/mongodb-aggregation.md +447 -447
- package/skills/engineering/databases/references/mongodb-atlas.md +465 -465
- package/skills/engineering/databases/references/mongodb-crud.md +408 -408
- package/skills/engineering/databases/references/mongodb-indexing.md +442 -442
- package/skills/engineering/databases/references/postgresql-administration.md +594 -594
- package/skills/engineering/databases/references/postgresql-performance.md +527 -527
- package/skills/engineering/databases/references/postgresql-psql-cli.md +467 -467
- package/skills/engineering/databases/references/postgresql-queries.md +475 -475
- package/skills/engineering/databases/scripts/db_backup.py +502 -502
- package/skills/engineering/databases/scripts/db_migrate.py +414 -414
- package/skills/engineering/databases/scripts/db_performance_check.py +444 -444
- package/skills/engineering/databases/scripts/requirements.txt +20 -20
- package/skills/engineering/databases/scripts/tests/requirements.txt +4 -4
- package/skills/engineering/databases/scripts/tests/test_db_backup.py +340 -340
- package/skills/engineering/databases/scripts/tests/test_db_migrate.py +277 -277
- package/skills/engineering/databases/scripts/tests/test_db_performance_check.py +370 -370
- package/skills/engineering/diagnose/SKILL.md +117 -117
- package/skills/engineering/diagnose/scripts/hitl-loop.template.sh +41 -41
- package/skills/engineering/docs-seeker/SKILL.md +207 -207
- package/skills/engineering/docs-seeker/WORKFLOWS.md +505 -505
- package/skills/engineering/docs-seeker/references/best-practices.md +632 -632
- package/skills/engineering/docs-seeker/references/documentation-sources.md +461 -461
- package/skills/engineering/docs-seeker/references/error-handling.md +621 -621
- package/skills/engineering/docs-seeker/references/limitations.md +821 -821
- package/skills/engineering/docs-seeker/references/performance.md +574 -574
- package/skills/engineering/docs-seeker/references/tool-selection.md +262 -262
- package/skills/engineering/frontend-development/SKILL.md +398 -398
- package/skills/engineering/frontend-development/resources/common-patterns.md +330 -330
- package/skills/engineering/frontend-development/resources/complete-examples.md +871 -871
- package/skills/engineering/frontend-development/resources/component-patterns.md +501 -501
- package/skills/engineering/frontend-development/resources/data-fetching.md +766 -766
- package/skills/engineering/frontend-development/resources/file-organization.md +501 -501
- package/skills/engineering/frontend-development/resources/loading-and-error-states.md +500 -500
- package/skills/engineering/frontend-development/resources/performance.md +405 -405
- package/skills/engineering/frontend-development/resources/routing-guide.md +363 -363
- package/skills/engineering/frontend-development/resources/styling-guide.md +427 -427
- package/skills/engineering/frontend-development/resources/typescript-standards.md +417 -417
- package/skills/engineering/improve-codebase-architecture/DEEPENING.md +37 -37
- package/skills/engineering/improve-codebase-architecture/INTERFACE-DESIGN.md +44 -44
- package/skills/engineering/improve-codebase-architecture/LANGUAGE.md +53 -53
- package/skills/engineering/improve-codebase-architecture/SKILL.md +71 -71
- package/skills/engineering/openai-docs/LICENSE.txt +201 -201
- package/skills/engineering/openai-docs/SKILL.md +69 -69
- package/skills/engineering/openai-docs/agents/openai.yaml +14 -14
- package/skills/engineering/openai-docs/assets/openai-small.svg +3 -3
- package/skills/engineering/openai-docs/references/gpt-5p4-prompting-guide.md +433 -433
- package/skills/engineering/openai-docs/references/latest-model.md +35 -35
- package/skills/engineering/openai-docs/references/upgrading-to-gpt-5p4.md +164 -164
- package/skills/engineering/playwright/LICENSE.txt +201 -201
- package/skills/engineering/playwright/NOTICE.txt +14 -14
- package/skills/engineering/playwright/SKILL.md +147 -147
- package/skills/engineering/playwright/agents/openai.yaml +6 -6
- package/skills/engineering/playwright/assets/playwright-small.svg +3 -3
- package/skills/engineering/playwright/references/cli.md +116 -116
- package/skills/engineering/playwright/references/workflows.md +95 -95
- package/skills/engineering/playwright/scripts/playwright_cli.sh +25 -25
- package/skills/engineering/playwright-interactive/LICENSE.txt +201 -201
- package/skills/engineering/playwright-interactive/NOTICE.txt +13 -13
- package/skills/engineering/playwright-interactive/SKILL.md +689 -689
- package/skills/engineering/playwright-interactive/agents/openai.yaml +6 -6
- package/skills/engineering/playwright-interactive/assets/playwright-small.svg +3 -3
- package/skills/engineering/render-deploy/LICENSE.txt +201 -201
- package/skills/engineering/render-deploy/SKILL.md +479 -479
- package/skills/engineering/render-deploy/agents/openai.yaml +14 -14
- package/skills/engineering/render-deploy/assets/docker.yaml +62 -62
- package/skills/engineering/render-deploy/assets/go-api.yaml +35 -35
- package/skills/engineering/render-deploy/assets/nextjs-postgres.yaml +35 -35
- package/skills/engineering/render-deploy/assets/node-express.yaml +25 -25
- package/skills/engineering/render-deploy/assets/python-django.yaml +89 -89
- package/skills/engineering/render-deploy/assets/render-small.svg +3 -3
- package/skills/engineering/render-deploy/assets/static-site.yaml +54 -54
- package/skills/engineering/render-deploy/references/blueprint-spec.md +718 -718
- package/skills/engineering/render-deploy/references/codebase-analysis.md +49 -49
- package/skills/engineering/render-deploy/references/configuration-guide.md +603 -603
- package/skills/engineering/render-deploy/references/deployment-details.md +224 -224
- package/skills/engineering/render-deploy/references/direct-creation.md +113 -113
- package/skills/engineering/render-deploy/references/error-patterns.md +13 -13
- package/skills/engineering/render-deploy/references/post-deploy-checks.md +36 -36
- package/skills/engineering/render-deploy/references/runtimes.md +473 -473
- package/skills/engineering/render-deploy/references/service-types.md +450 -450
- package/skills/engineering/render-deploy/references/troubleshooting-basics.md +36 -36
- package/skills/engineering/repomix/SKILL.md +215 -215
- package/skills/engineering/repomix/references/configuration.md +211 -211
- package/skills/engineering/repomix/references/usage-patterns.md +232 -232
- package/skills/engineering/repomix/scripts/README.md +179 -179
- package/skills/engineering/repomix/scripts/repomix_batch.py +455 -455
- package/skills/engineering/repomix/scripts/repos.example.json +15 -15
- package/skills/engineering/repomix/scripts/requirements.txt +15 -15
- package/skills/engineering/repomix/scripts/tests/test_repomix_batch.py +531 -531
- package/skills/engineering/setup-matt-pocock-skills/SKILL.md +121 -121
- package/skills/engineering/setup-matt-pocock-skills/domain.md +51 -51
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-github.md +22 -22
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +23 -23
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-local.md +19 -19
- package/skills/engineering/setup-matt-pocock-skills/triage-labels.md +15 -15
- package/skills/engineering/shopify/README.md +66 -66
- package/skills/engineering/shopify/SKILL.md +319 -319
- package/skills/engineering/shopify/references/app-development.md +470 -470
- package/skills/engineering/shopify/references/extensions.md +493 -493
- package/skills/engineering/shopify/references/themes.md +498 -498
- package/skills/engineering/shopify/scripts/requirements.txt +19 -19
- package/skills/engineering/shopify/scripts/shopify_init.py +423 -423
- package/skills/engineering/shopify/scripts/tests/test_shopify_init.py +385 -385
- package/skills/engineering/tdd/SKILL.md +109 -109
- package/skills/engineering/tdd/deep-modules.md +33 -33
- package/skills/engineering/tdd/interface-design.md +31 -31
- package/skills/engineering/tdd/mocking.md +59 -59
- package/skills/engineering/tdd/refactoring.md +10 -10
- package/skills/engineering/tdd/tests.md +61 -61
- package/skills/engineering/to-issues/SKILL.md +81 -81
- package/skills/engineering/to-prd/SKILL.md +74 -74
- package/skills/engineering/triage/AGENT-BRIEF.md +168 -168
- package/skills/engineering/triage/OUT-OF-SCOPE.md +101 -101
- package/skills/engineering/triage/SKILL.md +103 -103
- package/skills/engineering/web-frameworks/SKILL.md +324 -324
- package/skills/engineering/web-frameworks/references/nextjs-app-router.md +465 -465
- package/skills/engineering/web-frameworks/references/nextjs-data-fetching.md +459 -459
- package/skills/engineering/web-frameworks/references/nextjs-optimization.md +511 -511
- package/skills/engineering/web-frameworks/references/nextjs-server-components.md +495 -495
- package/skills/engineering/web-frameworks/references/remix-icon-integration.md +603 -603
- package/skills/engineering/web-frameworks/references/turborepo-caching.md +551 -551
- package/skills/engineering/web-frameworks/references/turborepo-pipelines.md +517 -517
- package/skills/engineering/web-frameworks/references/turborepo-setup.md +542 -542
- package/skills/engineering/web-frameworks/scripts/nextjs_init.py +547 -547
- package/skills/engineering/web-frameworks/scripts/requirements.txt +16 -16
- package/skills/engineering/web-frameworks/scripts/tests/requirements.txt +3 -3
- package/skills/engineering/web-frameworks/scripts/tests/test_nextjs_init.py +319 -319
- package/skills/engineering/web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -374
- package/skills/engineering/web-frameworks/scripts/turborepo_migrate.py +394 -394
- package/skills/engineering/write-a-skill/SKILL.md +117 -117
- package/skills/kilo-kit/SKILL.md +346 -346
- package/skills/kilo-kit/_template/SKILL.md +185 -185
- package/skills/kilo-kit/debugging/root-cause/SKILL.md +360 -360
- package/skills/kilo-kit/debugging/systematic/SKILL.md +339 -339
- package/skills/kilo-kit/debugging/verification/SKILL.md +424 -424
- package/skills/kilo-kit/development/backend/SKILL.md +540 -540
- package/skills/kilo-kit/development/security/SKILL.md +529 -529
- package/skills/kilo-kit/quality/code-review/SKILL.md +297 -297
- package/skills/kilo-kit/quality/testing/SKILL.md +540 -540
- package/skills/kilo-kit/references/output-formats.md +204 -204
- package/skills/kilo-kit/references/patterns.md +156 -156
- package/skills/kilo-kit/references/performance-benchmarks.md +90 -90
- package/skills/operations/chrome-devtools/SKILL.md +392 -392
- package/skills/operations/chrome-devtools/references/cdp-domains.md +694 -694
- package/skills/operations/chrome-devtools/references/performance-guide.md +940 -940
- package/skills/operations/chrome-devtools/references/puppeteer-reference.md +953 -953
- package/skills/operations/chrome-devtools/scripts/PERSISTENT-BROWSER.md +107 -107
- package/skills/operations/chrome-devtools/scripts/README.md +213 -213
- package/skills/operations/chrome-devtools/scripts/__tests__/selector.test.js +210 -210
- package/skills/operations/chrome-devtools/scripts/click.js +79 -79
- package/skills/operations/chrome-devtools/scripts/close-persistent.js +36 -36
- package/skills/operations/chrome-devtools/scripts/console.js +75 -75
- package/skills/operations/chrome-devtools/scripts/evaluate.js +49 -49
- package/skills/operations/chrome-devtools/scripts/fill.js +72 -72
- package/skills/operations/chrome-devtools/scripts/install-deps.sh +181 -181
- package/skills/operations/chrome-devtools/scripts/install.sh +83 -83
- package/skills/operations/chrome-devtools/scripts/launch-persistent.js +71 -71
- package/skills/operations/chrome-devtools/scripts/lib/browser.js +144 -144
- package/skills/operations/chrome-devtools/scripts/lib/selector.js +178 -178
- package/skills/operations/chrome-devtools/scripts/navigate.js +46 -46
- package/skills/operations/chrome-devtools/scripts/network.js +102 -102
- package/skills/operations/chrome-devtools/scripts/package-lock.json +1206 -1206
- package/skills/operations/chrome-devtools/scripts/package.json +15 -15
- package/skills/operations/chrome-devtools/scripts/performance.js +145 -145
- package/skills/operations/chrome-devtools/scripts/screenshot.js +180 -180
- package/skills/operations/chrome-devtools/scripts/snapshot.js +131 -131
- package/skills/operations/devops/.env.example +76 -76
- package/skills/operations/devops/SKILL.md +285 -285
- package/skills/operations/devops/references/browser-rendering.md +305 -305
- package/skills/operations/devops/references/cloudflare-d1-kv.md +123 -123
- package/skills/operations/devops/references/cloudflare-platform.md +271 -271
- package/skills/operations/devops/references/cloudflare-r2-storage.md +280 -280
- package/skills/operations/devops/references/cloudflare-workers-advanced.md +312 -312
- package/skills/operations/devops/references/cloudflare-workers-apis.md +309 -309
- package/skills/operations/devops/references/cloudflare-workers-basics.md +418 -418
- package/skills/operations/devops/references/docker-basics.md +297 -297
- package/skills/operations/devops/references/docker-compose.md +292 -292
- package/skills/operations/devops/references/gcloud-platform.md +297 -297
- package/skills/operations/devops/references/gcloud-services.md +304 -304
- package/skills/operations/devops/scripts/cloudflare_deploy.py +269 -269
- package/skills/operations/devops/scripts/docker_optimize.py +320 -320
- package/skills/operations/devops/scripts/requirements.txt +20 -20
- package/skills/operations/devops/scripts/tests/requirements.txt +3 -3
- package/skills/operations/devops/scripts/tests/test_cloudflare_deploy.py +285 -285
- package/skills/operations/devops/scripts/tests/test_docker_optimize.py +436 -436
- package/skills/operations/mcp-builder/LICENSE.txt +201 -201
- package/skills/operations/mcp-builder/SKILL.md +328 -328
- package/skills/operations/mcp-builder/reference/evaluation.md +601 -601
- package/skills/operations/mcp-builder/reference/mcp_best_practices.md +915 -915
- package/skills/operations/mcp-builder/reference/node_mcp_server.md +915 -915
- package/skills/operations/mcp-builder/reference/python_mcp_server.md +751 -751
- package/skills/operations/mcp-builder/scripts/connections.py +151 -151
- package/skills/operations/mcp-builder/scripts/evaluation.py +373 -373
- package/skills/operations/mcp-builder/scripts/example_evaluation.xml +22 -22
- package/skills/operations/mcp-builder/scripts/requirements.txt +2 -2
- package/skills/operations/mcp-management/README.md +219 -219
- package/skills/operations/mcp-management/SKILL.md +175 -175
- package/skills/operations/mcp-management/assets/tools.json +3043 -3043
- package/skills/operations/mcp-management/references/configuration.md +114 -114
- package/skills/operations/mcp-management/references/gemini-cli-integration.md +201 -201
- package/skills/operations/mcp-management/references/mcp-protocol.md +116 -116
- package/skills/operations/mcp-management/scripts/.env.example +10 -10
- package/skills/operations/mcp-management/scripts/cli.ts +155 -155
- package/skills/operations/mcp-management/scripts/dist/analyze-tools.js +70 -70
- package/skills/operations/mcp-management/scripts/dist/cli.js +131 -131
- package/skills/operations/mcp-management/scripts/dist/mcp-client.js +115 -115
- package/skills/operations/mcp-management/scripts/mcp-client.ts +163 -163
- package/skills/operations/mcp-management/scripts/package.json +18 -18
- package/skills/operations/mcp-management/scripts/tsconfig.json +15 -15
- package/skills/problem-solving/collision-zone-thinking/SKILL.md +62 -62
- package/skills/problem-solving/defense-in-depth/SKILL.md +130 -130
- package/skills/problem-solving/inversion-exercise/SKILL.md +58 -58
- package/skills/problem-solving/meta-pattern-recognition/SKILL.md +54 -54
- package/skills/problem-solving/root-cause-tracing/SKILL.md +177 -177
- package/skills/problem-solving/root-cause-tracing/find-polluter.sh +63 -63
- package/skills/problem-solving/scale-game/SKILL.md +63 -63
- package/skills/problem-solving/sequential-thinking/README.md +118 -118
- package/skills/problem-solving/sequential-thinking/SKILL.md +93 -93
- package/skills/problem-solving/sequential-thinking/references/advanced.md +122 -122
- package/skills/problem-solving/sequential-thinking/references/examples.md +274 -274
- package/skills/problem-solving/simplification-cascades/SKILL.md +76 -76
- package/skills/problem-solving/when-stuck/SKILL.md +88 -88
- package/skills/productivity/caveman/SKILL.md +49 -49
- package/skills/productivity/grill-me/SKILL.md +10 -10
- package/skills/productivity/grill-with-docs/ADR-FORMAT.md +47 -47
- package/skills/productivity/grill-with-docs/CONTEXT-FORMAT.md +77 -77
- package/skills/productivity/grill-with-docs/SKILL.md +88 -88
- package/skills/productivity/writing-skills/graphviz-conventions.dot +171 -171
- package/skills/productivity/zoom-out/SKILL.md +7 -7
- package/skills/writing-docs/doc/LICENSE.txt +201 -201
- package/skills/writing-docs/doc/SKILL.md +80 -80
- package/skills/writing-docs/doc/agents/openai.yaml +6 -6
- package/skills/writing-docs/doc/assets/doc-small.svg +3 -3
- package/skills/writing-docs/doc/scripts/render_docx.py +296 -296
- package/skills/writing-docs/docx/LICENSE.txt +30 -30
- package/skills/writing-docs/docx/SKILL.md +196 -196
- package/skills/writing-docs/docx/docx-js.md +349 -349
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
- package/skills/writing-docs/docx/ooxml/schemas/mce/mc.xsd +75 -75
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -560
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -67
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -14
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -20
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -13
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -8
- package/skills/writing-docs/docx/ooxml/scripts/pack.py +159 -159
- package/skills/writing-docs/docx/ooxml/scripts/unpack.py +29 -29
- package/skills/writing-docs/docx/ooxml/scripts/validate.py +69 -69
- package/skills/writing-docs/docx/ooxml/scripts/validation/__init__.py +15 -15
- package/skills/writing-docs/docx/ooxml/scripts/validation/base.py +951 -951
- package/skills/writing-docs/docx/ooxml/scripts/validation/docx.py +274 -274
- package/skills/writing-docs/docx/ooxml/scripts/validation/pptx.py +315 -315
- package/skills/writing-docs/docx/ooxml/scripts/validation/redlining.py +279 -279
- package/skills/writing-docs/docx/ooxml.md +609 -609
- package/skills/writing-docs/docx/scripts/__init__.py +1 -1
- package/skills/writing-docs/docx/scripts/document.py +1276 -1276
- package/skills/writing-docs/docx/scripts/templates/comments.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/commentsExtended.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/commentsExtensible.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/commentsIds.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/people.xml +2 -2
- package/skills/writing-docs/docx/scripts/utilities.py +374 -374
- package/skills/writing-docs/mermaidjs-v11/SKILL.md +115 -115
- package/skills/writing-docs/mermaidjs-v11/references/cli-usage.md +228 -228
- package/skills/writing-docs/mermaidjs-v11/references/configuration.md +232 -232
- package/skills/writing-docs/mermaidjs-v11/references/diagram-types.md +315 -315
- package/skills/writing-docs/mermaidjs-v11/references/examples.md +344 -344
- package/skills/writing-docs/mermaidjs-v11/references/integration.md +310 -310
- package/skills/writing-docs/pdf/LICENSE.txt +30 -30
- package/skills/writing-docs/pdf/SKILL.md +294 -294
- package/skills/writing-docs/pdf/forms.md +205 -205
- package/skills/writing-docs/pdf/reference.md +611 -611
- package/skills/writing-docs/pdf/scripts/check_bounding_boxes.py +70 -70
- package/skills/writing-docs/pdf/scripts/check_bounding_boxes_test.py +226 -226
- package/skills/writing-docs/pdf/scripts/check_fillable_fields.py +12 -12
- package/skills/writing-docs/pdf/scripts/convert_pdf_to_images.py +35 -35
- package/skills/writing-docs/pdf/scripts/create_validation_image.py +41 -41
- package/skills/writing-docs/pdf/scripts/extract_form_field_info.py +152 -152
- package/skills/writing-docs/pdf/scripts/fill_fillable_fields.py +114 -114
- package/skills/writing-docs/pdf/scripts/fill_pdf_form_with_annotations.py +107 -107
- package/skills/writing-docs/pptx/LICENSE.txt +30 -30
- package/skills/writing-docs/pptx/SKILL.md +483 -483
- package/skills/writing-docs/pptx/html2pptx.md +624 -624
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
- package/skills/writing-docs/pptx/ooxml/schemas/mce/mc.xsd +75 -75
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -560
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -67
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -14
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -20
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -13
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -8
- package/skills/writing-docs/pptx/ooxml/scripts/pack.py +159 -159
- package/skills/writing-docs/pptx/ooxml/scripts/unpack.py +29 -29
- package/skills/writing-docs/pptx/ooxml/scripts/validate.py +69 -69
- package/skills/writing-docs/pptx/ooxml/scripts/validation/__init__.py +15 -15
- package/skills/writing-docs/pptx/ooxml/scripts/validation/base.py +951 -951
- package/skills/writing-docs/pptx/ooxml/scripts/validation/docx.py +274 -274
- package/skills/writing-docs/pptx/ooxml/scripts/validation/pptx.py +315 -315
- package/skills/writing-docs/pptx/ooxml/scripts/validation/redlining.py +279 -279
- package/skills/writing-docs/pptx/ooxml.md +426 -426
- package/skills/writing-docs/pptx/scripts/html2pptx.js +978 -978
- package/skills/writing-docs/pptx/scripts/inventory.py +1020 -1020
- package/skills/writing-docs/pptx/scripts/rearrange.py +231 -231
- package/skills/writing-docs/pptx/scripts/replace.py +385 -385
- package/skills/writing-docs/pptx/scripts/thumbnail.py +450 -450
- package/skills/writing-docs/slides/LICENSE.txt +201 -201
- package/skills/writing-docs/slides/SKILL.md +71 -71
- package/skills/writing-docs/slides/agents/openai.yaml +6 -6
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/code.js +104 -104
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/image.js +333 -333
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/index.js +33 -33
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/latex.js +51 -51
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout.js +643 -643
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout_builders.js +358 -358
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/svg.js +36 -36
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/text.js +789 -789
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/util.js +24 -24
- package/skills/writing-docs/slides/assets/slides-small.svg +3 -3
- package/skills/writing-docs/slides/references/pptxgenjs-helpers.md +61 -61
- package/skills/writing-docs/slides/scripts/create_montage.py +300 -300
- package/skills/writing-docs/slides/scripts/detect_font.py +873 -873
- package/skills/writing-docs/slides/scripts/ensure_raster_image.py +202 -202
- package/skills/writing-docs/slides/scripts/render_slides.py +273 -273
- package/skills/writing-docs/slides/scripts/slides_test.py +201 -201
- package/skills/writing-docs/template-skill/SKILL.md +26 -26
- package/skills/writing-docs/xlsx/LICENSE.txt +30 -30
- package/skills/writing-docs/xlsx/SKILL.md +288 -288
- package/skills/writing-docs/xlsx/recalc.py +177 -177
- package/src/core/KILO_MASTER.md +448 -448
- package/src/tools/validate-skill.js +421 -421
|
@@ -1,558 +1,558 @@
|
|
|
1
|
-
# Image Generation Reference
|
|
2
|
-
|
|
3
|
-
Comprehensive guide for image creation, editing, and composition using Gemini API.
|
|
4
|
-
|
|
5
|
-
## Core Capabilities
|
|
6
|
-
|
|
7
|
-
- **Text-to-Image**: Generate images from text prompts
|
|
8
|
-
- **Image Editing**: Modify existing images with text instructions
|
|
9
|
-
- **Multi-Image Composition**: Combine up to 3 images
|
|
10
|
-
- **Iterative Refinement**: Refine images conversationally
|
|
11
|
-
- **Aspect Ratios**: Multiple formats (1:1, 16:9, 9:16, 4:3, 3:4)
|
|
12
|
-
- **Style Control**: Control artistic style and quality
|
|
13
|
-
- **Text in Images**: Limited text rendering (max 25 chars)
|
|
14
|
-
|
|
15
|
-
## Model
|
|
16
|
-
|
|
17
|
-
**gemini-2.5-flash-image** - Specialized for image generation
|
|
18
|
-
- Input tokens: 65,536
|
|
19
|
-
- Output tokens: 32,768
|
|
20
|
-
- Knowledge cutoff: June 2025
|
|
21
|
-
- Supports: Text and image inputs, image outputs
|
|
22
|
-
|
|
23
|
-
## Quick Start
|
|
24
|
-
|
|
25
|
-
### Basic Generation
|
|
26
|
-
|
|
27
|
-
```python
|
|
28
|
-
from google import genai
|
|
29
|
-
from google.genai import types
|
|
30
|
-
import os
|
|
31
|
-
|
|
32
|
-
client = genai.Client(api_key=os.getenv('GEMINI_API_KEY'))
|
|
33
|
-
|
|
34
|
-
response = client.models.generate_content(
|
|
35
|
-
model='gemini-2.5-flash-image',
|
|
36
|
-
contents='A serene mountain landscape at sunset with snow-capped peaks',
|
|
37
|
-
config=types.GenerateContentConfig(
|
|
38
|
-
response_modalities=['image'],
|
|
39
|
-
aspect_ratio='16:9'
|
|
40
|
-
)
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
# Save image
|
|
44
|
-
for i, part in enumerate(response.candidates[0].content.parts):
|
|
45
|
-
if part.inline_data:
|
|
46
|
-
with open(f'output-{i}.png', 'wb') as f:
|
|
47
|
-
f.write(part.inline_data.data)
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Aspect Ratios
|
|
51
|
-
|
|
52
|
-
| Ratio | Resolution | Use Case | Token Cost |
|
|
53
|
-
|-------|-----------|----------|------------|
|
|
54
|
-
| 1:1 | 1024×1024 | Social media, avatars | 1290 |
|
|
55
|
-
| 16:9 | 1344×768 | Landscapes, banners | 1290 |
|
|
56
|
-
| 9:16 | 768×1344 | Mobile, portraits | 1290 |
|
|
57
|
-
| 4:3 | 1152×896 | Traditional media | 1290 |
|
|
58
|
-
| 3:4 | 896×1152 | Vertical posters | 1290 |
|
|
59
|
-
|
|
60
|
-
All ratios cost the same: 1,290 tokens per image.
|
|
61
|
-
|
|
62
|
-
## Response Modalities
|
|
63
|
-
|
|
64
|
-
### Image Only
|
|
65
|
-
|
|
66
|
-
```python
|
|
67
|
-
config = types.GenerateContentConfig(
|
|
68
|
-
response_modalities=['image'],
|
|
69
|
-
aspect_ratio='1:1'
|
|
70
|
-
)
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Text Only (No Image)
|
|
74
|
-
|
|
75
|
-
```python
|
|
76
|
-
config = types.GenerateContentConfig(
|
|
77
|
-
response_modalities=['text']
|
|
78
|
-
)
|
|
79
|
-
# Returns text description instead of generating image
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Both Image and Text
|
|
83
|
-
|
|
84
|
-
```python
|
|
85
|
-
config = types.GenerateContentConfig(
|
|
86
|
-
response_modalities=['image', 'text'],
|
|
87
|
-
aspect_ratio='16:9'
|
|
88
|
-
)
|
|
89
|
-
# Returns both generated image and description
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Image Editing
|
|
93
|
-
|
|
94
|
-
### Modify Existing Image
|
|
95
|
-
|
|
96
|
-
```python
|
|
97
|
-
import PIL.Image
|
|
98
|
-
|
|
99
|
-
# Load original
|
|
100
|
-
img = PIL.Image.open('original.png')
|
|
101
|
-
|
|
102
|
-
# Edit with instructions
|
|
103
|
-
response = client.models.generate_content(
|
|
104
|
-
model='gemini-2.5-flash-image',
|
|
105
|
-
contents=[
|
|
106
|
-
'Add a red balloon floating in the sky',
|
|
107
|
-
img
|
|
108
|
-
],
|
|
109
|
-
config=types.GenerateContentConfig(
|
|
110
|
-
response_modalities=['image'],
|
|
111
|
-
aspect_ratio='16:9'
|
|
112
|
-
)
|
|
113
|
-
)
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Style Transfer
|
|
117
|
-
|
|
118
|
-
```python
|
|
119
|
-
img = PIL.Image.open('photo.jpg')
|
|
120
|
-
|
|
121
|
-
response = client.models.generate_content(
|
|
122
|
-
model='gemini-2.5-flash-image',
|
|
123
|
-
contents=[
|
|
124
|
-
'Transform this into an oil painting style',
|
|
125
|
-
img
|
|
126
|
-
]
|
|
127
|
-
)
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Object Addition/Removal
|
|
131
|
-
|
|
132
|
-
```python
|
|
133
|
-
# Add object
|
|
134
|
-
response = client.models.generate_content(
|
|
135
|
-
model='gemini-2.5-flash-image',
|
|
136
|
-
contents=[
|
|
137
|
-
'Add a vintage car parked on the street',
|
|
138
|
-
img
|
|
139
|
-
]
|
|
140
|
-
)
|
|
141
|
-
|
|
142
|
-
# Remove object
|
|
143
|
-
response = client.models.generate_content(
|
|
144
|
-
model='gemini-2.5-flash-image',
|
|
145
|
-
contents=[
|
|
146
|
-
'Remove the person on the left side',
|
|
147
|
-
img
|
|
148
|
-
]
|
|
149
|
-
)
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
## Multi-Image Composition
|
|
153
|
-
|
|
154
|
-
### Combine Multiple Images
|
|
155
|
-
|
|
156
|
-
```python
|
|
157
|
-
img1 = PIL.Image.open('background.png')
|
|
158
|
-
img2 = PIL.Image.open('foreground.png')
|
|
159
|
-
img3 = PIL.Image.open('overlay.png')
|
|
160
|
-
|
|
161
|
-
response = client.models.generate_content(
|
|
162
|
-
model='gemini-2.5-flash-image',
|
|
163
|
-
contents=[
|
|
164
|
-
'Combine these images into a cohesive scene',
|
|
165
|
-
img1,
|
|
166
|
-
img2,
|
|
167
|
-
img3
|
|
168
|
-
],
|
|
169
|
-
config=types.GenerateContentConfig(
|
|
170
|
-
response_modalities=['image'],
|
|
171
|
-
aspect_ratio='16:9'
|
|
172
|
-
)
|
|
173
|
-
)
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
**Note**: Recommended maximum 3 input images for best results.
|
|
177
|
-
|
|
178
|
-
## Prompt Engineering
|
|
179
|
-
|
|
180
|
-
### Effective Prompt Structure
|
|
181
|
-
|
|
182
|
-
**Three key elements**:
|
|
183
|
-
1. **Subject**: What to generate
|
|
184
|
-
2. **Context**: Environmental setting
|
|
185
|
-
3. **Style**: Artistic treatment
|
|
186
|
-
|
|
187
|
-
**Example**: "A robot [subject] in a futuristic city [context], cyberpunk style with neon lighting [style]"
|
|
188
|
-
|
|
189
|
-
### Quality Modifiers
|
|
190
|
-
|
|
191
|
-
**Technical terms**:
|
|
192
|
-
- "4K", "8K", "high resolution"
|
|
193
|
-
- "HDR", "high dynamic range"
|
|
194
|
-
- "professional photography"
|
|
195
|
-
- "studio lighting"
|
|
196
|
-
- "ultra detailed"
|
|
197
|
-
|
|
198
|
-
**Camera settings**:
|
|
199
|
-
- "35mm lens", "50mm lens"
|
|
200
|
-
- "shallow depth of field"
|
|
201
|
-
- "wide angle shot"
|
|
202
|
-
- "macro photography"
|
|
203
|
-
- "golden hour lighting"
|
|
204
|
-
|
|
205
|
-
### Style Keywords
|
|
206
|
-
|
|
207
|
-
**Art styles**:
|
|
208
|
-
- "oil painting", "watercolor", "sketch"
|
|
209
|
-
- "digital art", "concept art"
|
|
210
|
-
- "photorealistic", "hyperrealistic"
|
|
211
|
-
- "minimalist", "abstract"
|
|
212
|
-
- "cyberpunk", "steampunk", "fantasy"
|
|
213
|
-
|
|
214
|
-
**Mood and atmosphere**:
|
|
215
|
-
- "dramatic lighting", "soft lighting"
|
|
216
|
-
- "moody", "bright and cheerful"
|
|
217
|
-
- "mysterious", "whimsical"
|
|
218
|
-
- "dark and gritty", "pastel colors"
|
|
219
|
-
|
|
220
|
-
### Subject Description
|
|
221
|
-
|
|
222
|
-
**Be specific**:
|
|
223
|
-
- ❌ "A cat"
|
|
224
|
-
- ✅ "A fluffy orange tabby cat with green eyes"
|
|
225
|
-
|
|
226
|
-
**Add context**:
|
|
227
|
-
- ❌ "A building"
|
|
228
|
-
- ✅ "A modern glass skyscraper reflecting sunset clouds"
|
|
229
|
-
|
|
230
|
-
**Include details**:
|
|
231
|
-
- ❌ "A person"
|
|
232
|
-
- ✅ "A young woman in a red dress holding an umbrella"
|
|
233
|
-
|
|
234
|
-
### Composition and Framing
|
|
235
|
-
|
|
236
|
-
**Camera angles**:
|
|
237
|
-
- "bird's eye view", "aerial shot"
|
|
238
|
-
- "low angle", "high angle"
|
|
239
|
-
- "close-up", "wide shot"
|
|
240
|
-
- "centered composition"
|
|
241
|
-
- "rule of thirds"
|
|
242
|
-
|
|
243
|
-
**Perspective**:
|
|
244
|
-
- "first person view"
|
|
245
|
-
- "third person perspective"
|
|
246
|
-
- "isometric view"
|
|
247
|
-
- "forced perspective"
|
|
248
|
-
|
|
249
|
-
### Text in Images
|
|
250
|
-
|
|
251
|
-
**Limitations**:
|
|
252
|
-
- Maximum 25 characters total
|
|
253
|
-
- Up to 3 distinct text phrases
|
|
254
|
-
- Works best with simple text
|
|
255
|
-
|
|
256
|
-
**Best practices**:
|
|
257
|
-
```python
|
|
258
|
-
response = client.models.generate_content(
|
|
259
|
-
model='gemini-2.5-flash-image',
|
|
260
|
-
contents='A vintage poster with bold text "EXPLORE" at the top, mountain landscape, retro 1950s style'
|
|
261
|
-
)
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
**Font control**:
|
|
265
|
-
- "bold sans-serif title"
|
|
266
|
-
- "handwritten script"
|
|
267
|
-
- "vintage letterpress"
|
|
268
|
-
- "modern minimalist font"
|
|
269
|
-
|
|
270
|
-
## Advanced Techniques
|
|
271
|
-
|
|
272
|
-
### Iterative Refinement
|
|
273
|
-
|
|
274
|
-
```python
|
|
275
|
-
# Initial generation
|
|
276
|
-
response1 = client.models.generate_content(
|
|
277
|
-
model='gemini-2.5-flash-image',
|
|
278
|
-
contents='A futuristic city skyline'
|
|
279
|
-
)
|
|
280
|
-
|
|
281
|
-
# Save first version
|
|
282
|
-
with open('v1.png', 'wb') as f:
|
|
283
|
-
f.write(response1.candidates[0].content.parts[0].inline_data.data)
|
|
284
|
-
|
|
285
|
-
# Refine
|
|
286
|
-
img = PIL.Image.open('v1.png')
|
|
287
|
-
response2 = client.models.generate_content(
|
|
288
|
-
model='gemini-2.5-flash-image',
|
|
289
|
-
contents=[
|
|
290
|
-
'Add flying vehicles and neon signs',
|
|
291
|
-
img
|
|
292
|
-
]
|
|
293
|
-
)
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
### Negative Prompts (Indirect)
|
|
297
|
-
|
|
298
|
-
```python
|
|
299
|
-
# Instead of "no blur", be specific about what you want
|
|
300
|
-
response = client.models.generate_content(
|
|
301
|
-
model='gemini-2.5-flash-image',
|
|
302
|
-
contents='A crystal clear, sharp photograph of a diamond ring with perfect focus and high detail'
|
|
303
|
-
)
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
### Consistent Style Across Images
|
|
307
|
-
|
|
308
|
-
```python
|
|
309
|
-
base_prompt = "Digital art, vibrant colors, cel-shaded style, clean lines"
|
|
310
|
-
|
|
311
|
-
prompts = [
|
|
312
|
-
f"{base_prompt}, a warrior character",
|
|
313
|
-
f"{base_prompt}, a mage character",
|
|
314
|
-
f"{base_prompt}, a rogue character"
|
|
315
|
-
]
|
|
316
|
-
|
|
317
|
-
for i, prompt in enumerate(prompts):
|
|
318
|
-
response = client.models.generate_content(
|
|
319
|
-
model='gemini-2.5-flash-image',
|
|
320
|
-
contents=prompt
|
|
321
|
-
)
|
|
322
|
-
# Save each character
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
## Safety Settings
|
|
326
|
-
|
|
327
|
-
### Configure Safety Filters
|
|
328
|
-
|
|
329
|
-
```python
|
|
330
|
-
config = types.GenerateContentConfig(
|
|
331
|
-
response_modalities=['image'],
|
|
332
|
-
safety_settings=[
|
|
333
|
-
types.SafetySetting(
|
|
334
|
-
category=types.HarmCategory.HARM_CATEGORY_HATE_SPEECH,
|
|
335
|
-
threshold=types.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE
|
|
336
|
-
),
|
|
337
|
-
types.SafetySetting(
|
|
338
|
-
category=types.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
|
|
339
|
-
threshold=types.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE
|
|
340
|
-
)
|
|
341
|
-
]
|
|
342
|
-
)
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
### Available Categories
|
|
346
|
-
|
|
347
|
-
- `HARM_CATEGORY_HATE_SPEECH`
|
|
348
|
-
- `HARM_CATEGORY_DANGEROUS_CONTENT`
|
|
349
|
-
- `HARM_CATEGORY_HARASSMENT`
|
|
350
|
-
- `HARM_CATEGORY_SEXUALLY_EXPLICIT`
|
|
351
|
-
|
|
352
|
-
### Thresholds
|
|
353
|
-
|
|
354
|
-
- `BLOCK_NONE`: No blocking
|
|
355
|
-
- `BLOCK_LOW_AND_ABOVE`: Block low probability and above
|
|
356
|
-
- `BLOCK_MEDIUM_AND_ABOVE`: Block medium and above (default)
|
|
357
|
-
- `BLOCK_ONLY_HIGH`: Block only high probability
|
|
358
|
-
|
|
359
|
-
## Common Use Cases
|
|
360
|
-
|
|
361
|
-
### 1. Marketing Assets
|
|
362
|
-
|
|
363
|
-
```python
|
|
364
|
-
response = client.models.generate_content(
|
|
365
|
-
model='gemini-2.5-flash-image',
|
|
366
|
-
contents='''Professional product photography:
|
|
367
|
-
- Sleek smartphone on minimalist white surface
|
|
368
|
-
- Dramatic side lighting creating subtle shadows
|
|
369
|
-
- Shallow depth of field, crisp focus
|
|
370
|
-
- Clean, modern aesthetic
|
|
371
|
-
- 4K quality
|
|
372
|
-
''',
|
|
373
|
-
config=types.GenerateContentConfig(
|
|
374
|
-
response_modalities=['image'],
|
|
375
|
-
aspect_ratio='4:3'
|
|
376
|
-
)
|
|
377
|
-
)
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
### 2. Concept Art
|
|
381
|
-
|
|
382
|
-
```python
|
|
383
|
-
response = client.models.generate_content(
|
|
384
|
-
model='gemini-2.5-flash-image',
|
|
385
|
-
contents='''Fantasy concept art:
|
|
386
|
-
- Ancient floating islands connected by chains
|
|
387
|
-
- Waterfalls cascading into clouds below
|
|
388
|
-
- Magical crystals glowing on the islands
|
|
389
|
-
- Epic scale, dramatic lighting
|
|
390
|
-
- Detailed digital painting style
|
|
391
|
-
''',
|
|
392
|
-
config=types.GenerateContentConfig(
|
|
393
|
-
response_modalities=['image'],
|
|
394
|
-
aspect_ratio='16:9'
|
|
395
|
-
)
|
|
396
|
-
)
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
### 3. Social Media Graphics
|
|
400
|
-
|
|
401
|
-
```python
|
|
402
|
-
response = client.models.generate_content(
|
|
403
|
-
model='gemini-2.5-flash-image',
|
|
404
|
-
contents='''Instagram post design:
|
|
405
|
-
- Pastel gradient background (pink to blue)
|
|
406
|
-
- Motivational quote layout
|
|
407
|
-
- Modern minimalist style
|
|
408
|
-
- Clean typography
|
|
409
|
-
- Mobile-friendly composition
|
|
410
|
-
''',
|
|
411
|
-
config=types.GenerateContentConfig(
|
|
412
|
-
response_modalities=['image'],
|
|
413
|
-
aspect_ratio='1:1'
|
|
414
|
-
)
|
|
415
|
-
)
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
### 4. Illustration
|
|
419
|
-
|
|
420
|
-
```python
|
|
421
|
-
response = client.models.generate_content(
|
|
422
|
-
model='gemini-2.5-flash-image',
|
|
423
|
-
contents='''Children's book illustration:
|
|
424
|
-
- Friendly cartoon dragon reading a book
|
|
425
|
-
- Bright, cheerful colors
|
|
426
|
-
- Soft, rounded shapes
|
|
427
|
-
- Whimsical forest background
|
|
428
|
-
- Warm, inviting atmosphere
|
|
429
|
-
''',
|
|
430
|
-
config=types.GenerateContentConfig(
|
|
431
|
-
response_modalities=['image'],
|
|
432
|
-
aspect_ratio='4:3'
|
|
433
|
-
)
|
|
434
|
-
)
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
### 5. UI/UX Mockups
|
|
438
|
-
|
|
439
|
-
```python
|
|
440
|
-
response = client.models.generate_content(
|
|
441
|
-
model='gemini-2.5-flash-image',
|
|
442
|
-
contents='''Modern mobile app interface:
|
|
443
|
-
- Clean dashboard design
|
|
444
|
-
- Card-based layout
|
|
445
|
-
- Soft shadows and gradients
|
|
446
|
-
- Contemporary color scheme (blue and white)
|
|
447
|
-
- Professional fintech aesthetic
|
|
448
|
-
''',
|
|
449
|
-
config=types.GenerateContentConfig(
|
|
450
|
-
response_modalities=['image'],
|
|
451
|
-
aspect_ratio='9:16'
|
|
452
|
-
)
|
|
453
|
-
)
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
## Best Practices
|
|
457
|
-
|
|
458
|
-
### Prompt Quality
|
|
459
|
-
|
|
460
|
-
1. **Be specific**: More detail = better results
|
|
461
|
-
2. **Order matters**: Most important elements first
|
|
462
|
-
3. **Use examples**: Reference known styles or artists
|
|
463
|
-
4. **Avoid contradictions**: Don't ask for opposing styles
|
|
464
|
-
5. **Test and iterate**: Refine prompts based on results
|
|
465
|
-
|
|
466
|
-
### File Management
|
|
467
|
-
|
|
468
|
-
```python
|
|
469
|
-
# Save with descriptive names
|
|
470
|
-
timestamp = int(time.time())
|
|
471
|
-
filename = f'generated_{timestamp}_{aspect_ratio}.png'
|
|
472
|
-
|
|
473
|
-
with open(filename, 'wb') as f:
|
|
474
|
-
f.write(image_data)
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
### Cost Optimization
|
|
478
|
-
|
|
479
|
-
**Token costs**:
|
|
480
|
-
- 1 image: 1,290 tokens = $0.00129 (Flash Image at $1/1M)
|
|
481
|
-
- 10 images: 12,900 tokens = $0.0129
|
|
482
|
-
- 100 images: 129,000 tokens = $0.129
|
|
483
|
-
|
|
484
|
-
**Strategies**:
|
|
485
|
-
- Generate fewer iterations
|
|
486
|
-
- Use text modality first to validate concept
|
|
487
|
-
- Batch similar requests
|
|
488
|
-
- Cache prompts for consistent style
|
|
489
|
-
|
|
490
|
-
## Error Handling
|
|
491
|
-
|
|
492
|
-
### Safety Filter Blocking
|
|
493
|
-
|
|
494
|
-
```python
|
|
495
|
-
try:
|
|
496
|
-
response = client.models.generate_content(
|
|
497
|
-
model='gemini-2.5-flash-image',
|
|
498
|
-
contents=prompt
|
|
499
|
-
)
|
|
500
|
-
except Exception as e:
|
|
501
|
-
# Check block reason
|
|
502
|
-
if hasattr(e, 'prompt_feedback'):
|
|
503
|
-
print(f"Blocked: {e.prompt_feedback.block_reason}")
|
|
504
|
-
# Modify prompt and retry
|
|
505
|
-
```
|
|
506
|
-
|
|
507
|
-
### Token Limit Exceeded
|
|
508
|
-
|
|
509
|
-
```python
|
|
510
|
-
# Keep prompts concise
|
|
511
|
-
if len(prompt) > 1000:
|
|
512
|
-
# Truncate or simplify
|
|
513
|
-
prompt = prompt[:1000]
|
|
514
|
-
```
|
|
515
|
-
|
|
516
|
-
## Limitations
|
|
517
|
-
|
|
518
|
-
- Maximum 3 input images for composition
|
|
519
|
-
- Text rendering limited (25 chars max)
|
|
520
|
-
- No video or animation generation
|
|
521
|
-
- Regional restrictions (child images in EEA, CH, UK)
|
|
522
|
-
- Optimal language support: English, Spanish (Mexico), Japanese, Mandarin, Hindi
|
|
523
|
-
- No real-time generation
|
|
524
|
-
- Cannot perfectly replicate specific people or copyrighted characters
|
|
525
|
-
|
|
526
|
-
## Troubleshooting
|
|
527
|
-
|
|
528
|
-
### aspect_ratio Parameter Error
|
|
529
|
-
|
|
530
|
-
**Error**: `Extra inputs are not permitted [type=extra_forbidden, input_value='1:1', input_type=str]`
|
|
531
|
-
|
|
532
|
-
**Cause**: The `aspect_ratio` parameter must be nested inside an `image_config` object, not passed directly to `GenerateContentConfig`.
|
|
533
|
-
|
|
534
|
-
**Incorrect Usage**:
|
|
535
|
-
```python
|
|
536
|
-
# ❌ This will fail
|
|
537
|
-
config = types.GenerateContentConfig(
|
|
538
|
-
response_modalities=['image'],
|
|
539
|
-
aspect_ratio='16:9' # Wrong - not a direct parameter
|
|
540
|
-
)
|
|
541
|
-
```
|
|
542
|
-
|
|
543
|
-
**Correct Usage**:
|
|
544
|
-
```python
|
|
545
|
-
# ✅ Correct implementation
|
|
546
|
-
config = types.GenerateContentConfig(
|
|
547
|
-
response_modalities=['Image'], # Note: Capital 'I'
|
|
548
|
-
image_config=types.ImageConfig(
|
|
549
|
-
aspect_ratio='16:9'
|
|
550
|
-
)
|
|
551
|
-
)
|
|
552
|
-
```
|
|
553
|
-
|
|
554
|
-
### Response Modality Case Sensitivity
|
|
555
|
-
|
|
556
|
-
The `response_modalities` parameter expects capital case values:
|
|
557
|
-
- ✅ Correct: `['Image']`, `['Text']`, `['Image', 'Text']`
|
|
558
|
-
- ❌ Wrong: `['image']`, `['text']`
|
|
1
|
+
# Image Generation Reference
|
|
2
|
+
|
|
3
|
+
Comprehensive guide for image creation, editing, and composition using Gemini API.
|
|
4
|
+
|
|
5
|
+
## Core Capabilities
|
|
6
|
+
|
|
7
|
+
- **Text-to-Image**: Generate images from text prompts
|
|
8
|
+
- **Image Editing**: Modify existing images with text instructions
|
|
9
|
+
- **Multi-Image Composition**: Combine up to 3 images
|
|
10
|
+
- **Iterative Refinement**: Refine images conversationally
|
|
11
|
+
- **Aspect Ratios**: Multiple formats (1:1, 16:9, 9:16, 4:3, 3:4)
|
|
12
|
+
- **Style Control**: Control artistic style and quality
|
|
13
|
+
- **Text in Images**: Limited text rendering (max 25 chars)
|
|
14
|
+
|
|
15
|
+
## Model
|
|
16
|
+
|
|
17
|
+
**gemini-2.5-flash-image** - Specialized for image generation
|
|
18
|
+
- Input tokens: 65,536
|
|
19
|
+
- Output tokens: 32,768
|
|
20
|
+
- Knowledge cutoff: June 2025
|
|
21
|
+
- Supports: Text and image inputs, image outputs
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
### Basic Generation
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
from google import genai
|
|
29
|
+
from google.genai import types
|
|
30
|
+
import os
|
|
31
|
+
|
|
32
|
+
client = genai.Client(api_key=os.getenv('GEMINI_API_KEY'))
|
|
33
|
+
|
|
34
|
+
response = client.models.generate_content(
|
|
35
|
+
model='gemini-2.5-flash-image',
|
|
36
|
+
contents='A serene mountain landscape at sunset with snow-capped peaks',
|
|
37
|
+
config=types.GenerateContentConfig(
|
|
38
|
+
response_modalities=['image'],
|
|
39
|
+
aspect_ratio='16:9'
|
|
40
|
+
)
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
# Save image
|
|
44
|
+
for i, part in enumerate(response.candidates[0].content.parts):
|
|
45
|
+
if part.inline_data:
|
|
46
|
+
with open(f'output-{i}.png', 'wb') as f:
|
|
47
|
+
f.write(part.inline_data.data)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Aspect Ratios
|
|
51
|
+
|
|
52
|
+
| Ratio | Resolution | Use Case | Token Cost |
|
|
53
|
+
|-------|-----------|----------|------------|
|
|
54
|
+
| 1:1 | 1024×1024 | Social media, avatars | 1290 |
|
|
55
|
+
| 16:9 | 1344×768 | Landscapes, banners | 1290 |
|
|
56
|
+
| 9:16 | 768×1344 | Mobile, portraits | 1290 |
|
|
57
|
+
| 4:3 | 1152×896 | Traditional media | 1290 |
|
|
58
|
+
| 3:4 | 896×1152 | Vertical posters | 1290 |
|
|
59
|
+
|
|
60
|
+
All ratios cost the same: 1,290 tokens per image.
|
|
61
|
+
|
|
62
|
+
## Response Modalities
|
|
63
|
+
|
|
64
|
+
### Image Only
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
config = types.GenerateContentConfig(
|
|
68
|
+
response_modalities=['image'],
|
|
69
|
+
aspect_ratio='1:1'
|
|
70
|
+
)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Text Only (No Image)
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
config = types.GenerateContentConfig(
|
|
77
|
+
response_modalities=['text']
|
|
78
|
+
)
|
|
79
|
+
# Returns text description instead of generating image
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Both Image and Text
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
config = types.GenerateContentConfig(
|
|
86
|
+
response_modalities=['image', 'text'],
|
|
87
|
+
aspect_ratio='16:9'
|
|
88
|
+
)
|
|
89
|
+
# Returns both generated image and description
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Image Editing
|
|
93
|
+
|
|
94
|
+
### Modify Existing Image
|
|
95
|
+
|
|
96
|
+
```python
|
|
97
|
+
import PIL.Image
|
|
98
|
+
|
|
99
|
+
# Load original
|
|
100
|
+
img = PIL.Image.open('original.png')
|
|
101
|
+
|
|
102
|
+
# Edit with instructions
|
|
103
|
+
response = client.models.generate_content(
|
|
104
|
+
model='gemini-2.5-flash-image',
|
|
105
|
+
contents=[
|
|
106
|
+
'Add a red balloon floating in the sky',
|
|
107
|
+
img
|
|
108
|
+
],
|
|
109
|
+
config=types.GenerateContentConfig(
|
|
110
|
+
response_modalities=['image'],
|
|
111
|
+
aspect_ratio='16:9'
|
|
112
|
+
)
|
|
113
|
+
)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Style Transfer
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
img = PIL.Image.open('photo.jpg')
|
|
120
|
+
|
|
121
|
+
response = client.models.generate_content(
|
|
122
|
+
model='gemini-2.5-flash-image',
|
|
123
|
+
contents=[
|
|
124
|
+
'Transform this into an oil painting style',
|
|
125
|
+
img
|
|
126
|
+
]
|
|
127
|
+
)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Object Addition/Removal
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
# Add object
|
|
134
|
+
response = client.models.generate_content(
|
|
135
|
+
model='gemini-2.5-flash-image',
|
|
136
|
+
contents=[
|
|
137
|
+
'Add a vintage car parked on the street',
|
|
138
|
+
img
|
|
139
|
+
]
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
# Remove object
|
|
143
|
+
response = client.models.generate_content(
|
|
144
|
+
model='gemini-2.5-flash-image',
|
|
145
|
+
contents=[
|
|
146
|
+
'Remove the person on the left side',
|
|
147
|
+
img
|
|
148
|
+
]
|
|
149
|
+
)
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Multi-Image Composition
|
|
153
|
+
|
|
154
|
+
### Combine Multiple Images
|
|
155
|
+
|
|
156
|
+
```python
|
|
157
|
+
img1 = PIL.Image.open('background.png')
|
|
158
|
+
img2 = PIL.Image.open('foreground.png')
|
|
159
|
+
img3 = PIL.Image.open('overlay.png')
|
|
160
|
+
|
|
161
|
+
response = client.models.generate_content(
|
|
162
|
+
model='gemini-2.5-flash-image',
|
|
163
|
+
contents=[
|
|
164
|
+
'Combine these images into a cohesive scene',
|
|
165
|
+
img1,
|
|
166
|
+
img2,
|
|
167
|
+
img3
|
|
168
|
+
],
|
|
169
|
+
config=types.GenerateContentConfig(
|
|
170
|
+
response_modalities=['image'],
|
|
171
|
+
aspect_ratio='16:9'
|
|
172
|
+
)
|
|
173
|
+
)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Note**: Recommended maximum 3 input images for best results.
|
|
177
|
+
|
|
178
|
+
## Prompt Engineering
|
|
179
|
+
|
|
180
|
+
### Effective Prompt Structure
|
|
181
|
+
|
|
182
|
+
**Three key elements**:
|
|
183
|
+
1. **Subject**: What to generate
|
|
184
|
+
2. **Context**: Environmental setting
|
|
185
|
+
3. **Style**: Artistic treatment
|
|
186
|
+
|
|
187
|
+
**Example**: "A robot [subject] in a futuristic city [context], cyberpunk style with neon lighting [style]"
|
|
188
|
+
|
|
189
|
+
### Quality Modifiers
|
|
190
|
+
|
|
191
|
+
**Technical terms**:
|
|
192
|
+
- "4K", "8K", "high resolution"
|
|
193
|
+
- "HDR", "high dynamic range"
|
|
194
|
+
- "professional photography"
|
|
195
|
+
- "studio lighting"
|
|
196
|
+
- "ultra detailed"
|
|
197
|
+
|
|
198
|
+
**Camera settings**:
|
|
199
|
+
- "35mm lens", "50mm lens"
|
|
200
|
+
- "shallow depth of field"
|
|
201
|
+
- "wide angle shot"
|
|
202
|
+
- "macro photography"
|
|
203
|
+
- "golden hour lighting"
|
|
204
|
+
|
|
205
|
+
### Style Keywords
|
|
206
|
+
|
|
207
|
+
**Art styles**:
|
|
208
|
+
- "oil painting", "watercolor", "sketch"
|
|
209
|
+
- "digital art", "concept art"
|
|
210
|
+
- "photorealistic", "hyperrealistic"
|
|
211
|
+
- "minimalist", "abstract"
|
|
212
|
+
- "cyberpunk", "steampunk", "fantasy"
|
|
213
|
+
|
|
214
|
+
**Mood and atmosphere**:
|
|
215
|
+
- "dramatic lighting", "soft lighting"
|
|
216
|
+
- "moody", "bright and cheerful"
|
|
217
|
+
- "mysterious", "whimsical"
|
|
218
|
+
- "dark and gritty", "pastel colors"
|
|
219
|
+
|
|
220
|
+
### Subject Description
|
|
221
|
+
|
|
222
|
+
**Be specific**:
|
|
223
|
+
- ❌ "A cat"
|
|
224
|
+
- ✅ "A fluffy orange tabby cat with green eyes"
|
|
225
|
+
|
|
226
|
+
**Add context**:
|
|
227
|
+
- ❌ "A building"
|
|
228
|
+
- ✅ "A modern glass skyscraper reflecting sunset clouds"
|
|
229
|
+
|
|
230
|
+
**Include details**:
|
|
231
|
+
- ❌ "A person"
|
|
232
|
+
- ✅ "A young woman in a red dress holding an umbrella"
|
|
233
|
+
|
|
234
|
+
### Composition and Framing
|
|
235
|
+
|
|
236
|
+
**Camera angles**:
|
|
237
|
+
- "bird's eye view", "aerial shot"
|
|
238
|
+
- "low angle", "high angle"
|
|
239
|
+
- "close-up", "wide shot"
|
|
240
|
+
- "centered composition"
|
|
241
|
+
- "rule of thirds"
|
|
242
|
+
|
|
243
|
+
**Perspective**:
|
|
244
|
+
- "first person view"
|
|
245
|
+
- "third person perspective"
|
|
246
|
+
- "isometric view"
|
|
247
|
+
- "forced perspective"
|
|
248
|
+
|
|
249
|
+
### Text in Images
|
|
250
|
+
|
|
251
|
+
**Limitations**:
|
|
252
|
+
- Maximum 25 characters total
|
|
253
|
+
- Up to 3 distinct text phrases
|
|
254
|
+
- Works best with simple text
|
|
255
|
+
|
|
256
|
+
**Best practices**:
|
|
257
|
+
```python
|
|
258
|
+
response = client.models.generate_content(
|
|
259
|
+
model='gemini-2.5-flash-image',
|
|
260
|
+
contents='A vintage poster with bold text "EXPLORE" at the top, mountain landscape, retro 1950s style'
|
|
261
|
+
)
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
**Font control**:
|
|
265
|
+
- "bold sans-serif title"
|
|
266
|
+
- "handwritten script"
|
|
267
|
+
- "vintage letterpress"
|
|
268
|
+
- "modern minimalist font"
|
|
269
|
+
|
|
270
|
+
## Advanced Techniques
|
|
271
|
+
|
|
272
|
+
### Iterative Refinement
|
|
273
|
+
|
|
274
|
+
```python
|
|
275
|
+
# Initial generation
|
|
276
|
+
response1 = client.models.generate_content(
|
|
277
|
+
model='gemini-2.5-flash-image',
|
|
278
|
+
contents='A futuristic city skyline'
|
|
279
|
+
)
|
|
280
|
+
|
|
281
|
+
# Save first version
|
|
282
|
+
with open('v1.png', 'wb') as f:
|
|
283
|
+
f.write(response1.candidates[0].content.parts[0].inline_data.data)
|
|
284
|
+
|
|
285
|
+
# Refine
|
|
286
|
+
img = PIL.Image.open('v1.png')
|
|
287
|
+
response2 = client.models.generate_content(
|
|
288
|
+
model='gemini-2.5-flash-image',
|
|
289
|
+
contents=[
|
|
290
|
+
'Add flying vehicles and neon signs',
|
|
291
|
+
img
|
|
292
|
+
]
|
|
293
|
+
)
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Negative Prompts (Indirect)
|
|
297
|
+
|
|
298
|
+
```python
|
|
299
|
+
# Instead of "no blur", be specific about what you want
|
|
300
|
+
response = client.models.generate_content(
|
|
301
|
+
model='gemini-2.5-flash-image',
|
|
302
|
+
contents='A crystal clear, sharp photograph of a diamond ring with perfect focus and high detail'
|
|
303
|
+
)
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Consistent Style Across Images
|
|
307
|
+
|
|
308
|
+
```python
|
|
309
|
+
base_prompt = "Digital art, vibrant colors, cel-shaded style, clean lines"
|
|
310
|
+
|
|
311
|
+
prompts = [
|
|
312
|
+
f"{base_prompt}, a warrior character",
|
|
313
|
+
f"{base_prompt}, a mage character",
|
|
314
|
+
f"{base_prompt}, a rogue character"
|
|
315
|
+
]
|
|
316
|
+
|
|
317
|
+
for i, prompt in enumerate(prompts):
|
|
318
|
+
response = client.models.generate_content(
|
|
319
|
+
model='gemini-2.5-flash-image',
|
|
320
|
+
contents=prompt
|
|
321
|
+
)
|
|
322
|
+
# Save each character
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## Safety Settings
|
|
326
|
+
|
|
327
|
+
### Configure Safety Filters
|
|
328
|
+
|
|
329
|
+
```python
|
|
330
|
+
config = types.GenerateContentConfig(
|
|
331
|
+
response_modalities=['image'],
|
|
332
|
+
safety_settings=[
|
|
333
|
+
types.SafetySetting(
|
|
334
|
+
category=types.HarmCategory.HARM_CATEGORY_HATE_SPEECH,
|
|
335
|
+
threshold=types.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE
|
|
336
|
+
),
|
|
337
|
+
types.SafetySetting(
|
|
338
|
+
category=types.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
|
|
339
|
+
threshold=types.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE
|
|
340
|
+
)
|
|
341
|
+
]
|
|
342
|
+
)
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### Available Categories
|
|
346
|
+
|
|
347
|
+
- `HARM_CATEGORY_HATE_SPEECH`
|
|
348
|
+
- `HARM_CATEGORY_DANGEROUS_CONTENT`
|
|
349
|
+
- `HARM_CATEGORY_HARASSMENT`
|
|
350
|
+
- `HARM_CATEGORY_SEXUALLY_EXPLICIT`
|
|
351
|
+
|
|
352
|
+
### Thresholds
|
|
353
|
+
|
|
354
|
+
- `BLOCK_NONE`: No blocking
|
|
355
|
+
- `BLOCK_LOW_AND_ABOVE`: Block low probability and above
|
|
356
|
+
- `BLOCK_MEDIUM_AND_ABOVE`: Block medium and above (default)
|
|
357
|
+
- `BLOCK_ONLY_HIGH`: Block only high probability
|
|
358
|
+
|
|
359
|
+
## Common Use Cases
|
|
360
|
+
|
|
361
|
+
### 1. Marketing Assets
|
|
362
|
+
|
|
363
|
+
```python
|
|
364
|
+
response = client.models.generate_content(
|
|
365
|
+
model='gemini-2.5-flash-image',
|
|
366
|
+
contents='''Professional product photography:
|
|
367
|
+
- Sleek smartphone on minimalist white surface
|
|
368
|
+
- Dramatic side lighting creating subtle shadows
|
|
369
|
+
- Shallow depth of field, crisp focus
|
|
370
|
+
- Clean, modern aesthetic
|
|
371
|
+
- 4K quality
|
|
372
|
+
''',
|
|
373
|
+
config=types.GenerateContentConfig(
|
|
374
|
+
response_modalities=['image'],
|
|
375
|
+
aspect_ratio='4:3'
|
|
376
|
+
)
|
|
377
|
+
)
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### 2. Concept Art
|
|
381
|
+
|
|
382
|
+
```python
|
|
383
|
+
response = client.models.generate_content(
|
|
384
|
+
model='gemini-2.5-flash-image',
|
|
385
|
+
contents='''Fantasy concept art:
|
|
386
|
+
- Ancient floating islands connected by chains
|
|
387
|
+
- Waterfalls cascading into clouds below
|
|
388
|
+
- Magical crystals glowing on the islands
|
|
389
|
+
- Epic scale, dramatic lighting
|
|
390
|
+
- Detailed digital painting style
|
|
391
|
+
''',
|
|
392
|
+
config=types.GenerateContentConfig(
|
|
393
|
+
response_modalities=['image'],
|
|
394
|
+
aspect_ratio='16:9'
|
|
395
|
+
)
|
|
396
|
+
)
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### 3. Social Media Graphics
|
|
400
|
+
|
|
401
|
+
```python
|
|
402
|
+
response = client.models.generate_content(
|
|
403
|
+
model='gemini-2.5-flash-image',
|
|
404
|
+
contents='''Instagram post design:
|
|
405
|
+
- Pastel gradient background (pink to blue)
|
|
406
|
+
- Motivational quote layout
|
|
407
|
+
- Modern minimalist style
|
|
408
|
+
- Clean typography
|
|
409
|
+
- Mobile-friendly composition
|
|
410
|
+
''',
|
|
411
|
+
config=types.GenerateContentConfig(
|
|
412
|
+
response_modalities=['image'],
|
|
413
|
+
aspect_ratio='1:1'
|
|
414
|
+
)
|
|
415
|
+
)
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### 4. Illustration
|
|
419
|
+
|
|
420
|
+
```python
|
|
421
|
+
response = client.models.generate_content(
|
|
422
|
+
model='gemini-2.5-flash-image',
|
|
423
|
+
contents='''Children's book illustration:
|
|
424
|
+
- Friendly cartoon dragon reading a book
|
|
425
|
+
- Bright, cheerful colors
|
|
426
|
+
- Soft, rounded shapes
|
|
427
|
+
- Whimsical forest background
|
|
428
|
+
- Warm, inviting atmosphere
|
|
429
|
+
''',
|
|
430
|
+
config=types.GenerateContentConfig(
|
|
431
|
+
response_modalities=['image'],
|
|
432
|
+
aspect_ratio='4:3'
|
|
433
|
+
)
|
|
434
|
+
)
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
### 5. UI/UX Mockups
|
|
438
|
+
|
|
439
|
+
```python
|
|
440
|
+
response = client.models.generate_content(
|
|
441
|
+
model='gemini-2.5-flash-image',
|
|
442
|
+
contents='''Modern mobile app interface:
|
|
443
|
+
- Clean dashboard design
|
|
444
|
+
- Card-based layout
|
|
445
|
+
- Soft shadows and gradients
|
|
446
|
+
- Contemporary color scheme (blue and white)
|
|
447
|
+
- Professional fintech aesthetic
|
|
448
|
+
''',
|
|
449
|
+
config=types.GenerateContentConfig(
|
|
450
|
+
response_modalities=['image'],
|
|
451
|
+
aspect_ratio='9:16'
|
|
452
|
+
)
|
|
453
|
+
)
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
## Best Practices
|
|
457
|
+
|
|
458
|
+
### Prompt Quality
|
|
459
|
+
|
|
460
|
+
1. **Be specific**: More detail = better results
|
|
461
|
+
2. **Order matters**: Most important elements first
|
|
462
|
+
3. **Use examples**: Reference known styles or artists
|
|
463
|
+
4. **Avoid contradictions**: Don't ask for opposing styles
|
|
464
|
+
5. **Test and iterate**: Refine prompts based on results
|
|
465
|
+
|
|
466
|
+
### File Management
|
|
467
|
+
|
|
468
|
+
```python
|
|
469
|
+
# Save with descriptive names
|
|
470
|
+
timestamp = int(time.time())
|
|
471
|
+
filename = f'generated_{timestamp}_{aspect_ratio}.png'
|
|
472
|
+
|
|
473
|
+
with open(filename, 'wb') as f:
|
|
474
|
+
f.write(image_data)
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
### Cost Optimization
|
|
478
|
+
|
|
479
|
+
**Token costs**:
|
|
480
|
+
- 1 image: 1,290 tokens = $0.00129 (Flash Image at $1/1M)
|
|
481
|
+
- 10 images: 12,900 tokens = $0.0129
|
|
482
|
+
- 100 images: 129,000 tokens = $0.129
|
|
483
|
+
|
|
484
|
+
**Strategies**:
|
|
485
|
+
- Generate fewer iterations
|
|
486
|
+
- Use text modality first to validate concept
|
|
487
|
+
- Batch similar requests
|
|
488
|
+
- Cache prompts for consistent style
|
|
489
|
+
|
|
490
|
+
## Error Handling
|
|
491
|
+
|
|
492
|
+
### Safety Filter Blocking
|
|
493
|
+
|
|
494
|
+
```python
|
|
495
|
+
try:
|
|
496
|
+
response = client.models.generate_content(
|
|
497
|
+
model='gemini-2.5-flash-image',
|
|
498
|
+
contents=prompt
|
|
499
|
+
)
|
|
500
|
+
except Exception as e:
|
|
501
|
+
# Check block reason
|
|
502
|
+
if hasattr(e, 'prompt_feedback'):
|
|
503
|
+
print(f"Blocked: {e.prompt_feedback.block_reason}")
|
|
504
|
+
# Modify prompt and retry
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
### Token Limit Exceeded
|
|
508
|
+
|
|
509
|
+
```python
|
|
510
|
+
# Keep prompts concise
|
|
511
|
+
if len(prompt) > 1000:
|
|
512
|
+
# Truncate or simplify
|
|
513
|
+
prompt = prompt[:1000]
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
## Limitations
|
|
517
|
+
|
|
518
|
+
- Maximum 3 input images for composition
|
|
519
|
+
- Text rendering limited (25 chars max)
|
|
520
|
+
- No video or animation generation
|
|
521
|
+
- Regional restrictions (child images in EEA, CH, UK)
|
|
522
|
+
- Optimal language support: English, Spanish (Mexico), Japanese, Mandarin, Hindi
|
|
523
|
+
- No real-time generation
|
|
524
|
+
- Cannot perfectly replicate specific people or copyrighted characters
|
|
525
|
+
|
|
526
|
+
## Troubleshooting
|
|
527
|
+
|
|
528
|
+
### aspect_ratio Parameter Error
|
|
529
|
+
|
|
530
|
+
**Error**: `Extra inputs are not permitted [type=extra_forbidden, input_value='1:1', input_type=str]`
|
|
531
|
+
|
|
532
|
+
**Cause**: The `aspect_ratio` parameter must be nested inside an `image_config` object, not passed directly to `GenerateContentConfig`.
|
|
533
|
+
|
|
534
|
+
**Incorrect Usage**:
|
|
535
|
+
```python
|
|
536
|
+
# ❌ This will fail
|
|
537
|
+
config = types.GenerateContentConfig(
|
|
538
|
+
response_modalities=['image'],
|
|
539
|
+
aspect_ratio='16:9' # Wrong - not a direct parameter
|
|
540
|
+
)
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
**Correct Usage**:
|
|
544
|
+
```python
|
|
545
|
+
# ✅ Correct implementation
|
|
546
|
+
config = types.GenerateContentConfig(
|
|
547
|
+
response_modalities=['Image'], # Note: Capital 'I'
|
|
548
|
+
image_config=types.ImageConfig(
|
|
549
|
+
aspect_ratio='16:9'
|
|
550
|
+
)
|
|
551
|
+
)
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
### Response Modality Case Sensitivity
|
|
555
|
+
|
|
556
|
+
The `response_modalities` parameter expects capital case values:
|
|
557
|
+
- ✅ Correct: `['Image']`, `['Text']`, `['Image', 'Text']`
|
|
558
|
+
- ❌ Wrong: `['image']`, `['text']`
|