원클릭으로
genfeed-connector
Detect Genfeed connectivity and expose the gf CLI for content-loop state, tokens, manifests, stage transitions, and feedback.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Detect Genfeed connectivity and expose the gf CLI for content-loop state, tokens, manifests, stage transitions, and feedback.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Create paid ad copy for Meta, Google, LinkedIn, TikTok, and X using direct-response frameworks, platform limits, variants, and test plans. Triggers on ad headlines, ad creative, paid social ads, Google ads, and ad variants.
Analyze paid media performance, diagnose issues, and provide optimization recommendations across all major ad platforms. Triggers on "analyze ad performance", "ad metrics", "why is my ROAS low", "ad optimization", "campaign performance", "creative fatigue", "ad budget allocation".
Collect X and LinkedIn post metrics for the Genfeed content loop and emit normalized Metric JSON for feedback scoring.
Create SEO-optimized blog posts in multiple formats with heading hierarchy, meta descriptions, and internal link strategy. Triggers on "write a blog post", "create a blog article", "draft a blog", "write an article", "blog about".
Create brand foundations: name, positioning, voice, and strategic identity. Triggers on brand naming, positioning, voice, identity, differentiation, and day-one brand strategy.
Validate channel focus against the One Channel Rule before adding more platforms or tactics. Triggers on channel sprawl, platform focus, right-channel questions, and expansion readiness.
| name | genfeed-connector |
| description | Detect Genfeed connectivity and expose the gf CLI for content-loop state, tokens, manifests, stage transitions, and feedback. |
| license | MIT |
| metadata | {"author":"genfeedai","version":"1.0.0"} |
You manage shared state and capability detection for the Genfeed content factory. Every other loop skill (trend-scout, media-forge, social-poster, analytics-collector, content-loop-orchestrator) talks to the outside world through this one seam, so they stay identical whether the factory runs alone on a laptop or backed by genfeed.ai.
This skill is the answer to one question: is genfeed connected, and if so, route durable concerns to it; if not, fall back to the local filesystem.
Loop skills are pure workers — read a job, do work, emit a result, exit. They hold no state, no secrets, and no schedule. Everything durable lives behind this seam:
| Concern | standalone backend | connected backend (genfeed.ai) |
|---|---|---|
| Manifest state | .genfeed/items/*.json | genfeed content-items DB |
| Scheduling | manual / harness /loop | genfeed cron (always-on) |
| Platform tokens | env vars only | genfeed vault, short-lived, injected |
| Analytics callbacks | manual fetch | genfeed webhook receiver |
| Approval gate | ask in chat | genfeed approval UI |
The same gf commands work in both modes. A skill never knows or cares which backend is live.
gf detect resolves the mode (first hit wins) and caches it to .genfeed/ctx.json:
GENFEED_API_KEY env set → apigenfeed status CLI exits 0 on PATH → api.genfeed/config.json names an apiKeyEnv whose env var is set → apictx.json never stores a secret value — only the name of the env var holding the key. The key itself stays in the environment or the genfeed CLI keychain.
This gives the "independent but upgradeable" property: the skills work for anyone with no genfeed account, and light up persistence + always-on scheduling + a managed token vault the moment a key is present.
Loop skills never import this skill's TypeScript. The seam is invoked as a CLI and communicates only through:
This keeps every skill independently installable — no cross-skill import paths to break.
Run with bun run gf.ts <command> (Bun 1.1+, zero dependencies — uses only Node built-ins and global fetch).
bun run gf.ts detect [--mode standalone|api] # resolve + cache runtime context
bun run gf.ts create [--thesis "..."] [--stage selected] [--tags a,b] [< trend.json]
bun run gf.ts get <id>
bun run gf.ts list [--stage <stage>] [--tag <tag>] [--limit <n>]
bun run gf.ts save # full ContentItem JSON on stdin
bun run gf.ts transition <id> <stage> [--note "..."]
bun run gf.ts next <stage> # oldest item waiting in <stage>
bun run gf.ts record-metric <id> # Metric JSON on stdin
bun run gf.ts feedback <term> # prior-performance multiplier (loop closure)
bun run gf.ts token <platform> # resolve a token (env or vault)
All commands print JSON to stdout; errors print to stderr and exit non-zero.
One row tracks an item through the whole loop. Stages:
trend_candidate -> selected -> briefed -> remixed -> producing
-> awaiting_approval -> approved -> scheduled -> posted -> measured -> archived | killed
Key fields: trend (the originating signal), thesis (flagship angle), brief, derivatives[] (per-platform copy + media refs + postId), artifacts[] (generated media), metrics[] (performance), feedbackScore (0..1, derived from metrics), tags[] (pillars + trend terms — how analytics attribute back to trends), and history[] (every stage transition).
See lib/schema.ts for the full type.
feedback <term> averages feedbackScore across all measured items tagged with that term and returns a 0..1 multiplier. trend-scout multiplies a fresh trend's raw score by (1 + multiplier), so themes that performed before rise to the top of the next cycle. That is the analytic -> repeat edge of the loop, implemented in data.
ctx.json and config.json store only the name of the key's env var, never its value.# orchestrator picks the next job and hands it to a worker
JOB=$(bun run ../genfeed-connector/gf.ts next selected)
# worker emits a result; orchestrator advances the stage
bun run ../genfeed-connector/gf.ts transition "$ID" remixed --note "atomized to 6 platforms"
# poster resolves a token without ever seeing the long-lived credential
export X_BEARER_TOKEN="$(bun run ../genfeed-connector/gf.ts token x)"
If gf is not resolvable as a sibling skill, a worker degrades to its own local .genfeed/ directory using the same on-disk format.