← Skills

write_content

generation · v2.0.0

Datoteka skills/write_content/SKILL.md · v2.0.0. Izmjena vrijedi od sljedećeg pokretanja agenta.

Write Content Skill

Write ready-to-review social content for one human-approved IQOS topic.

For every topic, always produce:

  1. One shared visual copy for Facebook and Instagram.
  2. One Facebook post copy.
  3. One Instagram post copy.
  4. One Story set relevant to the topic.
  5. All required standard disclaimers and claim-specific footnotes.

A human reviews every result before publishing.

Inputs

  • input.topic — approved topic containing:
    • headline
    • angle
    • channels
    • format
    • aspect_ratio
    • inspired_by
    • novelty
    • notes
  • input.title, input.brief — approved topic title and brief.
  • input.campaign — campaign title, period, focus and instructions.
  • input.locale — output language and market.
  • context — human-approved knowledge:
    • brand_info — products, services, programmes, approved claims, mandatory statements, disclaimers and claims to avoid.
    • writing_style — binding writing and channel rules.
    • past_posts — archive of previous posts and examples.
    • meta_formats — length, hashtag and aspect-ratio rules.
    • current_trends — factual confirmation for an already approved topic.
  • feedback — reviewer comments. Apply every requested correction while retaining content that was not criticised.

Market and language

  • Use Croatian for hr-HR.
  • Keep JSON keys in English.
  • Write every human-readable value in input.locale.
  • Do not mix Croatian and Slovenian terminology or disclaimers.
  • Never translate a disclaimer from another market.
  • If the locale is not hr-HR, use only the exact disclaimer supplied for that locale in brand_info.
  • If the correct local-market disclaimer is unavailable, add a blocking risk_flags entry. Do not create or translate one.

Mandatory workflow

Complete the following steps in order.

Step 1 — Confirm the approved topic

Use only the approved topic and campaign angle.

Do not:

  • add a new trend angle
  • introduce another product
  • expand the topic into a promotion
  • change the approved content pillar
  • change the approved format
  • create an additional claim because it sounds relevant
  • combine separate services or programmes without instruction

The monthly 50% Reels / 50% Static requirement is handled by the content planning stage. Do not change the approved topic format.

Step 2 — Resolve the source hierarchy

Use sources in this order:

  1. input.brief, input.topic, input.campaign and reviewer feedback
  2. brand_info
  3. writing_style
  4. latest matching approved examples from past_posts
  5. meta_formats
  6. current_trends, only for confirming facts behind the approved topic

When sources conflict, the higher source wins.

Never use an old post to override:

  • an updated disclaimer
  • an updated claim footnote
  • product compatibility
  • service eligibility
  • warranty conditions
  • Circular Programme wording
  • a Legal-approved formulation
  • current pricing or promotional conditions

Step 3 — Inspect relevant past posts

Before drafting, identify the most relevant previous examples using:

  • same product
  • same feature or service
  • same content pattern
  • same channel
  • same format
  • same CTA type
  • similar seasonal or user context

Use previous posts only to learn:

  • tone
  • rhythm
  • sentence length
  • hook structure
  • emoji density
  • CTA style
  • channel adaptation
  • content-pattern structure

Never use previous posts as the controlling source for:

  • disclaimers
  • Legal footnotes
  • claims
  • prices
  • promotions
  • dates
  • product specifications
  • links
  • store locations
  • warranty or service eligibility

Do not reuse an old hook, first line or complete sentence verbatim unless it is an approved mandatory formulation.

Step 4 — Classify the Legal requirements

Before writing, classify the topic as one or more of:

  • general brand
  • product or accessory
  • feature
  • application or support
  • registration or warranty
  • accidental damage
  • Circular Programme
  • scientific or comparative claim
  • price or promotion
  • MGM or referral programme

Determine all required Legal elements before drafting.

Step 5 — Draft shared visual copy

Create one visual copy shared by Facebook and Instagram.

For Static posts, provide:

  • headline
  • optional supporting copy
  • optional CTA
  • feature footnotes
  • standard visual disclaimer

For Reels, provide:

  • cover copy
  • scene-by-scene on-screen copy
  • CTA frame
  • claim footnotes on the relevant scenes
  • standard disclaimer treatment

The visual copy must be identical for Facebook and Instagram.

Step 6 — Draft channel-specific post copy

Always produce:

  • one Facebook post copy
  • one Instagram post copy

The two post copy versions must communicate the same approved facts but must not be identical.

Step 7 — Draft the Story set

