[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F7QVC37EA2MMGCDZS1JBTT":3,"skill-same:01M6F7QVC37EA2MMGCDZS1JBTT":93},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":33,"commitSha":61,"skillDirectory":62,"forksCount":63,"repositoryHtmlUrl":64,"repositoryHomepageUrl":6,"ownerHtmlUrl":65,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":66,"install":67,"resources":80},"01M6F7QVC37EA2MMGCDZS1JBTT","image-generator",null,"Generate and edit images using Gemini's Nano Banana Pro model (gemini-3-pro-image-preview). Use this skill when the user asks you to generate images, create visuals, edit photos, create logos, generate product mockups, or perform any image generation\u002Fediting task.","boisenoise\u002Fskills-collections","boisenoise","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F193180?v=4","01M6CDBDQK6BDN55ZMA6B6PKBM","01M6CDBDVSJ3JPTBYN26FZ7TZK",12,"MIT","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-image-generator\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"generator","image generator","image","model","when","dair-academy","you","critical","banana","preview","main","images","Bash","Media","nano banana pro","product","code","create","official","workflow","cli","2026-11-10 10:12:30",false,"---\nname: image-generator\ndescription: Generate and edit images using Gemini's Nano Banana Pro model (gemini-3-pro-image-preview). Use this skill when the user asks you to generate images, create visuals, edit photos, create logos, generate product mockups, or perform any image generation\u002Fediting task.\nallowed-tools: Read, Write, Bash, WebFetch\ncategory: \"media\"\nrisk: \"critical\"\nsource: \"official\"\nsource_repo: \"dair-ai\u002Fdair-academy-plugins\"\nsource_type: \"official\"\ndate_added: \"2026-06-19\"\nauthor: \"DAIR.AI\"\nlicense: \"MIT\"\nlicense_source: \"https:\u002F\u002Fgithub.com\u002Fdair-ai\u002Fdair-academy-plugins\u002Fblob\u002Fmain\u002FREADME.md#license\"\ntags:\n  - dair-academy\n  - ai\n  - workflow\ntools:\n  - claude-code\n  - codex-cli\n  - cursor\n---\n\n# Image Generator\n\n## Detailed Guide\n\nRead [the detailed guide](references\u002Fdetailed-guide.md) before executing this skill. It retains the complete procedure and reference material. Treat its safety, prerequisites, and validation requirements as mandatory. For focused work, load the relevant sections; for end-to-end work, read the guide completely.\n\n## When to Use\n\nUse when this workflow matches the user request: Generate and edit images using Gemini's Nano Banana Pro model (gemini-3-pro-image-preview). Use this skill when the user asks you to generate images, create visuals, edit photos, create logos, generate product mockups, or perform any image generation\u002Fediting task.\n\n\n_Source: [dair-ai\u002Fdair-academy-plugins](https:\u002F\u002Fgithub.com\u002Fdair-ai\u002Fdair-academy-plugins) (MIT)._\n\nThis skill generates and edits images using Google's Gemini Nano Banana Pro model (`gemini-3-pro-image-preview`).\n\n## API Usage\n\nPaid external API workflow: confirm approved model\u002Fbudget, exact prompt and input image set, rights\u002Fconsent and provider data policy before requests. Model ID\u002Foptions below are historical examples; check current availability and SDK version. Never promise exact text, masking or resolution; inspect returned MIME\u002Fdimensions and visible output. Preserve originals and use new unique output names, writing only within the authorized destination. A missing\u002Fblocked image is not success; do not retry billable calls blindly after uncertain outcomes.\n\n### Basic Text-to-Image (Python)\n\n```python\nfrom google import genai\nfrom google.genai import types\n\nclient = genai.Client()\n\nresponse = client.models.generate_content(\n    model=\"gemini-3-pro-image-preview\",\n    contents=[\"Your prompt here\"],\n    config=types.GenerateContentConfig(\n        response_modalities=['TEXT', 'IMAGE'],\n        image_config=types.ImageConfig(\n            aspect_ratio=\"16:9\",  # Optional\n            image_size=\"2K\"       # Optional: \"1K\", \"2K\", \"4K\"\n        )\n    )\n)\n\nfor part in response.parts:\n    if part.text is not None:\n        print(part.text)\n    elif part.inline_data is not None:\n        image = part.as_image()\n        image.save(\"generated_image.png\")\n```\n\n### Basic Text-to-Image (JavaScript)\n\n```javascript\nimport { GoogleGenAI } from \"@google\u002Fgenai\";\nimport * as fs from \"node:fs\";\n\nconst ai = new GoogleGenAI({});\n\nconst response = await ai.models.generateContent({\n    model: \"gemini-3-pro-image-preview\",\n    contents: \"Your prompt here\",\n    config: {\n        responseModalities: ['TEXT', 'IMAGE'],\n        imageConfig: {\n            aspectRatio: \"16:9\",\n            imageSize: \"2K\"\n        }\n    }\n});\n\nfor (const part of response.candidates[0].content.parts) {\n    if (part.text) {\n        console.log(part.text);\n    } else if (part.inlineData) {\n        const buffer = Buffer.from(part.inlineData.data, \"base64\");\n        fs.writeFileSync(\"generated_image.png\", buffer);\n    }\n}\n```\n\n### REST alternative\n\nPrefer the SDK examples so credentials are not interpolated into command-line headers and JSON is serialized correctly. If implementing REST, use a protected header\u002Frequest file, explicit timeouts and HTTP-status handling; validate candidate\u002Fpart\u002FMIME fields before writing bytes. Do not assume the first candidate or an image exists.\n\n### Image Editing (with input image)\n\n```python\nfrom google import genai\nfrom google.genai import types\nfrom PIL import Image\n\nclient = genai.Client()\n\ninput_image = Image.open('input.png')\nprompt = \"Add a wizard hat to the cat in this image\"\n\nresponse = client.models.generate_content(\n    model=\"gemini-3-pro-image-preview\",\n    contents=[prompt, input_image],\n    config=types.GenerateContentConfig(\n        response_modalities=['TEXT', 'IMAGE']\n    )\n)\n\nfor part in response.parts:\n    if part.inline_data is not None:\n        image = part.as_image()\n        image.save(\"edited_image.png\")\n```\n\n### Multi-Image Composition\n\n```python\nfrom google import genai\nfrom google.genai import types\nfrom PIL import Image\n\nclient = genai.Client()\n\nimage1 = Image.open('dress.png')\nimage2 = Image.open('model.png')\nprompt = \"Put the dress from the first image on the model from the second image\"\n\nresponse = client.models.generate_content(\n    model=\"gemini-3-pro-image-preview\",\n    contents=[image1, image2, prompt],\n    config=types.GenerateContentConfig(\n        response_modalities=['TEXT', 'IMAGE'],\n        image_config=types.ImageConfig(\n            aspect_ratio=\"3:4\",\n            image_size=\"2K\"\n        )\n    )\n)\n```\n\n### With Google Search Grounding\n\n```python\nfrom google import genai\nfrom google.genai import types\n\nclient = genai.Client()\n\nresponse = client.models.generate_content(\n    model=\"gemini-3-pro-image-preview\",\n    contents=\"Visualize the current weather forecast for San Francisco\",\n    config=types.GenerateContentConfig(\n        response_modalities=['TEXT', 'IMAGE'],\n        image_config=types.ImageConfig(aspect_ratio=\"16:9\"),\n        tools=[{\"google_search\": {}}]\n    )\n)\n```\n\n## Limitations\n\n- Requires the upstream tool, account, API key, or local setup when the workflow names one.\n- Does not authorize destructive, production, paid, or external-message actions without explicit user approval.\n- Validate generated artifacts or recommendations against the user's real sources before treating them as final.\n","# Image Generator\n\n## Detailed Guide\n\nRead [the detailed guide](references\u002Fdetailed-guide.md) before executing this skill. It retains the complete procedure and reference material. Treat its safety, prerequisites, and validation requirements as mandatory. For focused work, load the relevant sections; for end-to-end work, read the guide completely.\n\n## When to Use\n\nUse when this workflow matches the user request: Generate and edit images using Gemini's Nano Banana Pro model (gemini-3-pro-image-preview). Use this skill when the user asks you to generate images, create visuals, edit photos, create logos, generate product mockups, or perform any image generation\u002Fediting task.\n\n\n_Source: [dair-ai\u002Fdair-academy-plugins](https:\u002F\u002Fgithub.com\u002Fdair-ai\u002Fdair-academy-plugins) (MIT)._\n\nThis skill generates and edits images using Google's Gemini Nano Banana Pro model (`gemini-3-pro-image-preview`).\n\n## API Usage\n\nPaid external API workflow: confirm approved model\u002Fbudget, exact prompt and input image set, rights\u002Fconsent and provider data policy before requests. Model ID\u002Foptions below are historical examples; check current availability and SDK version. Never promise exact text, masking or resolution; inspect returned MIME\u002Fdimensions and visible output. Preserve originals and use new unique output names, writing only within the authorized destination. A missing\u002Fblocked image is not success; do not retry billable calls blindly after uncertain outcomes.\n\n### Basic Text-to-Image (Python)\n\n```python\nfrom google import genai\nfrom google.genai import types\n\nclient = genai.Client()\n\nresponse = client.models.generate_content(\n    model=\"gemini-3-pro-image-preview\",\n    contents=[\"Your prompt here\"],\n    config=types.GenerateContentConfig(\n        response_modalities=['TEXT', 'IMAGE'],\n        image_config=types.ImageConfig(\n            aspect_ratio=\"16:9\",  # Optional\n            image_size=\"2K\"       # Optional: \"1K\", \"2K\", \"4K\"\n        )\n    )\n)\n\nfor part in response.parts:\n    if part.text is not None:\n        print(part.text)\n    elif part.inline_data is not None:\n        image = part.as_image()\n        image.save(\"generated_image.png\")\n```\n\n### Basic Text-to-Image (JavaScript)\n\n```javascript\nimport { GoogleGenAI } from \"@google\u002Fgenai\";\nimport * as fs from \"node:fs\";\n\nconst ai = new GoogleGenAI({});\n\nconst response = await ai.models.generateContent({\n    model: \"gemini-3-pro-image-preview\",\n    contents: \"Your prompt here\",\n    config: {\n        responseModalities: ['TEXT', 'IMAGE'],\n        imageConfig: {\n            aspectRatio: \"16:9\",\n            imageSize: \"2K\"\n        }\n    }\n});\n\nfor (const part of response.candidates[0].content.parts) {\n    if (part.text) {\n        console.log(part.text);\n    } else if (part.inlineData) {\n        const buffer = Buffer.from(part.inlineData.data, \"base64\");\n        fs.writeFileSync(\"generated_image.png\", buffer);\n    }\n}\n```\n\n### REST alternative\n\nPrefer the SDK examples so credentials are not interpolated into command-line headers and JSON is serialized correctly. If implementing REST, use a protected header\u002Frequest file, explicit timeouts and HTTP-status handling; validate candidate\u002Fpart\u002FMIME fields before writing bytes. Do not assume the first candidate or an image exists.\n\n### Image Editing (with input image)\n\n```python\nfrom google import genai\nfrom google.genai import types\nfrom PIL import Image\n\nclient = genai.Client()\n\ninput_image = Image.open('input.png')\nprompt = \"Add a wizard hat to the cat in this image\"\n\nresponse = client.models.generate_content(\n    model=\"gemini-3-pro-image-preview\",\n    contents=[prompt, input_image],\n    config=types.GenerateContentConfig(\n        response_modalities=['TEXT', 'IMAGE']\n    )\n)\n\nfor part in response.parts:\n    if part.inline_data is not None:\n        image = part.as_image()\n        image.save(\"edited_image.png\")\n```\n\n### Multi-Image Composition\n\n```python\nfrom google import genai\nfrom google.genai import types\nfrom PIL import Image\n\nclient = genai.Client()\n\nimage1 = Image.open('dress.png')\nimage2 = Image.open('model.png')\nprompt = \"Put the dress from the first image on the model from the second image\"\n\nresponse = client.models.generate_content(\n    model=\"gemini-3-pro-image-preview\",\n    contents=[image1, image2, prompt],\n    config=types.GenerateContentConfig(\n        response_modalities=['TEXT', 'IMAGE'],\n        image_config=types.ImageConfig(\n            aspect_ratio=\"3:4\",\n            image_size=\"2K\"\n        )\n    )\n)\n```\n\n### With Google Search Grounding\n\n```python\nfrom google import genai\nfrom google.genai import types\n\nclient = genai.Client()\n\nresponse = client.models.generate_content(\n    model=\"gemini-3-pro-image-preview\",\n    contents=\"Visualize the current weather forecast for San Francisco\",\n    config=types.GenerateContentConfig(\n        response_modalities=['TEXT', 'IMAGE'],\n        image_config=types.ImageConfig(aspect_ratio=\"16:9\"),\n        tools=[{\"google_search\": {}}]\n    )\n)\n```\n\n## Limitations\n\n- Requires the upstream tool, account, API key, or local setup when the workflow names one.\n- Does not authorize destructive, production, paid, or external-message actions without explicit user approval.\n- Validate generated artifacts or recommendations against the user's real sources before treating them as final.\n",{"name":5,"risk":30,"tags":49,"tools":51,"author":55,"source":41,"license":14,"category":56,"date_added":57,"description":7,"source_repo":58,"source_type":41,"allowed-tools":59,"license_source":60},[28,50,42],"ai",[52,53,54],"claude-code","codex-cli","cursor","DAIR.AI","media","2026-06-19","dair-ai\u002Fdair-academy-plugins","Read, Write, Bash, WebFetch","https:\u002F\u002Fgithub.com\u002Fdair-ai\u002Fdair-academy-plugins\u002Fblob\u002Fmain\u002FREADME.md#license","7bf2279c8a65758319526a721d5c4b75683aec9c","skills\u002Fantigravity-image-generator",3,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections","https:\u002F\u002Fgithub.com\u002Fboisenoise","2026-11-11 14:20:43",{"source":8,"skillName":5,"commands":68,"prompt":78,"zipAvailable":79},[69,72,75],{"tool":70,"command":71},"npx","npx skills add boisenoise\u002Fskills-collections --skill image-generator",{"tool":73,"command":74},"bunx","bunx skills add boisenoise\u002Fskills-collections --skill image-generator",{"tool":76,"command":77},"pnpm","pnpm dlx skills add boisenoise\u002Fskills-collections --skill image-generator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-image-generator\u002FSKILL.md",true,[81,87],{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},".env.example","OTHER","其他",158,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-image-generator\u002F.env.example",{"path":88,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fdetailed-guide.md","REFERENCE","参考文档",7041,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-image-generator\u002Freferences\u002Fdetailed-guide.md",[94,121,146,172,191,213],{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":98,"licenseFileUrl":99,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":44},"01M6WNH92BHVFXHGPDZCPJ0AG0","web-access","Use Treg for public web or platform data only when existing search, browser and connected tools cannot cover the task, with explicit cost and data boundaries.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FSKILL.md",[],[103,104,105,41,106,107,108,109,110,111,112,113,114,115,116,30,117,118,119,27,120],"web","access","web access","development","browser","search","data","Tools","read","fetch","only","youtube","free tools","platform","free","cover","normal","2026",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":98,"licenseFileUrl":125,"sourceHtmlUrl":126,"categories":127,"keywords":131,"publishedAt":44},"01M6WNF9XAYAB2CZDDJBAKNM93","treg","Use the Treg CLI or MCP catalog to discover, price and call authorized external tools with team-scoped credentials and a user-approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FSKILL.md",[128],{"categoryNo":129,"categoryName":130,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[123,132,43,133,41,106,134,110,135,136,137,138,139,140,141,30,142,143,144,145,120],"MCP","github","license","Budget","credentials","team","catalog","use","call","discover","external tools","with","scoped","blob",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":98,"licenseFileUrl":150,"sourceHtmlUrl":151,"categories":152,"keywords":158,"publishedAt":44},"01M6WN93MEAZ4E41DYAHJRPHQT","recruit","Turn a job description into an evidence-linked candidate shortlist through Treg, with job-related ranking and optional authorized business contact enrichment.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FSKILL.md",[153],{"categoryNo":154,"categoryName":155,"taxonomyType":156,"taxonomyTypeDesc":157},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[148,133,41,134,159,160,161,162,163,164,30,165,166,167,143,168,169,170,171,145,123,120],"https","email","enrichment","business","evidence","phone","ranking","post","job description","for","person","candidate","reason",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":98,"licenseFileUrl":176,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":44},"01M6WN8R5RXSMHM9B4D9FAFX42","rea-growth","Analyze a company’s public growth and content through Treg, distinguish observations from hypotheses, and produce an evidence-linked playbook within an approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FSKILL.md",[],[180,181,182,133,41,134,183,184,159,185,135,186,187,188,163,30,189,190,145,123,120],"growth","rea","rea growth","produce","content","playbook","marketing","analyze","public","observations","company",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":98,"licenseFileUrl":195,"sourceHtmlUrl":196,"categories":197,"keywords":198,"publishedAt":44},"01M6WN2EVE3RQRGWAKBT4S7YT2","make-ugc","Create original AI UGC-style product videos through Treg: research hooks, approve a licensed presenter and voice, generate clips, add captions and report costs.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FSKILL.md",[],[199,200,133,201,41,40,134,202,203,204,205,206,30,207,208,209,210,211,212,145],"make","make ugc","research","Video","Captions","ads","short","hooks","head","style","niche","trending","talking-head","approve",{"skillNo":214,"name":215,"nameZh":6,"description":216,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":98,"licenseFileUrl":217,"sourceHtmlUrl":218,"categories":219,"keywords":220,"publishedAt":44},"01M6WN10ARAA63Y8K1YNGXJ2RM","lead-signals","Find and qualify public buying signals through Treg, rank fitting business accounts and optionally enrich authorized business contact information.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FSKILL.md",[],[221,222,223,133,41,134,224,225,162,226,227,30,228,229,230,231,232,233,234,145],"signals","lead","lead signals","how","find","ready","as","how to","qualify","people","information","enrich","changes","funding"]