Skip to content

Brand Customization

The brand.json file shapes how the AI agents write content — summaries, social posts, blog posts, and short clip descriptions. Customize it to match your personal or company brand.


Location

By default, the tool looks for brand.json in the current working directory. Override the path with:

bash
# CLI flag
vidpipe --brand /path/to/my-brand.json

# Environment variable
BRAND_PATH=/path/to/my-brand.json

# .env file
BRAND_PATH=./brands/my-brand.json

Format Reference

jsonc
{
  // Your name or brand name — used in content attribution
  "name": "Your Name",

  // Social media handle — included in posts
  "handle": "@yourhandle",

  // Short tagline that appears in bios/intros
  "tagline": "Your tagline here",

  // Voice configuration — shapes how the AI writes
  "voice": {
    "tone": "enthusiastic, authentic, educational",
    "personality": "A brief description of your public persona and what you're known for.",
    "style": "How you communicate — conversational, formal, technical, etc."
  },

  // Topics and advocacy areas
  "advocacy": {
    "primary": ["Technology A", "Technology B"],
    "interests": ["Topic 1", "Topic 2", "Topic 3"],
    "avoids": ["Things the AI should never say or do"]
  },

  // Custom vocabulary for better Whisper transcription accuracy
  "customVocabulary": [
    "ProperNoun",
    "TechTermThatWhisperMightMisspell",
    "YourProductName"
  ],

  // Hashtag strategy
  "hashtags": {
    "always": ["#AlwaysInclude"],
    "preferred": ["#Often", "#Used", "#Tags"],
    "platforms": {
      "tiktok": ["#PlatformSpecific"],
      "linkedin": ["#ProfessionalTag"],
      "instagram": ["#VisualTag"]
    }
  },

  // Content guidelines for different output types
  "contentGuidelines": {
    "shortsFocus": "What makes a good short clip for your content",
    "blogFocus": "How blog posts should be structured and what to emphasize",
    "socialFocus": "Your social media strategy and posting style"
  }
}

Field Details

name and handle

Your display name and primary social media handle. The AI uses these when generating attribution text and social posts.

voice

Controls the writing style of all AI-generated content:

FieldPurposeExample
toneComma-separated tone descriptors"enthusiastic, authentic, educational"
personalityParagraph describing your public persona"A developer advocate who loves teaching..."
styleHow content should read"Conversational but knowledgeable. Uses code examples."

advocacy

Guides topic selection and avoidance:

FieldPurpose
primaryCore technologies/brands you champion
interestsBroader topics the AI can reference
avoidsThings the AI should never include (e.g., negative competitor comparisons)

customVocabulary

A list of proper nouns, brand names, and technical terms. These are sent to OpenAI Whisper as a prompt hint to improve transcription accuracy for domain-specific words.

Why this matters: Whisper sometimes misspells product names or jargon. Adding them here significantly improves accuracy.

json
"customVocabulary": [
  "GitHub Copilot",
  "VS Code",
  "TypeScript",
  "Kubernetes",
  "PostgreSQL"
]

hashtags

Organized hashtag strategy:

FieldPurpose
alwaysIncluded on every post, every platform
preferredCommonly used, AI picks the most relevant ones
platformsPlatform-specific hashtags (keys: tiktok, youtube, instagram, linkedin, x)

contentGuidelines

Direction for each content type:

FieldGuides
shortsFocusWhat moments to extract as short clips
blogFocusBlog post structure, depth, and angle
socialFocusSocial media writing strategy

Example Templates

Developer / Tech Creator

json
{
  "name": "Alex Chen",
  "handle": "@alexcodes",
  "tagline": "Full-stack dev | Building in public",
  "voice": {
    "tone": "friendly, technical, concise",
    "personality": "A full-stack developer who shares real-world coding experiences. Honest about trade-offs.",
    "style": "Direct and practical. Includes code snippets when relevant. Avoids hype."
  },
  "advocacy": {
    "primary": ["React", "Node.js", "PostgreSQL"],
    "interests": ["Web Performance", "DevOps", "Open Source", "TypeScript"],
    "avoids": ["Framework wars", "Clickbait titles"]
  },
  "customVocabulary": [
    "Next.js",
    "Prisma",
    "Vercel",
    "PostgreSQL",
    "TypeScript",
    "Tailwind CSS"
  ],
  "hashtags": {
    "always": ["#WebDev", "#BuildInPublic"],
    "preferred": ["#React", "#NodeJS", "#TypeScript", "#OpenSource"],
    "platforms": {
      "tiktok": ["#CodeTok", "#DevTok"],
      "linkedin": ["#SoftwareEngineering", "#TechCareers"],
      "instagram": ["#CodeLife", "#DeveloperLife"]
    }
  },
  "contentGuidelines": {
    "shortsFocus": "Focus on aha moments, bug fixes, before/after demos, and performance wins",
    "blogFocus": "Tutorial-style with code examples. Always explain the 'why' behind decisions.",
    "socialFocus": "Share the journey and lessons learned. Be authentic about failures too."
  }
}