Always produce a Story set relevant to the topic.

The Story set must extend or simplify the topic, not repeat the feed post sentence by sentence.

Step 8 — Run Legal and style validation

Validate:

  • standard disclaimer
  • claim-specific footnotes
  • product-feature compatibility
  • claims to avoid
  • FB/IG visual-copy consistency
  • FB/IG caption differences
  • Story relevance
  • CTA destination
  • link availability
  • language
  • format
  • aspect ratio

Return JSON only after validation.

Facts — never invent

Use only facts found in input or context.

Never invent:

  • prices
  • discounts
  • promotional periods
  • voucher amounts
  • stock
  • availability
  • urgency
  • store addresses
  • opening hours
  • product colours
  • product features
  • compatible devices or inserts
  • service eligibility
  • warranty conditions
  • launch dates
  • collaborations
  • statistics
  • scientific findings
  • sustainability benefits
  • URLs

If a fact is required but missing:

  1. Write around the missing fact when possible.
  2. Add a specific risk_flags entry.
  3. Use [LINK] only when a link is required but unavailable.
  4. Do not insert a plausible placeholder claim.
  5. Do not retrieve the missing fact from an old post.

Mandatory standard disclaimer

Every Facebook and Instagram caption must contain the standard risk disclaimer.

For hr-HR, use the exact wording from brand_info.

If brand_info does not contain a different, explicitly approved version, use:

Proizvodi nisu bez rizika i sadrže nikotin koji izaziva ovisnost. Namijenjeni su isključivo punoljetnim osobama.

Copy the disclaimer verbatim.

Never change:

  • Proizvodi to IQOS
  • sadrže to isporučuju
  • izaziva ovisnost to stvara ovisnost
  • Namijenjeni su isključivo punoljetnim osobama to Samo za punoljetne osobe

Never use the old recurring formulation from past_posts as the default disclaimer.

In particular, do not automatically use:

IQOS nije bez rizika te isporučuje nikotin koji stvara ovisnost. Samo za punoljetne osobe.

Use that wording only if the current brief or brand_info explicitly identifies it as the approved disclaimer for the specific asset.

Disclaimer placement

For Facebook and Instagram captions:

  1. Main post copy
  2. CTA or link instruction
  3. Claim-specific footnotes
  4. Standard disclaimer as the final paragraph

Hashtags are returned separately and are not part of caption.

For visual content:

  • Return the standard disclaimer in shared_visual_copy.disclaimer.
  • Do not assume the caption disclaimer covers the visual.
  • Do not hide the disclaimer inside visual_brief.
  • Do not shorten the disclaimer to fit.
  • Do not place emoji or hashtags inside the disclaimer.

For Stories:

  • Include the required disclaimer treatment in the relevant frame fields.
  • Include claim-specific footnotes on the same screen as the related claim.
  • Do not move all feature conditions to the last screen if the claim appears earlier.
  • Include the standard disclaimer on the final screen at minimum.
  • If the approved format requires it on every product or claim screen, repeat it verbatim.

For Reels:

  • Include claim-specific footnotes with the relevant claim scene.
  • Include the standard disclaimer in the final scene.
  • Do not rely only on the caption for mandatory on-screen Legal information.

Standard disclaimer and claim footnotes

The standard disclaimer and a feature or claim footnote are separate Legal elements.

A feature footnote never replaces the standard disclaimer.

If the post discusses FlexPuff, Pause Mode, FlexBattery, a scientific claim, warranty, accidental damage, promotion or another conditional benefit, include:

  1. the exact applicable footnote or conditions from brand_info
  2. the standard risk disclaimer

Do not write a feature footnote from memory.

If an exact required footnote is unavailable:

  • omit the unsupported claim
  • add a blocking risk_flags entry
  • do not paraphrase the condition
  • do not use a footnote from an older product or another market

Legal requirements by topic

General brand content

Required:

  • standard disclaimer

Do not imply that IQOS is:

  • risk-free
  • harmless
  • healthy
  • safe
  • suitable for everyone
  • a cessation aid

Product or accessory content

Required:

  • standard disclaimer
  • product compatibility confirmation
  • exact specification source for any technical feature

Do not say an accessory prevents all damage.

When approved by the source, prefer qualified language such as:

  • može pomoći u zaštiti
  • za dodatnu zaštitu
  • za prilagodbu uređaja

Feature content

Required:

  • standard disclaimer
  • exact feature footnote when the feature is conditional
  • confirmation that the feature is available on the named model

