npx skills add https://github.com/daffy0208/ai-dev-standards --skill copywriter我帮助您为产品、营销和用户体验撰写清晰、引人入胜的文案。
用户体验文案:
营销文案:
产品内容:
// ❌ 不佳:模糊、被动
<Button>Submit</Button>
<Button>OK</Button>
<Button>Click Here</Button>
// ✅ 良好:具体、以行动为导向
<Button>Create Account</Button>
<Button>Save Changes</Button>
<Button>Start Free Trial</Button>
指南:
// ❌ 不佳:技术性、指责用户
"Invalid input"
"Error 422: Unprocessable Entity"
"You entered the wrong password"
// ✅ 良好:有帮助、可操作
"Please enter a valid email address"
"We couldn't find an account with that email"
"Password must be at least 8 characters"
// 实现
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>
)
}
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
错误信息公式:
// ❌ 不佳:仅说明为空
<EmptyState message="No results" />
// ✅ 良好:解释并引导用户
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>
)
}
空状态公式:
// ❌ 不佳:不清晰、术语
<Label>Metadata</Label>
<Label>FTP Credentials</Label>
// ✅ 良好:清晰、有帮助
<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>
标签指南:
// ❌ 不佳:通用
<Loading message="Loading..." />
// ✅ 良好:具体、令人安心
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..." />
</>
)
}
// ❌ 不佳:仅确认操作
<Toast message="Saved" />
// ✅ 良好:确认并建议下一步
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">
{/* 标题:清晰的价值主张 */}
<h1 className="text-5xl font-bold">
Deploy your app in seconds, not hours
</h1>
{/* 副标题:扩展标题 */}
<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>
{/* 行动号召:主要操作 */}
<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>
{/* 社会认同 */}
<p className="mt-8 text-sm text-gray-500">
Trusted by 50,000+ developers at companies like Airbnb, Netflix, and Shopify
</p>
</section>
)
}
主视觉文案公式:
示例:
❌ 不佳:
"Cloud Deployment Platform"
"We provide deployment services"
✅ 良好:
"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>
)
}
功能文案指南:
// 不同的行动号召风格
// ❌ 通用
<Button>Sign Up</Button>
<Button>Learn More</Button>
// ✅ 以价值为中心
<Button>Start Free Trial</Button>
<Button>Get Started Free</Button>
<Button>Try it Free for 14 Days</Button>
// ✅ 紧迫感
<Button>Claim Your Spot</Button>
<Button>Join 10,000 Developers</Button>
// ✅ 低承诺
<Button>Browse Templates</Button>
<Button>See How It Works</Button>
行动号召文案公式:
// 电子邮件模板 (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 support@techstart.com
</Text>
</Html>
)
}
// ❌ 不佳:重复标签
<Tooltip content="Click to delete">
<Button>Delete</Button>
</Tooltip>
// ✅ 良好:添加上下文帮助
<Tooltip content="This action cannot be undone">
<Button>Delete</Button>
</Tooltip>
<Tooltip content="Visible to all team members">
<Toggle>Public</Toggle>
</Tooltip>
// ❌ 不佳:令人害怕、不清晰
<Dialog
title="Warning"
message="Are you sure?"
confirmButton="Yes"
/>
// ✅ 良好:清晰、具体
<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"
/>
// ❌ 不佳:通用
<Input placeholder="Enter value" />
// ✅ 良好:有帮助的示例
<Input placeholder="e.g., john@example.com" />
<Input placeholder="e.g., My Awesome Project" />
<TextArea placeholder="Tell us what happened..." />
## TechStart 语气
**专业但友好**
- 我们是专家,但我们不会居高临下
- 使用 "我们" 和 "你"(而非 "我" 或 "用户")
**清晰简洁**
- 短句
- 简单词语
- 无术语(除非必要)
**乐于助人且支持性强**
- 预判问题
- 提供上下文
- 提供后续步骤
// 语调:兴奋(产品发布)
"We're thrilled to announce auto-scaling! 🎉"
// 语调:令人安心(错误信息)
'Something went wrong, but your data is safe. Please try again.'
// 语调:紧急(安全警报)
'Action required: Suspicious login detected on your account'
// 语调:随意(成功信息)
'All set! Your changes are live.'
// 语调:专业(法律)
'By using this service, you agree to our Terms of Service.'
发布前:
紧迫感: 现在、今天、限量、即将结束、赶快、快速 价值: 免费、节省、额外奖励、额外、加赠 信任: 保证、验证、认证、官方、安全 便捷: 简单、轻松、快速、毫不费力、即时
"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"
非常适合:
我将帮助您:
✏️ 用户体验文案(按钮、错误、标签)
📄 着陆页文案
📧 电子邮件模板
💬 微文案(工具提示、占位符)
📚 产品描述
🎯 高转化率的行动号召
让我们创作能与用户产生共鸣的文案!
每周安装量
122
代码仓库
GitHub 星标数
21
首次出现
Jan 20, 2026
安全审计
安装于
gemini-cli110
opencode110
codex106
cursor103
github-copilot98
cline86
I help you write clear, compelling copy for your product, marketing, and user experience.
UX Writing:
Marketing Copy:
Product Content:
// ❌ 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>
Guidelines:
// ❌ 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>
)
}
Error Message Formula:
// ❌ 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>
)
}
Empty State Formula:
// ❌ 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>
Label Guidelines:
// ❌ 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>
)
}
Hero Copy Formula:
Examples:
❌ 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>
)
}
Feature Copy Guidelines:
// 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 Copy Formula:
// 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 support@techstart.com
</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., john@example.com" />
<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.'
Before Publishing:
Urgency: Now, Today, Limited, Ending, Hurry, Fast Value: Free, Save, Bonus, Extra, Plus Trust: Guaranteed, Proven, Certified, Official, Secure Ease: Easy, Simple, Quick, Effortless, Instant
"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"
Perfect for:
I'll help you:
✏️ UX Copy (buttons, errors, labels)
📄 Landing Page Copy
📧 Email Templates
💬 Microcopy (tooltips, placeholders)
📚 Product Descriptions
🎯 CTAs that Convert
Let's create copy that connects with your users!
Weekly Installs
122
Repository
GitHub Stars
21
First Seen
Jan 20, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
gemini-cli110
opencode110
codex106
cursor103
github-copilot98
cline86
推荐与联盟计划设计优化指南:病毒式增长营销策略、客户推荐计划、联盟营销
29,300 周安装