关于 copywriter
copywriter 是面向产品团队和营销人员的写作技能,用于制作 UX、营销和产品内容。它通过模式与指南帮助撰写清晰、可执行的界面文案和推广内容。
主要功能
- 01UX 文案模式与示例
- 02营销页面与 CTA 文案
- 03产品说明和发布说明
- 04邮件与微文案模板
- 05品牌语气与风格指南
适用场景
- 01撰写按钮、表单和错误提示
- 02起草落地页与产品介绍
- 03编写欢迎邮件和营销邮件
- 04规划新用户引导文案
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ daffy0208/ ai-dev-standards --skill copywriter安装后在 Claude Code 中输入/copywriter确认已加载。
附带文件manifest.yamlREADME.md
详细介绍
文案撰写技能
我可以帮你为产品、营销和用户体验撰写清晰、有吸引力的文案。
我的工作内容
UX 文案:
- 按钮标签、表单字段、错误消息
- 空状态、引导流程
- 工具提示、帮助文本
- 确认对话框
营销文案:
- 落地页、主视觉区域
- 功能描述
- 行动号召(CTA)按钮
- 邮件营销活动
产品内容:
- 产品描述
- 功能公告
- 发行说明
- 文档
UX 文案模式
按钮标签
// ❌ Bad: Vague, passive
<Button>Submit</Button>
<Button>OK</Button>
<Button>Click Here</Button>
// ✅ Good: Specific, action-oriented
<Button>Create Account</Button>
<Button>Save Changes</Button>
<Button>Start Free Trial</Button>
指南:
- 使用“动词 + 名词”(如“保存更改”,而非“保存”)
- 具体明确(如“删除帖子”,而非“删除”)
- 展示操作结果(如“开始免费试用”,而非“提交”)
错误消息
// ❌ Bad: Technical, blaming user
"Invalid input"
"Error 422: Unprocessable Entity"
"You entered the wrong password"
// ✅ Good: Helpful, actionable
"Please enter a valid email address"
"We couldn't find an account with that email"
"Password must be at least 8 characters"
// Implementation
function PasswordInput() {
const [error, setError] = useState('')
const validate = (password: string) => {
if (password.length < 8) {
setError('Password must be at least 8 characters')
} else if (!/[A-Z]/.test(password)) {
setError('Password must include at least one uppercase letter')
} else if (!/[0-9]/.test(password)) {
setError('Password must include at least one number')
} else {
setError('')
}
}
return (
<div>
<input type="password" onChange={(e) => validate(e.target.value)} />
{error && <p className="text-red-600">{error}</p>}
</div>
)
}
错误消息公式:
- 发生了什么
- 发生原因(可选)
- 如何修复
空状态
// ❌ Bad: Just says it's empty
<EmptyState message="No results" />
// ✅ Good: Explains and guides user
function EmptySearchResults() {
return (
<div className="text-center py-12">
<h3 className="text-lg font-semibold">No results found</h3>
<p className="mt-2 text-gray-600">
Try adjusting your search or filters to find what you're looking for
</p>
<Button onClick={clearFilters} className="mt-4">
Clear Filters
</Button>
</div>
)
}
function EmptyInbox() {
return (
<div className="text-center py-12">
<h3 className="text-lg font-semibold">You're all caught up!</h3>
<p className="mt-2 text-gray-600">
No new messages. Enjoy your day! 🎉
</p>
</div>
)
}
空状态公式:
- 标题(说明哪里为空)
- 解释(说明为何为空)
- 操作(说明接下来该做什么)
表单标签
// ❌ Bad: Unclear, jargon
<Label>Metadata</Label>
<Label>FTP Credentials</Label>
// ✅ Good: Clear, helpful
<Label>
Email Address
<span className="text-gray-500 text-sm ml-2">
We'll never share your email
</span>
</Label>
<Label>
Password
<span className="text-gray-500 text-sm ml-2">
Must be at least 8 characters
</span>
</Label>
标签指南:
- 使用清晰、日常的语言
- 为复杂字段添加帮助文本
- 避免使用技术术语
加载状态
// ❌ Bad: Generic
<Loading message="Loading..." />
// ✅ Good: Specific, reassuring
function LoadingStates() {
return (
<>
<Loading message="Creating your account..." />
<Loading message="Processing payment..." />
<Loading message="Uploading image (2/5)..." />
<Loading message="This might take a minute..." />
</>
)
}
成功消息
// ❌ Bad: Just confirms action
<Toast message="Saved" />
// ✅ Good: Confirms and suggests next step
function SuccessMessages() {
return (
<>
<Toast
message="Post published!"
action={
<Button onClick={viewPost}>View Post</Button>
}
/>
<Toast
message="Payment successful. Receipt sent to your email."
/>
<Toast
message="Profile updated. Changes are now live."
/>
</>
)
}
落地页文案
主视觉区域
// components/Hero.tsx
export function Hero() {
return (
<section className="text-center py-20">
{/* Headline: Clear value proposition */}
<h1 className="text-5xl font-bold">
Deploy your app in seconds, not hours
</h1>
{/* Subheadline: Expand on headline */}
<p className="mt-6 text-xl text-gray-600 max-w-2xl mx-auto">
Skip the complex setup. Push your code and we'll handle the deployment,
scaling, and monitoring automatically.
</p>
{/* CTA: Primary action */}
<div className="mt-10 flex gap-4 justify-center">
<Button size="lg">
Start Free Trial
</Button>
<Button size="lg" variant="outline">
Watch Demo (2 min)
</Button>
</div>
{/* Social proof */}
<p className="mt-8 text-sm text-gray-500">
Trusted by 50,000+ developers at companies like Airbnb, Netflix, and Shopify
</p>
</section>
)
}
主视觉文案公式:
- 标题:主要优势(而非你提供什么)
- 副标题:说明工作原理或适用对象
- CTA:主要操作
- 社会认同:建立可信度
示例:
❌ Bad:
"Cloud Deployment Platform"
"We provide deployment services"
✅ Good:
"Deploy with confidence"
"Ship faster with zero-config deploys"
"From code to production in 30 seconds"
功能描述
// components/Features.tsx
const features = [
{
title: 'Lightning-Fast Deploys',
description: 'Push your code and see it live in under 30 seconds. No waiting, no config files.',
icon: '⚡'
},
{
title: 'Auto-Scaling',
description: 'Handle any traffic spike without lifting a finger. We scale from zero to millions seamlessly.',
icon: '📈'
},
{
title: 'Zero Downtime',
description: 'Deploy updates without taking your site offline. Your users won't even notice.',
icon: '🛡️'
}
]
export function Features() {
return (
<section className="py-20">
<h2 className="text-3xl font-bold text-center">
Everything you need to ship fast
</h2>
<div className="mt-12 grid md:grid-cols-3 gap-8">
{features.map((feature) => (
<div key={feature.title}>
<div className="text-4xl mb-4">{feature.icon}</div>
<h3 className="text-xl font-semibold">{feature.title}</h3>
<p className="mt-2 text-gray-600">{feature.description}</p>
</div>
))}
</div>
</section>
)
}
功能文案指南:
- 聚焦优势,而非功能本身
- 使用主动语态
- 具体明确(数字、时间范围)
- 便于快速浏览
行动号召(CTA)
// Different CTA styles
// ❌ Generic
<Button>Sign Up</Button>
<Button>Learn More</Button>
// ✅ Value-focused
<Button>Start Free Trial</Button>
<Button>Get Started Free</Button>
<Button>Try it Free for 14 Days</Button>
// ✅ Urgency
<Button>Claim Your Spot</Button>
<Button>Join 10,000 Developers</Button>
// ✅ Low commitment
<Button>Browse Templates</Button>
<Button>See How It Works</Button>
CTA 文案公式:
- 以动词开头
- 突出优势
- 消除顾虑(如“免费”“无需信用卡”等)
邮件文案撰写
欢迎邮件
// Email template (React Email)
import { Button, Html, Heading, Text } from '@react-email/components'
export function WelcomeEmail({ name }: { name: string }) {
return (
<Html>
<Heading>Welcome to TechStart, {name}! 👋</Heading>
<Text>
Thanks for signing up! We're excited to help you deploy faster.
</Text>
<Text>
Here's what to do next:
</Text>
<ul>
<li>Connect your Git repository</li>
<li>Deploy your first project (takes 2 minutes)</li>
<li>Invite your team members</li>
</ul>
<Button href="https://app.techstart.com/deploy">
Deploy Your First Project
</Button>
<Text>
Need help? Reply to this email or check our{' '}
<a href="https://docs.techstart.com">docs</a>.
</Text>
<Text>
Happy deploying!<br />
The TechStart Team
</Text>
</Html>
)
}
事务性邮件
export function PaymentSuccessEmail({ orderNumber, total }: {
orderNumber: string
total: string
}) {
return (
<Html>
<Heading>Payment Successful</Heading>
<Text>
We've received your payment of {total}.
</Text>
<Text>
<strong>Order Number:</strong> {orderNumber}<br />
<strong>Receipt:</strong> Sent to your email
</Text>
<Button href={`https://app.techstart.com/orders/${orderNumber}`}>
View Order Details
</Button>
<Text>
Questions? Contact [email protected]
</Text>
</Html>
)
}
微文案示例
工具提示
// ❌ Bad: Repeats label
<Tooltip content="Click to delete">
<Button>Delete</Button>
</Tooltip>
// ✅ Good: Adds helpful context
<Tooltip content="This action cannot be undone">
<Button>Delete</Button>
</Tooltip>
<Tooltip content="Visible to all team members">
<Toggle>Public</Toggle>
</Tooltip>
确认对话框
// ❌ Bad: Scary, unclear
<Dialog
title="Warning"
message="Are you sure?"
confirmButton="Yes"
/>
// ✅ Good: Clear, specific
<Dialog
title="Delete this post?"
message="This post will be permanently deleted. You can't undo this action."
confirmButton="Delete Post"
cancelButton="Cancel"
variant="destructive"
/>
占位文本
// ❌ Bad: Generic
<Input placeholder="Enter value" />
// ✅ Good: Helpful example
<Input placeholder="e.g., [email protected]" />
<Input placeholder="e.g., My Awesome Project" />
<TextArea placeholder="Tell us what happened..." />
品牌声音与语气指南
品牌声音(一致)
## TechStart Voice
**Professional but friendly**
- We're experts, but we don't talk down to you
- Use "we" and "you" (not "I" or "users")
**Clear and concise**
- Short sentences
- Simple words
- No jargon (unless necessary)
**Helpful and supportive**
- Anticipate questions
- Provide context
- Offer next steps
语气(随情境变化)
// Tone: Excited (product launch)
"We're thrilled to announce auto-scaling! 🎉"
// Tone: Reassuring (error message)
'Something went wrong, but your data is safe. Please try again.'
// Tone: Urgent (security alert)
'Action required: Suspicious login detected on your account'
// Tone: Casual (success message)
'All set! Your changes are live.'
// Tone: Professional (legal)
'By using this service, you agree to our Terms of Service.'
文案撰写检查清单
发布前:
- 清楚吗?(12 岁的孩子能看懂吗?)
- 简洁吗?(删去不必要的词语)
- 具体吗?(使用数字、示例)
- 有行动指引吗?(用户应该做什么?)
- 一致吗?(符合品牌声音)
- 易于访问吗?(便于屏幕阅读器使用)
- 便于浏览吗?(使用标题、项目符号和短段落)
文案撰写资源
有力词语
紧迫感: 现在、今天、有限、即将结束、赶快、快速
价值: 免费、节省、奖励、额外、加值
信任: 保证、经证实、认证、官方、安全
轻松: 轻松、简单、快捷、不费力、即时
标题公式
"How to [achieve goal] without [pain point]"
→ "How to deploy faster without complex configs"
"[Number] ways to [achieve benefit]"
→ "5 ways to ship code with confidence"
"Get [desired outcome] in [timeframe]"
→ "Get to production in 30 seconds"
"The [adjective] guide to [topic]"
→ "The complete guide to zero-downtime deploys"
何时使用我
非常适合:
- 撰写 UX 文案(按钮、错误提示、表单)
- 创建落地页
- 撰写产品描述
- 起草邮件营销活动
- 构建引导流程
我可以帮你:
- 撰写清晰、可执行的文案
- 保持品牌声音一致
- 提高转化率
- 改善用户体验
- 创建一致的信息传达
我会创作的内容
✏️ UX Copy (buttons, errors, labels)
📄 Landing Page Copy
📧 Email Templates
💬 Microcopy (tooltips, placeholders)
📚 Product Descriptions
🎯 CTAs that Convert
让我们一起创作能与用户产生共鸣的文案!
评论
支持 Markdown