Never generalise a feature from one device to the entire IQOS portfolio.

FlexPuff

Do not promise four additional puffs as a guaranteed result.

Include the complete current approved FlexPuff footnote from brand_info.

Pause Mode

Do not mention pause duration or activation conditions unless the complete approved conditions are available.

Include the current approved Pause Mode footnote.

FlexBattery

Do not mention extended battery life or consecutive uses without all approved qualifiers.

AutoStart

Use the exact approved feature name from the current Croatian source.

Do not standardise spelling from an old post if the current source uses a different approved form.

Application and support content

Required:

  • standard disclaimer
  • exact current name of the app function
  • current support channel or service confirmation

Do not promise that diagnostics will always resolve the issue.

Prefer:

  • možete provjeriti uređaj
  • možete pronaći preporučeno rješenje
  • potražite pomoć
  • saznajte više

Use Tu smo za vas. IQOS korisnička podrška. only when the topic is genuinely about support, service, troubleshooting or user education.

Do not append it automatically to every post.

Registration and warranty

Required:

  • standard disclaimer
  • registration deadline
  • eligible device models
  • exact approved warranty conditions

Do not write:

  • dvije godine jamstva za sve uređaje
  • registracijom automatski dobivate sve pogodnosti
  • any unconditional benefit

Accidental damage

Required:

  • standard disclaimer
  • exact eligible model
  • purchase-date condition
  • registration condition
  • applicable programme conditions

Do not generalise accidental-damage coverage to all IQOS ILUMA i models.

Circular Programme

Required:

  • standard disclaimer
  • exact approved processing statement
  • current return method and locations, if available

Never use the word:

zbrinjavanje

Do not proactively highlight original electronic accessories.

Do not claim:

  • the entire device is recycled
  • the entire insert is recycled
  • the programme eliminates environmental impact
  • IQOS is ecological, green or sustainable
  • the programme creates zero waste

For collected devices, use the approved Croatian wording verbatim:

Prikupljene uređaje predat će se ovlaštenom obrađivaču elektroničkog otpada sukladno važećim propisima.

For returned inserts, use the approved Croatian wording verbatim:

Duhan i metalni dio vraćenih umetaka će se reciklirati, a ostatak će se energetski oporabiti.

Do not change neutral wording to predat ćemo.

Scientific or comparative claims

Required:

  • standard disclaimer
  • complete approved claim
  • complete approved footnote
  • required risk clarification
  • exact comparison basis

Never create, shorten or combine scientific claim blocks.

Never say:

  • 95 % manje štetan
  • 95 % sigurniji
  • 95 % manje rizika
  • zdravija alternativa
  • bez štetnih tvari
  • siguran za druge

If the complete approved claim block is unavailable, do not use the claim.

Price or promotion

Required:

  • standard disclaimer
  • exact price
  • exact type of price
  • exact period
  • exact eligibility
  • current terms and conditions
  • mandatory promotional footnotes

Never invent urgency or availability.

Do not write povoljniji, priuštiviji, uštedite or similar affordability claims without explicit approval.

MGM or referral programme

Required:

  • standard disclaimer
  • registered-user eligibility
  • interested adult smoker requirement
  • 18+ requirement
  • consent and contact-data requirements
  • education step
  • voucher conditions
  • programme terms

Do not frame the programme as:

  • easy earnings
  • collecting contacts
  • a short-term aggressive promotion

Writing style

Use a tone that is:

  • professional
  • informative
  • calm
  • practical
  • supportive
  • clear
  • contemporary
  • approachable without being casual

Focus on:

  • user support
  • practical information
  • correct product use
  • one clear next step
  • one primary message per post

Avoid:

  • aggressive selling
  • FOMO
  • clickbait
  • youth-oriented slang
  • lifestyle glamour
  • health or social-benefit implications
  • emotional pressure
  • unnecessary superlatives
  • excessive exclamation marks
  • poetic or metaphorical language
  • generic motivational statements

Address the user with:

  • Vi
  • Vaš
  • Vama

Prefer možete in body copy.

Use imperatives mainly for:

  • CTA
  • short instructions
  • interface steps
  • clear service actions

Copy structure

Use the following default order:

  1. Hook
  2. User situation, question or need
  3. Product, feature, service or programme explanation
  4. Practical benefit or next step
  5. CTA
  6. Claim-specific footnotes
  7. Standard disclaimer

Use approximately 3–7 sentences when suitable, but prioritise clarity over a fixed sentence count.

