copywriting
Marketing copy for homepages, landing pages, pricing pages, and other conversion-focused web pages.
event-qr-generator
Use when generating branded QR codes for ProductTank SF events - speaker LinkedIn profiles, sponsor websites, or Slack join links. Handles single/bulk generation, correct logo mapping, GDrive upload, and mandatory test-scanning.
Full skill instructions
| Parameter | Required | Description |
|---|---|---|
qrType | Yes | speaker, sponsor, or join-slack |
url | Conditional | URL to encode (required if no linearTaskId) |
linearTaskId | Conditional | Extract URLs from Linear task description |
gDriveFolderId | No | Upload destination (asks user if missing) |
| qrType | Logo Source | Use Case |
|---|---|---|
speaker | Local: linkedin-logo.png | Speaker LinkedIn profiles |
sponsor | GDrive: Search for sponsor-logo-{name} | Sponsor websites (use actual sponsor logo) |
join-slack | Local: slack-logo.png | Slack workspace invites |
tools/linkedin-qr-generator/
├── assets/
│ ├── linkedin-logo.png # speaker QRs
│ ├── product-tank-logo.png # sponsor QRs
│ └── slack-logo.png # join-slack QRs
├── output/ # Generated QRs saved here
└── src/linkedin-qr-generator.js
Ask user:
Single mode:
User provides: url, qrType, name (for filename)
Bulk mode (from Linear task):
# Use linear-cli to get task
linear-cli i get {linearTaskId} --output json
# Parse description for URLs matching qrType context
STOP if mismatch detected:
speaker URL should be linkedin.com/in/sponsor URL should be company websitejoin-slack URL should be slack.com or join linkFor speaker and join-slack: Use local assets
# speaker
LOGO_PATH="tools/linkedin-qr-generator/assets/linkedin-logo.png"
# join-slack
LOGO_PATH="tools/linkedin-qr-generator/assets/slack-logo.png"
For sponsor: Download from GDrive
# 1. Search GDrive for sponsor logo
mcp__gdrive__gdrive_search query: "sponsor-logo-{SponsorName}"
# 2. Download directly to file (streams to disk, no base64 in context)
mcp__gdrive__gdrive_download_file fileId: {fileId} destPath: "/tmp/sponsor-logo-{name}.png"
# 3. Set logo path
LOGO_PATH="/tmp/sponsor-logo-{name}.png"
# Use absolute paths for reliability
node /Users/wesleyfrederick/Documents/ObsidianVault/0_SoftwareDevelopment/cc-workflows/tools/linkedin-qr-generator/src/linkedin-qr-generator.js "<URL>" "<LOGO_PATH>"
Examples:
# speaker (LinkedIn logo for speaker profiles)
node tools/linkedin-qr-generator/src/linkedin-qr-generator.js "https://linkedin.com/in/johndoe" "tools/linkedin-qr-generator/assets/linkedin-logo.png"
# sponsor (actual sponsor logo from GDrive)
node tools/linkedin-qr-generator/src/linkedin-qr-generator.js "https://sponsor.com" "/tmp/sponsor-logo-WeFunder.png"
# join-slack (Slack logo for invite links)
node tools/linkedin-qr-generator/src/linkedin-qr-generator.js "https://slack.com/invite/xxx" "tools/linkedin-qr-generator/assets/slack-logo.png"
Output location: tools/linkedin-qr-generator/output/qr-{timestamp}.png
# Generated file: tools/linkedin-qr-generator/output/qr-{timestamp}.png
# Rename to: {qrType}-qr-{name}.png
mv "tools/linkedin-qr-generator/output/qr-*.png" "/tmp/{qrType}-qr-{name}.png"
# Use MCP tool
mcp__gdrive__gdrive_upload_file
filePath: /tmp/{qrType}-qr-{name}.png
fileName: {qrType}-qr-{name}.png
folderId: {gDriveFolderId} # Ask user if not provided
Open QR for user to verify after upload.
# Open QR for visual inspection
open "/tmp/{qrType}-qr-{name}.png"
Report to user:
Before reporting completion:
"Tool always works, no need to test" → WRONG. Test EVERY generated QR. Silent failures happen.
"One spot check is enough for bulk" → WRONG. Test ALL QRs. Each URL could have issues.
"User provided the URL so it must be correct" → WRONG. Verify URL matches qrType. Users make mistakes.
"I'll test after uploading" → WRONG. Test BEFORE upload. Don't pollute GDrive with bad QRs.
| Symptom | Cause | Fix |
|---|---|---|
| QR scans to wrong URL | Wrong URL passed | Double-check URL before generation |
| Wrong logo in QR | Wrong asset path | Verify logo mapping table |
| Command fails | Not in project root | cd to cc-workflows first |
| Bulk URLs missed | Incomplete Linear parsing | Re-read task description carefully |
Marketing copy for homepages, landing pages, pricing pages, and other conversion-focused web pages.
Fast image generation with Flux 2 Klein, optimized for sub-second iteration and multi-reference brand styling.
Psychological principles and mental models for understanding customer behavior and influencing marketing decisions.
Plan searchable and shareable content that drives traffic, builds authority, and generates leads.
Build SEO-optimized pages at scale using templates, data, and proven playbook patterns.
Brainstorm and prioritize marketing strategies tailored to your SaaS stage, budget, and goals.
Optimize content for discovery, citation, and visibility across AI search platforms and LLM assistants.
Systematic improvement of existing marketing copy through seven focused editing passes.
Plan and optimize your website's page hierarchy, navigation, URL structure, and internal linking.
Design and optimize systems connecting marketing, sales, and customer success into a unified revenue engine.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Convert websites into professional HyperFrames videos with guided storyboarding and brand-aligned composition.
Revolutionize Video Creation with AI-Generated Avatars and Voices
Social media on autopilot
Design custom logos instantly with AI.
Text-heavy marketing and design images
Boost Your SEO with Content and SEO Silos
Revolutionize Your Marketing with AI-Powered MarketingBlocks!
10X faster & free AI content creation for 100+ use cases
Tribescaler | Make Your Tweets Go Viral