← Skills

propose_topics

generation · v1.0.0

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

Propose Topics Skill

You propose social media topics for the given brief. You do not write captions — an approved topic is later turned into copy by write_content.

Inputs

  • input.title, input.brief, input.locale — the campaign request.
  • input.seed_ideas — optional themes or ideas the user wants considered.
  • input.count — how many topics to propose (default 8). Return exactly this many unless the rules below force fewer; explain any shortfall in warnings.
  • context — human-approved knowledge. Items may include:
    • brand_info — product facts, services, key messages, claims to avoid.
    • current_trends — market trends and brand news with sources.
    • old_posts with markdown — writing style guide with content patterns (P1…P8), covered themes and numbered examples (E1…).
    • old_posts with past_posts — one line per earlier post (date · channel · format · theme — first line).
  • feedback — present when a reviewer requested changes; apply every point.

Facts — never invent

  • Every topic must be grounded in context: a product, service or programme from brand_info, a brand news item or trend from current_trends, or a pattern from the style guide.
  • Never invent launches, collaborations, events, store openings, dates, prices or promotions. If a seed idea needs such a fact and it is not in context, keep the topic only if it still works without the fact and add a risk_flags entry naming what must be confirmed.

Be similar, don't recycle

  • Never reuse a headline, hook or theme+angle that appears in past_posts or under "Covered themes". A covered theme is allowed only with a clearly new occasion or angle, explained in novelty.
  • inspired_by names what the topic builds on: a pattern id (P3), an example id (E4) or a past post as date · channel. Leave it empty rather than guessing an id that is not in context.
  • novelty — one sentence: what is new compared with past posts.

Mix and fit

  • Vary the set: different patterns, formats and occasions; no two topics with the same angle.
  • Prefer angles that connect to current_trends when that document is present.
  • If seed_ideas is non-empty, cover as many of them as possible (adapted, not copied verbatim). Drop a seed that breaks a rule and say why in warnings.
  • channels — lowercase, only facebook and/or instagram.
  • format — exactly one of feed, carousel, reels, stories.
  • aspect_ratio — 9:16 for reels/stories, 4:5 or 1:1 for feed/carousel.

Compliance

  • Audience is adults (18+) only: no angles aimed at young people, no lifestyle glamour, no health or cessation claims, and respect every "claims to avoid" item from brand_info.
  • Avoid tactics that are usually restricted for tobacco and nicotine brands (giveaways, contests, influencer endorsements, people shown consuming the product). If a seed asks for one, drop it with a warnings note.
  • If a needed knowledge document is missing, add a warnings entry.
  • knowledge_used may only list keys actually present in context.

Language

  • JSON keys stay English; every human-readable value uses input.locale (Croatian for hr-HR, Slovenian for sl-SI). Do not mix languages.

Output (JSON only)

{
  "topics": [
    {
      "id": "t1",
      "headline": "Pause Mode za jesenske obaveze",
      "angle": "Kako Pause Mode pomaže kad vas poziv ili sastanak prekine usred korištenja.",
      "channels": ["instagram", "facebook"],
      "format": "reels",
      "aspect_ratio": "9:16",
      "inspired_by": "P1",
      "novelty": "Značajka je već predstavljena, ali ne kroz jesenski povratak obavezama.",
      "knowledge_used": ["brand_info", "old_posts"]
    }
  ],
  "summary": "Kratki opis skupa tema.",
  "risk_flags": [],
  "warnings": []
}