Do not pad the caption by repeating the same information.

Hook rules

The hook must:

  • be the exact first line of the caption
  • fit within approximately 125 characters when possible
  • relate directly to the approved topic
  • be understandable without the rest of the caption
  • avoid an unsupported claim

Suitable hook types:

  • a practical question
  • a user situation
  • a short service reminder
  • a seasonal care context
  • a direct feature introduction
  • a useful fact

Avoid:

  • clickbait
  • vague suspense
  • exaggerated promises
  • pressure
  • generic lines unrelated to IQOS or the user need

Do not reuse a hook or first line from past_posts.

Facebook rules

Always write a Facebook version.

Facebook copy should be:

  • slightly more detailed
  • somewhat more formal
  • written in complete sentences
  • focused on useful context
  • lighter on emoji than Instagram
  • suitable for a direct link

Use direct URLs only when supplied in input or context.

If a required URL is missing, use [LINK] and add a risk_flags entry.

Facebook hashtags should default to an empty array unless:

  • meta_formats requires them
  • the campaign uses approved hashtags
  • the brief explicitly requests them

Do not create the Facebook version by simply removing emojis and hashtags from the Instagram caption.

Instagram rules

Always write an Instagram version.

Instagram copy should:

  • preserve the same approved facts as Facebook
  • differ naturally in wording and rhythm
  • use more relevant emojis than Facebook
  • use shorter paragraphs when helpful
  • remain professional and informative
  • use the link-in-bio instruction only when that destination is available

Do not paste a URL into Instagram copy unless the brief explicitly requires it.

Use the hashtag count from meta_formats.

If no count is supplied, use 5–7 relevant approved hashtags.

Use only hashtags relevant to the:

  • brand
  • shown product
  • feature
  • programme
  • campaign

Do not add generic trending hashtags.

Return hashtags only in the hashtags array, never inside caption.

Emoji rules

Use emojis moderately and functionally.

Suitable uses:

  • introducing a topic
  • marking a step
  • improving list readability
  • signalling an app, location, feature or season

Do not:

  • insert emojis into disclaimers
  • insert emojis into Legal footnotes
  • replace mandatory words with emojis
  • add an emoji to every sentence
  • use youth-coded, celebratory or health-related emojis inappropriately

Instagram may contain more emojis than Facebook.

Shared visual copy

Facebook and Instagram must use exactly the same shared_visual_copy.

Do not generate separate FB and IG visual headlines.

Visual copy must:

  • focus on one message
  • be concise
  • be understandable without the caption
  • use the exact approved product or feature name
  • avoid unsupported claims
  • include relevant claim footnotes
  • include the standard visual disclaimer

Static visual copy

Return:

  • headline
  • supporting_copy
  • cta
  • on_screen_text
  • claim_footnotes
  • disclaimer

Keep detailed explanations in the post copy.

Reels visual copy

Return:

  • cover_copy
  • scene-by-scene frames
  • brief on-screen copy
  • relevant footnotes by scene
  • final CTA
  • final standard disclaimer

Keep the Reels concept under approximately 30 seconds unless meta_formats specifies otherwise.

Do not rely only on voiceover for mandatory Legal information.

Story set

Always create one Story set related to the topic.

Use 2–4 screens unless meta_formats specifies otherwise.

Recommended structure:

  1. Hook or user situation
  2. Information, feature or practical tip
  3. Action, solution or next step
  4. CTA

The Story set must not copy the feed post sentence by sentence.

For every Story screen return:

  • label
  • headline
  • supporting_copy
  • visual_direction
  • interaction
  • cta
  • claim_footnotes
  • disclaimer

Use an interaction only when it adds value:

  • poll
  • quiz
  • slider
  • link sticker

Do not use playful interactions for:

  • health claims
  • scientific claims
  • risk information
  • nicotine warnings
  • mandatory Legal content

Format rules

Static feed

  • Use shared_visual_copy.type: "static".
  • Keep frames empty.
  • Use one visual idea.
  • Use the approved feed aspect ratio from meta_formats.

Carousel

  • Use shared_visual_copy.type: "carousel".
  • Use 3–6 cards unless otherwise specified.
  • Keep one message per card.
  • Include required footnotes on the card containing the claim.
  • Include the standard disclaimer according to the approved template.

Reels

  • Use shared_visual_copy.type: "reels".
  • Return scene-by-scene on-screen copy.
  • Keep the script under approximately 30 seconds.
  • Include a clear cover and final CTA.
  • Include required Legal text on-screen.

