← SearchFitCONTENT HISTORY

Update to SearchFit

Snapshot Sep 30, 2026 · 23:00 UTC · version 1.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Write, edit and publish articles for a brand. Use for drafting an article, generating a brief or topic ideas, bulk creating content, adding a featured image, translating an article, exporting, or publishing to a connected CMS such as WordPress, Webflow, Shopify or Squarespace. Do not use for keyword research or for measuring how content performs.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 2450
    }
  ],
  "name": "content-production",
  "skill_md_contents": "---\nname: content-production\ndescription: Write, edit and publish articles for a brand. Use for drafting an article, generating a brief or topic ideas, bulk creating content, adding a featured image, translating an article, exporting, or publishing to a connected CMS such as WordPress, Webflow, Shopify or Squarespace. Do not use for keyword research or for measuring how content performs.\n---\n\n# Content production\n\nTake an article from idea to published, using the brand's own voice and connected CMS.\n\nEvery tool here is scoped to one brand and takes `brand_id`.\n\n## Step 1: resolve the brand\n\nCall `list_brands`. If more than one, ask which. Keep `brand_id` for every later call.\n\n## Step 2: agree the subject before generating\n\nGeneration costs credits and takes minutes, so settle the subject first.\n\n- The user has a topic: use it.\n- The user wants ideas: call `generate_topic_suggestions` and let them choose.\n- The user wants to close an AI visibility gap: get the gap from the ai-visibility-report skill first, then write against it.\n\nSet the title deliberately. `create_content` accepts both `title` and `prompt`, and they do different jobs:\n\n- `title` is the exact headline to publish under.\n- `prompt` is the brief for the writer, for example \"cover ROI, include two case studies\".\n\nIf the user gives an exact headline, pass it as `title`. Do not paraphrase it into the brief, and do not let the brief overwrite it. The title also steers the featured image, so a wrong title produces a wrong image.\n\n## Step 3: generate\n\nCall `create_content` with `brand_id` and the agreed `title` and `prompt`. Optional: `type` (how_to, listicle, comparison) and `model` from `list_ai_models`.\n\nGeneration is asynchronous:\n\n1. Note the returned content id.\n2. Poll `get_content_job_status` with `content_id`. Do not poll faster than every 20 seconds.\n3. When it completes, call `get_content` to read the draft.\n\nFor many articles at once use `bulk_create_content`, but confirm the full list with the user first. It multiplies both credits and review effort. Check the plan's remaining usage with `get_workspace_details` before a large batch, so the limit is known before the spend rather than after it.\n\n## Step 4: revise\n\n- `update_content` for edits you can make directly, including the title and body.\n- `regenerate_article` to rewrite from a changed brief. This replaces the draft, so confirm before calling it.\n- `bulk_update_content` for the same change across several articles, for example a status move.\n\n## Step 5: add the image\n\n1. `generate_image` with a prompt describing the subject. Base it on the article title, not the brief.\n2. `set_article_image` to attach it.\n\n## Step 6: publish\n\n1. `list_connectors` to see which CMS destinations the brand has connected. If none, tell the user to connect one in the brand's Connectors settings and stop.\n2. `publish_content` with `content_id` and the chosen `integration_id`.\n3. `list_publications` to confirm it landed and to get the live URL.\n\nSquarespace is the exception. It exposes no API for creating posts, so use `export_content` to produce an import file that the user uploads themselves. Say this plainly rather than implying an automatic publish.\n\nOther paths: `import_content` brings existing articles in, `manage_translations` produces other language versions.\n\n## Boundaries\n\n- Never publish without explicit confirmation. Publishing is public and hard to undo. Show the title, the destination and the URL, then wait for a yes.\n- Never bulk create or regenerate without confirming scope, for the same reason.\n- `delete_content` is destructive. Confirm, and list exactly what will be deleted.\n- Do not claim an article is live until `list_publications` shows it. A queued publish is not a published one.\n"
}

SHA-256 of public snapshot: 6bb9b125d061a9d57f9398a75d32e0292e2a3fa9a5de8c748cedee3c07c8cd1e