⚠️ DEPRECATED — V2 Migration Recommended
This is a V1 skill (template-based loops). It still works for backward compatibility.
V2 equivalent: Use bolta.job.execute with a Content Creator agent instead.
Why migrate to V2?
- Adaptive generation: Agents reason about context instead of filling templates
- Learning: Agents improve over time based on performance data
- Flexibility: Natural language instructions instead of rigid template variables
- Memory: Agents remember what works and adapt their approach
Migration path:
- Create Content Creator agent via
bolta.agent.hire
- Create Job with natural language instructions (e.g., "Create 7 LinkedIn posts about remote work best practices")
- Bind voice_profile_id, account_ids to the job
- Activate job via
bolta.agent.activate_job
- Agent generates posts adaptively (not template fills)
For details, see: skills/automation-plane/DEPRECATED.md
Goal
Turn a template into a real loop with multiple posts, all routed to review.
Hard rules
- Always query workspace policy + capabilities.
- Always route to Inbox Review (pending review). Do not schedule or publish from this skill.
Steps
- Fetch policy + capabilities.
- Create the loop shell:
bolta.create_loop({workspace_id, voice_profile_id, template_id, horizon_days, cadence, account_ids})
- For each slot in the loop horizon:
- Choose a topic seed (rotate through provided topic_seeds; if none, derive 5–10 from template theme).
- Render template:
bolta.render_template(template_id, {voice_profile_id, topic_seed, slot_index})
- Create draft post:
bolta.create_post({workspace_id, voice_profile_id, account_ids, body, status: "draft", metadata: {loop_id, slot_index}})
- Submit as a single review bundle:
bolta.submit_for_review({workspace_id, post_ids, note: "Loop generated from template"})
Output
Return loop_id, post_ids, review_bundle_id, final_state=pending_review.
Failure handling
- If some posts fail creation, still submit the ones that succeeded.
- Add warnings listing failed slots.
1---2name: bolta-loop-from-template3version: 1.0.04description: Create a recurring content loop from a template using a voice profile, then send all generated posts into Inbox Review as a bundle.5category: creator6roles_allowed: [Owner, Admin, Creator]7deprecated: true8deprecation_notice: "V1 skill - Replaced by bolta.job.execute (V2 agentic jobs). This skill still works for backward compatibility but V2 jobs are recommended for adaptive, learning-based content generation."9safe_defaults:10 always_route_to_review: true11tools_required:12 - bolta.get_workspace_policy13 - bolta.get_my_capabilities14 - bolta.get_voice_profile15 - bolta.render_template16 - bolta.create_loop17 - bolta.create_post18 - bolta.submit_for_review19inputs_schema:20 type: object21 required: [workspace_id, voice_profile_id, template_id]22 properties:23 workspace_id: { type: string }24 voice_profile_id: { type: string }25 template_id: { type: string }26 horizon_days: { type: number, default: 14 }27 cadence: { type: string, description: "e.g., daily|3x_week|weekdays" }28 account_ids: { type: array, items: { type: string } }29 topic_seeds: { type: array, items: { type: string } }30outputs_schema:31 type: object32 properties:33 loop_id: { type: string }34 post_ids: { type: array, items: { type: string } }35 review_bundle_id: { type: string }36 final_state: { type: string, enum: [pending_review] }37 warnings: { type: array, items: { type: string } }38organization: bolta.ai39author: Max Fritzhand40---4142## ⚠️ DEPRECATED — V2 Migration Recommended4344**This is a V1 skill (template-based loops).** It still works for backward compatibility.4546**V2 equivalent:** Use `bolta.job.execute` with a Content Creator agent instead.4748### Why migrate to V2?49- **Adaptive generation:** Agents reason about context instead of filling templates50- **Learning:** Agents improve over time based on performance data51- **Flexibility:** Natural language instructions instead of rigid template variables52- **Memory:** Agents remember what works and adapt their approach5354### Migration path:551. Create Content Creator agent via `bolta.agent.hire`562. Create Job with natural language instructions (e.g., "Create 7 LinkedIn posts about remote work best practices")573. Bind voice_profile_id, account_ids to the job584. Activate job via `bolta.agent.activate_job`595. Agent generates posts adaptively (not template fills)6061**For details, see:** `skills/automation-plane/DEPRECATED.md`6263---6465## Goal66Turn a template into a real loop with multiple posts, all routed to review.6768## Hard rules69- Always query workspace policy + capabilities.70- Always route to Inbox Review (pending review). Do not schedule or publish from this skill.7172## Steps731. Fetch policy + capabilities.742. Create the loop shell:75 - `bolta.create_loop({workspace_id, voice_profile_id, template_id, horizon_days, cadence, account_ids})`763. For each slot in the loop horizon:77 - Choose a topic seed (rotate through provided topic_seeds; if none, derive 5–10 from template theme).78 - Render template:79 - `bolta.render_template(template_id, {voice_profile_id, topic_seed, slot_index})`80 - Create draft post:81 - `bolta.create_post({workspace_id, voice_profile_id, account_ids, body, status: "draft", metadata: {loop_id, slot_index}})`824. Submit as a single review bundle:83 - `bolta.submit_for_review({workspace_id, post_ids, note: "Loop generated from template"})`8485## Output86Return loop_id, post_ids, review_bundle_id, final_state=pending_review.8788## Failure handling89- If some posts fail creation, still submit the ones that succeeded.90- Add warnings listing failed slots.