Stories

  • Return separately in story_set.
  • Use a 9:16 aspect ratio.
  • Use 2–4 screens.
  • Keep one primary idea per screen.

Visual brief and accessibility

visual_brief must describe:

  • what is shown
  • product model
  • environment
  • user action
  • sequence or composition
  • required on-screen copy
  • relevant disclaimer treatment

Do not suggest a visual that:

  • targets young people
  • glamorises nicotine use
  • suggests health, popularity or social success
  • contradicts the claim
  • shows the wrong device
  • shows the wrong programme process

alt_text must be one clear factual sentence.

Do not include promotional interpretation or Legal claims in alt text unless they are visibly present and necessary to describe the asset.

Risk flags

Use risk_flags for specific unresolved issues.

Good examples:

  • Potvrditi točan URL odredišne stranice.
  • Nije pronađen aktualni Pause Mode footnote.
  • Potvrditi je li usluga dostupna za IQOS ILUMA i ONE.
  • Potvrditi trajanje i uvjete promocije.
  • Nedostaje odobrena formulacija znanstvene tvrdnje.

Do not use vague flags such as:

  • Provjeriti Legal.
  • Možda treba disclaimer.
  • Provjeriti informacije.

If a missing item affects compliance, set:

"blocking": true

If an item is a non-blocking production check, set:

"blocking": false

Handling reviewer feedback

When feedback is present:

  1. Apply every requested correction.
  2. Preserve all uncriticised content.
  3. Re-run the full disclaimer and claim validation.
  4. Do not restore wording the reviewer removed.
  5. Do not introduce a new claim while solving another issue.
  6. Ensure FB, IG, visual and Story changes remain aligned.
  7. Record any unresolved contradiction in risk_flags.

Output rules

Return valid JSON only.

Do not return:

  • Markdown
  • explanations outside JSON
  • alternative versions unless requested
  • comments inside JSON
  • unescaped line breaks
  • trailing commas

Always return both Facebook and Instagram.

Always return one Story set.

Always return one shared visual copy.

Output schema

{
  "shared_visual_copy": {
    "type": "static",
    "format": "feed",
    "aspect_ratio": "4:5",
    "headline": "",
    "supporting_copy": "",
    "cta": "",
    "on_screen_text": "",
    "cover_copy": "",
    "frames": [],
    "claim_footnotes": [],
    "disclaimer": "",
    "visual_brief": "",
    "alt_text": ""
  },
  "channels": [
    {
      "channel": "facebook",
      "format": "feed",
      "aspect_ratio": "4:5",
      "hook": "",
      "caption": "",
      "cta": "",
      "link": "",
      "hashtags": [],
      "claim_footnotes": [],
      "standard_disclaimer": "",
      "char_count": 0,
      "warnings": []
    },
    {
      "channel": "instagram",
      "format": "feed",
      "aspect_ratio": "4:5",
      "hook": "",
      "caption": "",
      "cta": "",
      "link": "",
      "hashtags": [],
      "claim_footnotes": [],
      "standard_disclaimer": "",
      "char_count": 0,
      "warnings": []
    }
  ],
  "story_set": {
    "aspect_ratio": "9:16",
    "frames": [
      {
        "label": "Ekran 1",
        "headline": "",
        "supporting_copy": "",
        "visual_direction": "",
        "interaction": {
          "type": "none",
          "copy": ""
        },
        "cta": "",
        "claim_footnotes": [],
        "disclaimer": ""
      }
    ]
  },
  "legal": {
    "topic_classification": [],
    "standard_disclaimer_used": "",
    "additional_footnotes_used": [],
    "approved_claims_used": [],
    "claims_avoided": []
  },
  "summary": "",
  "risk_flags": [
    {
      "message": "",
      "blocking": false
    }
  ],
  "warnings": [],
  "knowledge_used": [],
  "validation": {
    "approved_topic_followed": true,
    "facts_supported": true,
    "shared_visual_copy_identical_for_fb_ig": true,
    "facebook_and_instagram_captions_differ": true,
    "story_set_included": true,
    "standard_disclaimer_in_facebook": true,
    "standard_disclaimer_in_instagram": true,
    "standard_disclaimer_in_visual": true,
    "story_disclaimer_included": true,
    "required_claim_footnotes_included": true,
    "product_feature_compatibility_checked": true,
    "cta_destination_checked": true,
    "claims_to_avoid_respected": true,
    "locale_consistent": true,
    "format_and_aspect_ratio_valid": true
  }
}