Back to articles
    Settings

    Template Variables - merchi Scripting Language (MSL)

    Template Variables allow you to dynamically insert product data and asset references into your Schema Builder rules. This powerful feature - which we call MSL (merchi Scripting Language) - uses a simple {{variable}} syntax to make your writing instructions more intelligent and context-aware.

    Where to Use MSL

    You can use MSL template variables in the Rules field of any Schema block. These rules tell the AI how to generate content for that specific field.

    Example: In a Title block’s rules, you might write:

    Create a title for this {{inputData.csv.brand}} product.
    Include the product name: {{inputData.csv.productName}}
    

    When processing a product, merchi.ai replaces these variables with actual values from your data:

    Create a title for this Nike product.
    Include the product name: Air Max 90
    

    Available Variables

    {{inputData.csv.<column>}}

    What it does: Inserts a specific column value from your uploaded CSV.

    This is the most useful variable for customizing your writing rules. The column names come directly from your CSV headers.

    Example: If your CSV has columns productId, brand, category, level1, level2:

    VariableWhat it inserts
    {{inputData.csv.productId}}The product’s SKU/ID
    {{inputData.csv.brand}}The brand name
    {{inputData.csv.category}}The product category
    {{inputData.csv.level1}}First level of category hierarchy
    {{inputData.csv.level2}}Second level of category hierarchy

    Using in Schema Rules:

    Write a description for this {{inputData.csv.category}} product.
    The brand is {{inputData.csv.brand}}, so ensure the tone matches their brand guidelines.
    This product sits in the {{inputData.csv.level1}} > {{inputData.csv.level2}} category.
    

    {{inputData.csv.rest}}

    What it does: Inserts all CSV columns that haven’t been explicitly used elsewhere in your rules.

    This is a “catch-all” variable. If you’ve already used {{inputData.csv.brand}} and {{inputData.csv.category}} in your rules, {{inputData.csv.rest}} outputs all the OTHER columns as JSON.

    Example usage:

    Key product details:
    - Brand: {{inputData.csv.brand}}
    - Category: {{inputData.csv.category}}
    
    Additional data to consider:
    {{inputData.csv.rest}}
    

    This is useful when your CSV contains many columns and you want to ensure the AI considers all available data without listing each column individually.


    {{inputData.scrape.<field>}}

    What it does: Inserts data from web scraping (when using URL-based imports).

    When you import products via URL scraping, the scraped data becomes available:

    VariableWhat it inserts
    {{inputData.scrape.title}}The scraped product title
    {{inputData.scrape.description}}The scraped description
    {{inputData.scrape.id}}The scraped product ID
    {{inputData.scrape.attributes}}The scraped attributes

    Using in Schema Rules:

    The existing product title is: {{inputData.scrape.title}}
    The existing description is: {{inputData.scrape.description}}
    
    Improve upon this content while maintaining accuracy.
    

    {{assets.<name>}}

    What it does: Inserts a specific Writing Asset by its name.

    While assets are typically attached to blocks via the UI, you can also reference them directly in your rules for more specific guidance.

    Example usage:

    Use the following attributes list when selecting product attributes:
    {{assets.attributes}}
    
    Ensure the tone matches:
    {{assets.brand_tone_of_voice}}
    

    Tip: For most use cases, simply attaching assets to blocks via the Schema Builder UI is sufficient. Use {{assets.<name>}} when you need to reference an asset in a specific context within your rules.


    Practical Examples

    Category-Aware Title Generation

    Create a title for this {{inputData.csv.category}} product from {{inputData.csv.brand}}.
    
    Guidelines:
    - 5-10 words maximum
    - Include the brand name naturally
    - Make it search-friendly for the {{inputData.csv.level1}} category
    

    Brand-Specific Descriptions

    Write a product description for {{inputData.csv.brand}}.
    
    This product is categorized as: {{inputData.csv.level1}} > {{inputData.csv.level2}} > {{inputData.csv.level3}}
    
    Adjust the tone and vocabulary to match this brand's positioning.
    Maximum 150 words in 2 paragraphs.
    

    Passthrough with Dynamic Fallback

    Use the value from {{inputData.csv.title}} if provided.
    If empty, generate a title based on:
    - Brand: {{inputData.csv.brand}}
    - Category: {{inputData.csv.category}}
    - Key features visible in the images
    

    Multi-Brand Stores

    If you process products from multiple brands, you can use MSL to make your rules brand-aware:

    This is a {{inputData.csv.brand}} product.
    
    For premium brands, use elevated vocabulary.
    For everyday brands, use accessible, friendly language.
    
    Adjust your writing style based on the brand positioning.
    

    Scrape Enhancement

    When improving scraped content:

    Original product data:
    - Title: {{inputData.scrape.title}}
    - Description: {{inputData.scrape.description}}
    
    Rewrite this content to:
    - Match our brand tone of voice
    - Improve SEO friendliness
    - Maintain factual accuracy from the original
    

    Variable Behavior

    Dot Notation

    Use dots to access nested data:

    {{inputData.csv.level1}}    → "Clothing"
    {{inputData.csv.brand}}     → "Nike"
    

    Missing Variables

    If a variable path doesn’t exist in your data, the placeholder remains unchanged. This helps you identify when column names don’t match.

    Arrays and Objects

    When a variable contains an array or object, it’s automatically converted to a JSON string.


    Tips for Using MSL Effectively

    1. Match Column Names Exactly

    Variable names are case-sensitive and must match your CSV headers exactly:

    • {{inputData.csv.productId}} (if your CSV header is “productId”)
    • {{inputData.csv.ProductID}} (wrong case)
    • {{inputData.csv.product_id}} (different format)

    2. Test with Sample Data

    After adding MSL variables to your rules:

    1. Process a test product
    2. Review the output to verify variables were replaced
    3. Check for any unreplaced {{placeholders}} which indicate mismatched names

    3. Use for Context, Not Just Values

    MSL is most powerful when it helps the AI understand context:

    # Good - provides context
    This is a {{inputData.csv.category}} product from {{inputData.csv.brand}}.
    Adjust the tone and detail level accordingly.
    
    # Less effective - just inserting values
    Brand: {{inputData.csv.brand}}
    Category: {{inputData.csv.category}}
    

    4. Combine with Static Rules

    Mix MSL variables with your standard writing instructions:

    Write a description in maximum 150 words.
    The product is from {{inputData.csv.brand}} in the {{inputData.csv.category}} category.
    Use an engaging tone that matches the Brand Tone of Voice asset.
    Do not use banned phrases from the Stop Words list.
    

    Quick Reference

    VariableDescriptionExample Output
    {{inputData.csv.<column>}}Specific CSV column value"Nike"
    {{inputData.csv.rest}}All unused CSV columns{"color":"Black","size":"M"}
    {{inputData.scrape.title}}Scraped product title"Air Max 90 Sneakers"
    {{inputData.scrape.description}}Scraped description"Classic sneaker..."
    {{assets.<name>}}Specific Writing AssetAsset content