Corporate / Product Team

json
{
  "name": "Acme DevTools",
  "handle": "@acmedevtools",
  "tagline": "Developer tools that just work",
  "voice": {
    "tone": "professional, clear, helpful",
    "personality": "A product team focused on developer experience. Celebrates customer wins.",
    "style": "Polished but not stuffy. Uses product terminology consistently."
  },
  "advocacy": {
    "primary": ["Acme CLI", "Acme Cloud", "Acme SDK"],
    "interests": ["Developer Experience", "CI/CD", "Cloud Native"],
    "avoids": ["Competitor bashing", "Unsubstantiated performance claims", "Internal jargon"]
  },
  "customVocabulary": [
    "Acme CLI",
    "Acme Cloud",
    "AcmeSDK",
    "DevOps"
  ],
  "hashtags": {
    "always": ["#AcmeDevTools"],
    "preferred": ["#DevTools", "#DeveloperExperience", "#CloudNative"],
    "platforms": {
      "tiktok": ["#TechTok"],
      "linkedin": ["#Engineering", "#ProductLaunch"],
      "instagram": ["#DevLife"]
    }
  },
  "contentGuidelines": {
    "shortsFocus": "Product demos, feature highlights, customer success stories",
    "blogFocus": "Feature announcements, how-to guides, migration tutorials",
    "socialFocus": "Lead with value. Show the product in action. Include CTAs."
  }
}

Educator / Course Creator

json
{
  "name": "Prof. Sarah",
  "handle": "@profsarah",
  "tagline": "Making computer science accessible to everyone",
  "voice": {
    "tone": "warm, patient, encouraging",
    "personality": "A CS educator who breaks down complex topics. Celebrates learning milestones.",
    "style": "Uses analogies and metaphors. Never condescending. Builds from basics."
  },
  "advocacy": {
    "primary": ["Python", "Computer Science Fundamentals"],
    "interests": ["Education", "Algorithms", "Data Structures", "Career Advice"],
    "avoids": ["Gatekeeping", "Assuming prior knowledge", "Discouraging language"]
  },
  "customVocabulary": [
    "Python",
    "Big O",
    "recursion",
    "binary search",
    "data structures"
  ],
  "hashtags": {
    "always": ["#LearnToCode", "#ComputerScience"],
    "preferred": ["#Python", "#Coding", "#Education", "#STEM"],
    "platforms": {
      "tiktok": ["#LearnOnTikTok", "#CodingTikTok", "#EduTok"],
      "linkedin": ["#TechEducation", "#CareerGrowth"],
      "instagram": ["#StudyGram", "#CodeNewbie"]
    }
  },
  "contentGuidelines": {
    "shortsFocus": "Aha moments, visual explanations, quick tips, common mistakes",
    "blogFocus": "Step-by-step tutorials with diagrams. Include exercises.",
    "socialFocus": "Motivational and educational. Ask questions to engage followers."
  }
}

Caption Font

The default caption font is Montserrat Bold, bundled with the package in assets/fonts/. No manual font installation is required — FFmpeg uses the bundled font file directly when burning captions into videos.


Tips

  • Keep customVocabulary updated. Add any terms that Whisper consistently misspells in your transcriptions.
  • Test your brand with a short video first. Process a 1–2 minute clip and review the generated content to see if the tone matches your expectations.
  • Use avoids generously. It's easier to tell the AI what not to do than to perfectly describe what you want.
  • Platform-specific hashtags matter. TikTok and LinkedIn audiences respond to very different tags — customize per platform for maximum reach.