with one click
generate-weekly-ideas
Saturday 8am scheduled task. Reads trend-sources.md + brand-brief + recent calendar-log entries; produces 10 ranked post ideas to ideas/YYYY-MM-DD-ideas.md. Headless: NEXT MOVE block embedded in the file footer.
Saturday 8am scheduled task. Reads trend-sources.md + brand-brief + recent calendar-log entries; produces 10 ranked post ideas to ideas/YYYY-MM-DD-ideas.md. Headless: NEXT MOVE block embedded in the file footer.
Draft a platform-native Facebook post in your voice. Reads platform-voice.md + brand-brief.md + business-brain.md. 40-80 word sweet spot. Link previews supported. Plan-then-approves, writes to outputs/, optionally schedules via Blotato. Reads pageId from state-social.md.
Draft a platform-native Instagram caption with required image attachment. Reads platform-voice.md + brand-brief.md + business-brain.md + asset-index.md. Image MANDATORY. 125-2200 char caption, 5-10 hashtags. Plan-then-approves, writes to outputs/, schedules via Blotato.
Draft a platform-native LinkedIn post in your voice. Reads platform-voice.md + brand-brief.md + business-brain.md. Generates 3 hook candidates, plan-then-approves, writes to outputs/, optionally schedules via Blotato. Follows the 12-step shared draft-skill spec.
Draft a platform-native Meta Threads post or reply chain in your voice. Reads platform-voice.md + brand-brief.md + business-brain.md. Up to 500 chars per post, reply chain up to 10. Conversational tone (Instagram-but-text). Plan-then-approves, writes to outputs/, schedules via Blotato.
Draft a TikTok video script + caption + hashtags. Reads platform-voice.md + brand-brief.md + business-brain.md + asset-index.md. Video MANDATORY. Hook under 3s -> context -> payoff -> CTA. Caption under 150 chars, 3-5 hashtags. Plan-then-approves, outputs/, schedules via Blotato.
Draft a platform-native Twitter/X post or thread in your voice. Reads platform-voice.md + brand-brief.md + business-brain.md. 280-char enforcement per tweet, thread support up to 12 tweets. Plan-then-approves, writes to outputs/, optionally schedules via Blotato.
| name | generate-weekly-ideas |
| description | Saturday 8am scheduled task. Reads trend-sources.md + brand-brief + recent calendar-log entries; produces 10 ranked post ideas to ideas/YYYY-MM-DD-ideas.md. Headless: NEXT MOVE block embedded in the file footer. |
| when_to_use | ["/generate-weekly-ideas","generate weekly ideas","weekly ideas","Saturday ideas","saturday cron ideas"] |
Saturday 8am scheduled task. Reads the user's trend-sources + brand-brief + recent posts, then drops 10 ranked ideas into projects/social-media-content/ideas/YYYY-MM-DD-ideas.md so Monday's /weekly-content-session has a ready idea bank.
Headless skill. Runs on cron ā no live user. No
AskUserQuestioncalls. No chat output beyond a one-line "Saved ideas to " confirmation. Theā” NEXT MOVEblock lives in the FILE FOOTER (per the headless exception in_shared/foundations.md), not in chat ā the user reads it Monday morning when they open the file.
Read on every run:
| File | Why |
|---|---|
projects/social-media-content/trend-sources.md | RSS feeds, sites, keywords, accounts to monitor |
projects/social-media-content/brand-brief.md | Voice + wedge + contrarian belief for ranking |
about-me/business-brain.md | Business context for relevance scoring |
projects/social-media-content/calendar-log.md | Last 30 days of posts ā to NOT re-suggest |
_aibos/state-social.md | selected_platforms list for platform-fit tagging |
_shared/hook-patterns.md | Hook pattern library for scoring + assignment |
_shared/foundations.md | Foundation B + C (headless variants) |
If trend-sources.md is missing or empty ā write a one-line failure note to projects/social-media-content/memory.md and halt:
<ISO> | /generate-weekly-ideas | headless run ā FAILED: trend-sources.md missing or empty. Run /onboard-social Phase 4.
The user will see the failure on next manual invocation of any cowork-social skill that reads memory.md.
AskUserQuestion calls. Not at any step.plan-then-approve: OFF for this skill only.Saved <N> ideas to <path>. Nothing more.memory.md instead of halting visibly. The user finds out at the next manual run.ā” NEXT MOVE lives in the OUTPUT FILE footer. Not in chat. The user opens the file Monday morning and the file itself tells them what to do next.Walk trend-sources.md category by category. For each entry:
| Source category | How to query (in priority order) |
|---|---|
| RSS feeds | Perplexity: "what's new in this week?" ā fall back to direct fetch if available |
| Sites to check | Firecrawl (if available + auth): scrape latest article titles + summaries ā fall back to Perplexity |
| Keywords to monitor | Perplexity: "what's trending around this week?" |
| Accounts to watch | VidIQ (for YouTube): channel outliers ā IG: vidiq_ig_profile_reels ā others: Perplexity "what did post recently?" |
| Podcasts | Skip in v0.1 (deferred ā note in output if user had podcasts listed) |
Collect raw signals as a flat list: {source, title, snippet, url}.
Mix angles to match /content-coach's 5 categories. Allow duplicate angles across the 10 (we want range, but the strongest angle can repeat if signals support it):
| Angle | Target count | Pull from |
|---|---|---|
| Contrarian belief / polarizing opinion | 2 | brand-brief.md wedge + contrarian signals |
| Proof story / receipts | 2 | brand-brief.md recent_proof_story + user data |
| Trend commentary | 2 | Step 1 trend signals |
| Personal experience / vulnerable | 2 | Suggested topics user could share |
| Customer transformation / "most people get this wrong" | 2 | Wedge + customer story patterns |
For each candidate, write:
_shared/hook-patterns.md)selected_platforms it works best on)Score each idea on five dimensions. Total = sum, ceiling 100:
| Dimension | Max points | What earns full marks |
|---|---|---|
| Wedge alignment | 30 | Pulls directly from brand-brief.md ā contrarian_belief or recent_proof_story |
| Specificity | 20 | Concrete numbers, names, dollar amounts, dates in the hook |
| Recency | 20 | Trend is fresh THIS week (from Step 1 signals); evergreen ideas cap at 10 |
| Hook ceiling | 15 | Fits a HIGH-VIRALITY pattern (#9 Receipts, #10 Reverse, #11 Stolen Lesson) ā partial credit for others |
| Recognition trigger | 15 | User's audience will nod on the first sentence (pain point or shared belief) |
Rank 1-10 by total score. Break ties by Wedge alignment, then Specificity.
Read calendar-log.md. For each candidate idea, compare against post_slug rows from the last 30 days:
Final list = exactly 10 ideas. Not more, not less.
Resolve the output path: projects/social-media-content/ideas/<today's-YYYY-MM-DD>-ideas.md.
If the directory doesn't exist, create it.
Write this exact structure:
---
type: cowork-social-weekly-ideas
plugin: cowork-social
plugin_version: 0.1.0
generated_date: <YYYY-MM-DD>
generated_time: <HH:MM ISO>
week_starting: <next Monday's YYYY-MM-DD>
total_ideas: 10
source_skill: /generate-weekly-ideas
---
# Weekly Ideas ā Week of <Monday date>
> Generated by `/generate-weekly-ideas` on <ISO timestamp>. Read by `/weekly-content-session` on Monday.
## The 10 ideas (ranked)
| # | Score | Platform fit | Hook | Angle | Source |
|---|---|---|---|---|---|
| 1 | 92 | linkedin, threads | "<hook text>" | Contrarian belief | <url or "user wedge"> |
| 2 | 88 | twitter, threads | "<hook text>" | Proof story | <url or "brand-brief"> |
| 3 | 85 | instagram | "<hook text>" | Trend commentary | <url> |
| 4 | 83 | linkedin | "<hook text>" | Vulnerable | brand-brief |
| 5 | 80 | tiktok | "<hook text>" | Customer transformation | <url> |
| 6 | 78 | linkedin, facebook | "<hook text>" | Trend commentary | <url> |
| 7 | 75 | twitter | "<hook text>" | Most-people-wrong | user wedge |
| 8 | 72 | threads | "<hook text>" | Proof story | brand-brief |
| 9 | 68 | instagram, tiktok | "<hook text>" | Vulnerable | brand-brief |
| 10 | 65 | facebook | "<hook text>" | Recognition pain | <url> |
## Idea detail
### Idea 1 (92/100) ā <short title>
- **What:** <1-sentence description>
- **Why it'll go viral:** <1 sentence ā name the dimension that earned highest score>
- **Suggested platform(s):** <from platform-fit column>
- **Suggested hook pattern:** #<N> ā <pattern_name>
- **Source:** <url or internal reference>
### Idea 2 (88/100) ā <short title>
... (repeat for all 10)
---
## How to use this file
Monday morning, run `/weekly-content-session`. It'll read this file, show you the 10 ideas, and walk you through picking 5-7 to draft + schedule for the week.
---
ā” NEXT MOVE: Run /weekly-content-session Monday at 10am to draft idea #1.
Why: Idea #1 scored 92/100 ā highest-virality candidate this week + the trend signal is fresh, the window closes by Friday.
The ā” NEXT MOVE block is the FILE FOOTER ā not chat output. The user reads it when they open the file.
See _shared/foundations.md ā Foundation B. Headless adaptation:
Skip the live question. No user present ā can't ask "what would've made this 10% better?"
Log the run. Append to projects/social-media-content/memory.md:
<ISO> | /generate-weekly-ideas | headless run ā <N> ideas generated, top score <X>, sources used <count>
Recurrence detection across headless runs. Each Monday's /weekly-content-session reads the picks from the user. After 4 weeks, if the user has consistently picked 0 ideas from the generated files (compare picks in calendar-log.md against rows in the last 4 ideas/*.md files), flag for revision.
Append to projects/social-media-content/skill-improvements.md:
| /generate-weekly-ideas | low-pickup rate across 4 weeks | <first_seen_date> | 4 | re-tune ranking algorithm or trend-source coverage | reviewed: no |
If skill-improvements.md doesn't exist, create it with the canonical header from _shared/foundations.md.
Silent flag for live skills to surface. On the next manual run of any cowork-social skill that reads memory.md, the headless failure or low-pickup flag becomes visible.
ā” NEXT MOVE block (file-footer variant)See _shared/foundations.md ā Foundation C. Headless adaptation:
/weekly-content-session Monday morning), justify in one sentence tied to the highest scoring dimension.ā” NEXT MOVE: .+ .+ .+\n Why: .+ ā applied to the file footer text.Examples by top-idea state:
ā” NEXT MOVE: Run /weekly-content-session Monday at 10am to draft idea #1. Why: Idea #1 scored 92/100 ā highest-virality candidate this week + the trend signal is fresh, the window closes by Friday.ā” NEXT MOVE: Run /weekly-content-session Monday morning to start with idea #1. Why: Idea #1 hits all 3 high-virality hook patterns ā pulling from your contrarian wedge with a fresh proof point.ā” NEXT MOVE: Pick some ideas later. (no specific subject, no timing ā REGENERATE)If the block fails the validation regex ā regenerate before writing the file.
calendar-log.md. No repeat slugs.memory.md. Never crash silently ā the next live skill surfaces the failure._shared/foundations.md for B + C. Don't duplicate the rules.The output file's prose: short, direct, Monday-morning-friendly. The user is opening this groggy, with coffee. Lead them straight to the action.
The hooks themselves: full creator-voice per _shared/hook-patterns.md. Match the wedge, match the brand-brief ā don't AI-flatten them.