Official website for Pink MD (Bloomberg Barbie) - NYC-based artist, DJ, and producer.
- AI-Optimized Content: Structured data (JSON-LD), semantic HTML, and AI-friendly markup
- SEO-Ready: Complete meta tags, Open Graph, Twitter Cards, and sitemap
- Modern Stack: Next.js 14, React 18, TypeScript, Tailwind CSS
- Responsive Design: Mobile-first, beautiful UI across all devices
- Music Embeds: Spotify and SoundCloud integration
- Booking System: Contact form with email integration
- Newsletter: Email capture for fan engagement
- MusicGroup schema for artist information
- MusicRecording schema for tracks
- Service schema for booking information
- WebSite and WebPage schemas
- Explicit permissions in
robots.txtfor:- GPTBot (ChatGPT)
- Claude-Web (Anthropic)
- CCBot (Common Crawl)
- Google-Extended
- PerplexityBot
- Applebot-Extended
/public/ai-context.md- Comprehensive artist information for AI assistants- Clear, structured information about Pink MD's brand, music, and services
- Proper heading hierarchy (h1, h2, h3)
- ARIA labels for accessibility
- Descriptive alt text for images
- Semantic sections and articles
- Comprehensive meta descriptions
- Keyword optimization
- Open Graph tags for social sharing
- Twitter Card integration
- Node.js 18+ installed
- npm or yarn package manager
cd pink-md-website
npm installnpm run devOpen http://localhost:3000 in your browser.
npm run build
npm start- Push code to GitHub:
git init
git add .
git commit -m "Initial commit - Pink MD website"
git remote add origin YOUR_GITHUB_REPO_URL
git push -u origin main- Go to vercel.com
- Click "Import Project"
- Select your GitHub repository
- Vercel will auto-detect Next.js and deploy
Custom Domain:
- Add your domain in Vercel dashboard
- Update all URLs in the code from
pinkmd.fmto your actual domain
- Build the project:
npm run build- Deploy to Netlify:
npx netlify-cli deploy --prodEdit /app/page.tsx:
const ARTIST_INFO = {
name: "Pink MD",
email: "booking@pinkmd.fm",
// ... update other fields
};
const MUSIC_LINKS = {
spotify: "YOUR_SPOTIFY_URL",
soundcloud: "YOUR_SOUNDCLOUD_URL",
// ... update other links
};Update image URLs in /app/page.tsx:
const IMAGES = {
hero: "YOUR_HERO_IMAGE_URL",
press: "YOUR_PRESS_IMAGE_URL",
gallery: [
"IMAGE_1_URL",
"IMAGE_2_URL",
// ... add your images
],
};Tip: Upload images to:
- Vercel Blob Storage
- Cloudinary
- GitHub repository (
/public/images/)
Replace all instances of https://pinkmd.fm with your actual domain in:
/app/layout.tsx/app/page.tsx/public/sitemap.xml/.well-known/ai-plugin.json
In /app/page.tsx, update the onSubmit function to connect to your email service:
const onSubmit = async (e: React.FormEvent) => {
e.preventDefault();
// Example: ConvertKit
await fetch('https://api.convertkit.com/v3/forms/YOUR_FORM_ID/subscribe', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email, api_key: 'YOUR_API_KEY' })
});
setSubmitted(true);
};pink-md-website/
βββ app/
β βββ layout.tsx # Root layout with SEO metadata
β βββ page.tsx # Main page component
β βββ globals.css # Global styles
βββ public/
β βββ robots.txt # AI crawler permissions
β βββ sitemap.xml # Sitemap for search engines
β βββ ai-context.md # AI-friendly artist info
βββ .well-known/
β βββ ai-plugin.json # AI plugin manifest
βββ package.json # Dependencies
βββ tailwind.config.js # Tailwind configuration
βββ next.config.js # Next.js configuration
βββ README.md # This file
- Meta title and description
- Open Graph tags
- Twitter Cards
- Structured data (JSON-LD)
- Semantic HTML
- Alt text for images
- Sitemap.xml
- Robots.txt
- Mobile responsive
- Fast loading (Next.js optimization)
- HTTPS (via Vercel)
- Canonical URLs
- AI crawler permissions in robots.txt
- Structured data for all content
- AI context document
- Clear, descriptive content
- Semantic HTML structure
- AI plugin manifest
- Rich metadata
- Accessible markup (ARIA labels)
The booking form currently opens the user's email client. To use a backend:
- Create API route:
/app/api/booking/route.ts - Add email service (SendGrid, Resend, etc.)
- Update form submission in
/app/page.tsx
Example with Resend:
// app/api/booking/route.ts
import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
export async function POST(request: Request) {
const data = await request.json();
await resend.emails.send({
from: 'bookings@pinkmd.fm',
to: 'booking@pinkmd.fm',
subject: 'New Booking Inquiry',
html: `<p>Name: ${data.name}</p>...`
});
return Response.json({ success: true });
}- Next.js automatic code splitting
- Image optimization (use Next.js Image component for local images)
- CSS optimization via Tailwind
- Vercel Edge Network CDN
Update social media links when available:
- TikTok
- Twitter/X
- YouTube
Add to navigation and footer in /app/page.tsx.
Create .env.local for sensitive data:
NEXT_PUBLIC_SITE_URL=https://pinkmd.fm
RESEND_API_KEY=your_api_key
CONVERTKIT_API_KEY=your_api_keyAdd analytics by updating /app/layout.tsx:
// Google Analytics
<Script src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID" />
<Script id="google-analytics">
{`
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'GA_MEASUREMENT_ID');
`}
</Script>Current integrations:
- β Spotify embeds
- β SoundCloud embeds
Add more:
- Apple Music
- YouTube Music
- Bandcamp
- Tidal
Β© 2025 Pink MD. All rights reserved.
For technical issues or questions:
- Email: booking@pinkmd.fm
- GitHub Issues: Create an issue
Built with β€οΈ for Pink MD - Bloomberg Barbie
Stream "Efficient" now on Spotify and SoundCloud!