Midjourney出图好不好看,关键在提示词怎么写,写得好能事半功倍。这篇文章总结了一套实用的提示词写作方法,包括主体描述、风格关键词、参数设置、负面提示、权重控制等,配上大量案例和对比图,适合想提升AI出图质量的创作者和设计师参考,帮你轻松写出专业级Midjourney提示词,让出图质量和效率都上一个台阶。
需要学习Midjourney提示词,用AIGC工具提升社区内容运营效率。本篇涵盖文生图/文生视频/AI音乐/Prompt创意,帮助你掌握AI创意生产工具链。
可视化演示
展示提示词分层构建、参数效果对比与权重分配机制,交互调节参数值观察提示词变化。
本节配有交互动效(进入视口后自动加载,约 3KB)。
\u63d0\u793a\u8bcd\u5206\u5c42\u7ed3\u6784 \u4e3b\u4f53\u2192\u98ce\u683c\u2192\u53c2\u6570\u2192\u8d1f\u9762\u2192\u6743\u91cd \u4ece\u5b8f\u89c2\u5230\u5fae\u89c2\u9010\u5c42\u586b\u5145 Prompt = Sub + Style + Param \u5206\u5c42\u7ed3\u6784\u63d0\u5347\u51fa\u56fe\u8d28\u91cf
提示词写作的核心方法论
提示词(Prompt)是决定 Midjourney 出图质量的关键因素。与 Stable Diffusion 等开源模型不同,Midjourney 采用闭源模型并对自然语言有较强的理解能力,但这并不意味着随意输入文字就能得到理想结果。专业的提示词写作遵循结构化方法论,将提示词分为三个核心要素:主体描述、风格关键词和参数设置。
主体描述(Subject)是提示词的基础,定义画面的核心内容和构图方式。好的主体描述应该明确、具体,避免模糊的表述。例如「一只猫」过于宽泛,「一只橘色的虎斑猫坐在窗台上眺望城市夜景」则提供了明确的主体、姿态和场景信息,为模型提供了足够的生成线索。
风格关键词(Style Keywords)控制画面的艺术风格和视觉氛围。Midjourney 支持大量的风格描述词,包括艺术流派(impressionism, cyberpunk)、视觉风格(cinematic, ethereal)、艺术家名字(by Van Gogh, by Studio Ghibli)以及技术参数(8k, photorealistic)。风格关键词的选择需要与主体描述协调,过多或冲突的风格词会导致画面混乱。
参数设置(Parameters)是 Midjourney 独有的控制维度,通过 --ar、--v、--stylize 等参数精确控制输出尺寸、模型版本和风格化程度。参数以双横线开头,放在提示词末尾。写提示词就像给厨师写菜谱,主体是食材、风格是菜系、参数是火候,三者配合才能做出好菜。
主体描述与风格关键词运用
主体描述的核心原则是「从宏观到微观」。先定义画面的整体场景和主体,再逐步添加细节描述。例如描述一个城市街景时,先写「繁华的未来城市街道」,再补充「霓虹灯闪烁、飞行汽车穿梭、行人穿着科技感服饰」等细节。这种从粗到细的描述方式符合模型对图像生成的分层理解机制。
风格关键词的运用需要理解关键词之间的优先级关系。Midjourney 对提示词前部的关键词赋予更高的权重,因此最关键的风格描述应放在提示词开头附近。将最重要的风格词放在主体描述之后、其他修饰词之前,能确保核心风格被准确执行。当需要强调某个特定元素时,可以使用权重控制语法(双冒号::)来调整其在整体提示词中的影响比例。
参考艺术家名字是精准控制画面风格的有效技巧。输入「by [Artist Name]」可以让模型模仿特定艺术家的风格。例如「by Hayao Miyazaki」会产生吉卜力工作室风格的柔和色调和手绘质感,「by Greg Rutkowski」则产生史诗级奇幻画风。多个艺术家可以组合使用,如「by Van Gogh and Picasso」会产生混合风格,但组合过多艺术家可能导致风格冲突,建议不超过两个。
常见的风格关键词组合包括:电影感(cinematic, film grain, depth of field, volumetric lighting)、超现实(surreal, dreamlike, ethereal, otherworldly)、赛博朋克(cyberpunk, neon, futuristic, dystopian)、水彩(watercolor, soft colors, fluid, organic)。选择风格组合时应确保关键词之间的视觉方向一致,避免相互矛盾的描述导致模型生成困惑的图像。
参数设置与版本选择
Midjourney 的参数系统是区别于其他 AI 绘图工具的核心特性。最常用的参数包括 --ar(宽高比)、--v(模型版本)、--stylize(风格化程度)和 --chaos(变化度)。--ar 参数控制输出图像的宽高比,如 --ar 16:9 生成宽屏图像,--ar 9:16 生成竖屏图像,--ar 1:1 为默认正方形。宽高比的选择应匹配最终展示场景的需求。
--v 参数选择模型版本,目前主流版本为 v5 和 v6。v6 是最新版本,对自然语言理解更强,能更好地理解长句和复杂描述,适合写自然语言风格的提示词。v5 系列对短关键词的响应更直接,在精确控制特定风格时仍有优势。不同版本的提示词写法不完全一样,v6 更接近自然语言对话,而 v5 更依赖关键词堆叠。版本迭代会改变参数行为,需根据版本调整提示词写法。
--stylize(缩写 --s)参数控制风格化的程度,范围 0-1000,默认 100。较低的值(0-50)使图像更贴近提示词的字面描述,适合需要精确还原场景的用途;较高的值(500-1000)让模型发挥更多艺术创造力,产生更风格化的画面,但可能偏离原始描述。商业设计场景通常使用中等值(100-250),在精确控制和艺术性之间取得平衡。
--chaos 参数控制初始网格四张图的差异程度,范围 0-100,默认 0。值为 0 时四张图非常相似,值为 100 时四张图风格差异很大。在需要快速探索多种创意方向时可以使用较高的 chaos 值,在需要精细调整时使用较低的值。此外 --quality(缩写 --q)控制生成质量,--q 2 为最高质量但耗时更长,--q 0.5 为快速预览模式。
负面提示与权重控制技巧
负面提示(Negative Prompt)在 Midjourney 中通过 --no 参数实现,用于排除不想要的元素。例如 --no text, watermark 可以减少画面中文字和水印的出现。但负面提示词的处理能力有限,复杂场景仍需通过正面提示精确描述想要的结果来引导生成,不能完全依赖 --no 参数精确排除所有不想要的元素。
权重控制是 Midjourney 高级提示词技巧的核心。使用双冒号:: 语法可以为提示词的不同部分分配权重。例如 hot::2 dog 表示「hot」的权重是「dog」的两倍,生成的图像会更强调「热」的概念。权重控制就像调音台的推子,每个推子控制一种声音的音量大小,调出和谐的混音效果。通过调整各部分的权重比例,可以精确控制画面中不同元素的影响强度。
权重数值可以是正数也可以是负数。正权重增强该元素的呈现,负权重则抑制该元素。例如 nature::1 city::-0.5 表示增强自然元素、削弱城市元素。权重的绝对值越大,该方向的影响越强。需要注意的是,极端的权重值(如::10 或::-10)可能导致画面失真或产生不可预期的结果,建议在 -2 到 2 的范围内调整。
文本权重还可以通过括号和数值的组合来实现。例如 (colorful:1.5) 表示将「colorful」的权重提高 1.5 倍。这种写法在 v5 及更早版本中常用,v6 版本更推荐使用双冒号语法。多层嵌套权重也是可行的,如 ((detailed face):1.3):1.2,但过于复杂的嵌套可能导致模型理解困难,建议保持权重结构简洁,一般不超过两层嵌套。
案例对比与专业级提示词实战
通过案例对比可以直观感受提示词优化的效果。初学者常见的提示词「beautiful landscape, nice colors, good quality」过于模糊,生成的图像缺乏明确方向。专业级提示词「sweeping mountain vista at golden hour, dramatic clouds casting long shadows, alpine lake reflecting snow-capped peaks, cinematic composition, shot on Hasselblad, 8k resolution --ar 16:9 --v 6 --stylize 200」提供了明确的主体、光影、构图和设备参数,生成结果的精确度和质量显著提升。
从初学者到专业级的提示词进阶路径分为三个阶段。初级阶段学习基本结构和参数语法,能写出包含主体和 3-5 个风格词的提示词。中级阶段掌握权重控制和负面提示,能通过双冒号和 --no 参数进行精细调整。高级阶段建立个人提示词库和模板系统,针对不同场景维护一套经过验证的提示词模板,实现高效批量出图。
商业设计场景的提示词模板通常包含品牌风格约束、构图规范和参数预设。例如电商产品图的模板:[product name] on clean white background, studio lighting, product photography, sharp focus, commercial quality --ar 1:1 --v 6 --stylize 50 --q 2。品牌视觉的模板:[brand concept], [brand color palette], modern minimalist design, consistent visual identity --ar 16:9 --v 6 --stylize 100。使用模板可以确保团队出图的风格一致性,同时通过替换变量快速适配不同需求。
实战中还需要掌握迭代优化的技巧。首次生成后,通过放大(Upscale)和变体(Variation)功能在已有结果基础上微调。选择最接近目标的图像,生成 V1-V4 变体进一步细化。每次迭代时微调提示词中的 1-2 个关键词或参数,观察变化方向,逐步逼近理想效果。这种增量优化策略比一次性追求完美提示词更高效,也更容易控制生成方向。
AI 应用场景
商业插画批量生成的提示词模板化
阶段:图像生成
解决的问题:商业插画创作中,设计师每次手写提示词导致出图质量不稳定,风格不一致,反复试错消耗大量时间。通过建立结构化提示词模板,将创作流程标准化。
具体案例:某广告公司设计师维护一套品牌级提示词模板库,包含产品广告、人物插画、场景渲染等 6 个模板。每次接到新需求时,只需替换模板中的主体描述和少量风格修饰词,5 分钟内完成提示词构建。模板化后出图成功率从 30% 提升到 75%,首次满意率大幅提高,客户交付周期从 3 天缩短到 1 天。
社交媒体内容运营的快速出图
阶段:图像生成
解决的问题:社交媒体运营需要每日产出大量配图,但设计师人力有限。通过 Midjourney 提示词技巧,运营人员可以自主生成高质量的配图,降低设计依赖。
具体案例:某生活方式类公众号运营人员掌握了 Midjourney 提示词写作技巧后,使用「minimalist lifestyle photography, soft natural light, warm tones, cozy atmosphere, instagram aesthetic --ar 1:1 --v 6 --stylize 150」等模板,每天产出 5-8 张高质量配图,不再需要设计师介入日常配图,月度内容配图效率提升 300%。
Python 演示
import refrom dataclasses import dataclass, fieldfrom typing import Optional @dataclassclass MidjourneyParams: """Midjourney 参数容器""" ar: str = "1:1" v: str = "6" stylize: int = 100 chaos: int = 0 quality: float = 1.0 no: Optional[str] = None def to_string(self): parts = [f"--ar {self.ar}", f"--v {self.v}", f"--s {self.stylize}"] if self.chaos > 0: parts.append(f"--c {self.chaos}") if self.quality != 1.0: parts.append(f"--q {self.quality}") if self.no: parts.append(f"--no {self.no}") return " ".join(parts) @dataclassclass PromptSegment: """提示词片段(支持权重)""" text: str weight: float = 1.0 def to_string(self): if self.weight == 1.0: return self.text if self.weight == int(self.weight): return f"{self.text}::{int(self.weight)}" return f"{self.text}::{self.weight}" class PromptBuilder: """Midjourney 提示词构建器""" def __init__(self): self.subject = "" self.style_segments: list[PromptSegment] = [] self.params = MidjourneyParams() def set_subject(self, subject: str): self.subject = subject return self def add_style(self, text: str, weight: float = 1.0): self.style_segments.append(PromptSegment(text, weight)) return self def set_params(self, **kwargs): for key, val in kwargs.items(): setattr(self.params, key, val) return self def build(self): parts = [self.subject] for seg in self.style_segments: parts.append(seg.to_string()) parts.append(self.params.to_string()) return ", ".join( [p for p in parts[:1]] + [s.to_string() if isinstance(s, PromptSegment) else s for s in self.style_segments] ) + " " + self.params.to_string() class PromptAnalyzer: """提示词分析器:解析已有提示词""" PARAM_PATTERN = re.compile(r"--(\w+)\s+(\S+)") @staticmethod def analyze(prompt: str): params = {} clean_prompt = prompt for match in PromptAnalyzer.PARAM_PATTERN.finditer(prompt): key, val = match.group(1), match.group(2) params[key] = val clean_prompt = clean_prompt.replace(match.group(0), "").strip() segments = clean_prompt.split("::") weighted = [] for seg in segments: parts = seg.strip().rsplit(" ", 1) if len(parts) == 2 and _is_number(parts[1]): weighted.append((parts[0].strip(), float(parts[1]))) else: weighted.append((seg.strip(), 1.0)) return {"params": params, "segments": weighted} def _is_number(s): try: float(s) return True except ValueError: return False # 构建示例提示词builder = PromptBuilder()builder.set_subject("a serene Japanese garden with cherry blossoms")builder.add_style("cinematic composition", 1.5)builder.add_style("soft morning light")builder.add_style("by Hayao Miyazaki", 0.8)builder.set_params(ar="16:9", v="6", stylize=200, no="text, watermark") prompt = builder.subject + ", "prompt += ", ".join(s.to_string() for s in builder.style_segments)prompt += " " + builder.params.to_string() print("Generated Prompt:")print(prompt)print() # 分析已有提示词existing = "hot::2 dog::1 cityscape --ar 16:9 --v 6 --s 150"analysis = PromptAnalyzer.analyze(existing)print("Analyzed Prompt:")print(f" Segments: {analysis['segments']}")print(f" Params: {analysis['params']}")
class MidjourneyParams:定义 Midjourney 参数容器类,存储 ar(宽高比)、v(版本)、stylize(风格化)等参数。def to_string(self):将参数对象序列化为 Midjourney 命令行格式字符串,如 --ar 16:9 --v 6 --s 200。parts = [f"--ar {self.ar}", f"--v {self.v}", f"--s {self.stylize}"]构建基本参数字符串列表,ar、v、stylize 是最常用的三个参数。if self.no:负面提示词参数 --no 仅在有值时输出,避免生成空的 --no 参数。class PromptSegment:提示词片段类,每个片段包含文本和权重值,支持双冒号权重语法。def to_string(self):将片段序列化为字符串,权重为 1.0 时只输出文本,否则附加::weight。if self.weight == 1.0:权重为默认值 1.0 时不附加权重标记,保持提示词简洁。return f"{self.text}::{int(self.weight)}"整数权重时输出整数形式,如 hot::2,符合 Midjourney 权重语法。class PromptBuilder:提示词构建器类,采用链式调用模式组合主体描述、风格关键词和参数。def set_subject(self, subject: str):设置主体描述,这是提示词的核心部分,定义画面的主要内容。def add_style(self, text: str, weight: float = 1.0):添加风格关键词片段,可指定权重值控制该关键词在整体提示词中的影响比例。def set_params(self, **kwargs):批量设置参数,通过关键字参数灵活配置 ar、v、stylize 等参数。class PromptAnalyzer:提示词分析器类,用于反向解析已有提示词的结构和参数。PARAM_PATTERN = re.compile(r"--(\w+)\s+(\S+)")正则表达式模式,匹配 --param value 格式的 Midjourney 参数。@staticmethod使用静态方法装饰器,分析功能不依赖实例状态,可直接通过类名调用。def analyze(prompt: str):分析提示词方法,提取参数和带权重的片段,返回结构化解析结果。segments = clean_prompt.split("::")按双冒号分割提示词,分离出带权重的不同片段。if len(parts) == 2 and _is_number(parts[1]):检查分割后的最后部分是否为数字,以判断是否为权重值。weighted.append((parts[0].strip(), float(parts[1])))将带权重的片段记录为(文本,权重)元组,无权重的默认为 1.0。return {"params": params, "segments": weighted}返回包含解析出的参数字典和片段列表的结果对象。def _is_number(s):辅助函数,判断字符串是否可转换为浮点数,用于权重解析。builder.set_subject("a serene Japanese garden with cherry blossoms")设置主体描述为日本花园樱花场景,提供明确的画面核心内容。builder.add_style("cinematic composition", 1.5)添加电影构图风格并赋予 1.5 倍权重,增强构图效果在生成中的影响。builder.set_params(ar="16:9", v="6", stylize=200, no="text, watermark")设置宽屏比例、v6 版本、中高风格化度并排除文字水印。
常见问答
Midjourney 的提示词应该用自然语言还是关键词堆叠?
--stylize 参数值越高越好吗?
双冒号 :: 权重和括号权重有什么区别?
如何选择 --ar 宽高比?
提示词中英文哪种效果更好?
常见误区
误区提示词越长越详细出图效果越好
正解提示词需要主体、风格、参数三要素配合,堆砌关键词反而会导致画面混乱、元素冲突。好的提示词应该在精炼和详细之间取得平衡,核心信息突出,辅助描述适度。通常 15-30 个词的提示词效果最佳,过长的提示词会让模型难以确定优先级。
为何常见:用户误以为更多关键词等同于更好效果,缺乏对模型注意力机制的理解。实际上模型对提示词有注意力衰减,过长的提示词后段内容权重极低。
误区不同 Midjourney 版本的提示词写法完全一样
正解版本迭代会改变参数行为和提示词解析方式。v6 对自然语言理解更强,v5 更依赖关键词堆叠。v6 中一些 v5 常用的语法(如括号权重)行为发生了变化,需要根据版本调整提示词写法。切换版本时应重新测试和优化已有提示词模板。
为何常见:用户忽视版本更新带来的提示词语法变化,将旧版本的模板直接用于新版本,导致效果不如预期。版本间的差异在细节参数上尤其明显。
误区负面提示词 --no 能精确排除所有不想要的元素
正解负面提示处理能力有限,--no 参数更多是起到降低概率的作用而非完全排除。复杂场景中,仅靠 --no 难以精确控制画面内容,仍需通过正面提示精确描述想要的结果来引导生成。--no 适合处理水印、文字等通用元素,不适合排除特定的复杂内容。
为何常见:用户高估 --no 参数的排除精度,将其类比为 Stable Diffusion 中的负面提示词功能。但 Midjourney 的 --no 机制不同,影响力更弱。
误区参考艺术家名字一定能完美复现其风格
正解Midjourney 对艺术家风格的模仿是近似的,受到训练数据覆盖度和版权限制的影响。某些艺术家的风格可能没有被充分学习,或者多个艺术家组合时产生冲突。参考艺术家名字是风格引导的手段之一,但不是保证,应结合其他风格关键词共同描述以达到更稳定的风格效果。
为何常见:用户对 AI 的风格模仿能力期望过高,忽视了模型训练数据的局限性。实际效果还受提示词中其他关键词和参数的影响。
参考来源
- docMidjourney Prompts 官方文档Midjourney 官方提示词指南,涵盖基础语法、参数设置和高级技巧的官方说明。
- docMidjourney Parameter List 官方参数列表Midjourney 官方参数完整列表,包括 --ar、--v、--stylize、--chaos、--quality、--no 等所有参数的详细说明。
- docMidjourney Multi Prompts and Weights 官方文档Midjourney 官方多提示词和权重控制文档,详解双冒号 :: 权重语法和文本权重的高级用法。
- docMidjourney Model Versions 官方文档Midjourney 官方模型版本说明文档,对比 v5、v6 等不同版本的能力差异和提示词写法变化。
- webpagePromptBase Midjourney Prompt MarketplaceMidjourney 提示词市场,提供大量专业级提示词模板和案例参考,可用于学习商业设计场景的提示词结构。