Kelly AI Newsroom
Overview
Use this skill as Kelly's daily industry-intelligence operator for AI/news-source intelligence.
It turns current news sources, trend signals, competitor movement, customer questions, and buyer-intent clues into a small reviewable batch, held in Busabase:
- source-backed signals;
- why each signal matters to the buyer;
- sales or operating actions for today;
- draft messages/content for sales opener, LinkedIn post, client memo;
- blocked claims that need human, legal, compliance, or domain review.
Signal/action/draft collection is a genuine external operation a browser cannot perform (web browsing, source reading, buyer-intent judgment). The AirApp itself only reads and writes Busabase — it never browses, posts anywhere, or performs an external handoff; Kelly writes today's batch directly into Busabase through busabase-sdk as part of the normal workflow below, then reviews and decides inside the app.
Default interaction mode: App UI. Unless the user explicitly asks for chat-only handling, check onboarding, collect/refresh today's batch, and give the user the clickable AirApp URL (or the local preview URL when local preview is explicitly requested). Use chat-only mode only when the user says "纯聊天", "chat only", "不要打开 UI", or similar.
Mandatory Dependencies
- Read and follow
$kelly-app-skill-creator for product behavior, visual quality, responsive layout, and the complete canonical content/kelly-ai-newsroom-app/ artifact.
- Read and follow
$busabase for connection, target Space, node discovery, ChangeRequests, review, and merge behavior.
- Read and follow
$busabase-app-creator for resource modeling, AirApp runtime limits, security, validation, and deployment.
If a dependency is unavailable, preserve this skill's product contracts, stop before the unavailable Busabase operation, and report the exact missing dependency. Do not invent a second data backend.
Product Package
- Buyer: founders, operators, and product sellers who need to convert news and trend signals into daily sales scenes.
- Pain: hot AI/news signals are noisy, and it is hard to know which one creates a real sales opportunity.
- Offer: daily news-source and buyer-intent intelligence that turns trend signals into approved sales actions.
- Demo source mix: OpenAI, Microsoft Copilot, Google AI Search, Perplexity, privacy regulators, and local business media.
Sales framing:
Every morning, AI watches the sources that affect your business, turns them into today's sales actions, and puts the drafts in a review queue before anything becomes official.
Do not lead with "AI platform", "agent workspace", "database", or model names. Lead with the daily business scene.
Scene Logic
Use the newsroom to separate attention from purchase intent. A model release, search update, enterprise admin change, pricing shift, source-ranking change, or regulator notice matters only when it changes what a founder, operator, agency, consultant, or B2B seller must buy, replace, explain, or defend.
Prioritize signals in this order:
- buyer workflow disruption: a news-source, search, or AI platform change that alters how leads discover, compare, or evaluate vendors;
- budget trigger: a Microsoft, Meta, Google, OpenAI, Anthropic, Perplexity, or enterprise-software move that makes a concrete internal project newly urgent;
- proof pressure: a public case, regulation, outage, benchmark, or lawsuit that forces buyers to ask "are we exposed?";
- channel opportunity: a trend that can become a credible sales opener, client memo, landing-page angle, or Buda/Busabase demo script within 24 hours.
Every batch must include one narrow buyer scene, one "why now" sentence, and one approved next action. If a signal is interesting but does not imply a business action, keep it as watch-only.
Boundary
- The skill may browse public/current sources, reason over buyer intent, draft actions/content, and write signal/action/draft/source records to Busabase.
- The AirApp reads and writes its own Busabase Bases only. It must never post content, send WhatsApp/email, mutate CRMs, scrape private systems, spend money, or perform any other external side effect.
- Customer-visible drafts, regulated claims, pricing promises, medical/financial/legal advice, and outbound messages are approval-required.
- Store only the minimal source excerpts needed for review. Never store crawl credentials or API keys in Busabase.
Busabase Resources
Five Bases under one application Folder (kelly-ai-newsroom), declared in content/kelly-ai-newsroom-app/app/js/config.js and the generated template sidecars under content/:
signals: source-backed AI/news-source signals — evidence link, why-it-matters, buyer-intent interpretation, confidence, risk badges, a suggested action, and the human decision verdict.
actions: approved/blocked/reviewable sales or operating actions linked to signals, with owner, priority, reason, next step, and the human decision verdict.
drafts: editable channel drafts (sales opener / LinkedIn post / client memo) tied to an approved action; a human edit is stored as edited-body on the same row, never a separate file.
sources: configured news/source categories, freshness, and coverage gaps.
settings: one row (record-id: "batch") holding the current batch's metadata (batchid, generatedat, source, vertical, buyer, offer) as a JSON payload.
Resources provision lazily through an idempotent Busabase ChangeRequest the first time the app runs in a Space; see references/ui-schema.md for exact field shapes.
First Run And Onboarding
On invocation, check the signals, actions, and drafts Bases. If all are empty, guide setup before collecting a real batch: ask for company/brand name, geography, language, and customer segment; 3-10 public source URLs or source categories to monitor; competitor names/URLs; approved offer, CTA, and forbidden claims; preferred channels among sales opener, LinkedIn post, client memo. Never ask for API keys or platform tokens in chat — Busabase connection happens through the app's own Connect Busabase gate.
Local App
Default behavior is AirApp-first — give the user the clickable AirApp URL. Start pnpm --dir content/kelly-ai-newsroom-app dev only when local preview/debugging is explicitly requested.
Required app views (hash routes):
#/overview: human-attention panel — today's needs-review/approved/blocked counts, top signals, and ready (approved) actions.
#/signals and #/signals/<id>: source-backed signals with evidence links, buyer-intent interpretation, confidence, risk badges, and a decision panel (Approve / Request changes / Block) with a review note.
#/actions and #/actions/<id>: approved/blocked/reviewable operating or sales actions with owner, priority, reason, next step, linked signals, and the same decision panel.
#/drafts and #/drafts/<id>: editable sales opener, LinkedIn post, client memo drafts with the decision panel plus a Save revision action that writes an edited body directly onto the draft record.
#/sources: configured source categories, freshness, and gaps.
#/settings: sanitized batch metadata, data provider, onboarding state.
Demo mode:
?demo=1, ?demo=overview, ?demo=signals, ?demo=actions, ?demo=drafts, and ?demo=detail load deterministic demo data.
lang=en or lang=zh forces UI chrome language.
- Demo mode never reads or writes Busabase; decisions only mutate the in-memory demo batch.
Batch Workflow
- Detect mode. Default to App UI.
- Browse or otherwise collect current public evidence. For news/trends, use exact dates and source URLs.
- Build one narrow buyer scene, not a generic AI report.
- Write the batch directly into Busabase through
busabase-sdk (bases.createChangeRequest for each new signal/action/draft/source row, matching the field slugs in references/ui-schema.md; refresh the settings "batch" row's JSON payload with batchid/generatedat/source/vertical/buyer/offer). Keep every item tied to evidence or mark it blocked.
- Open the AirApp for review.
- Poll for
requestchanges decisions (decision-verdict = requestchanges on a signal/action/draft row) and revise only those items — write the revision back onto the same record.
- On "execute/export approved", run
node scripts/executedecisions.mjs first as a dry run. After performing any real handoff, run node scripts/executedecisions.mjs --apply to mark the approved items done.
Decisions Workflow
- Kelly's verdicts write directly onto the item record (
status,
decision-verdict, decision-comment, decided-at) through busabase-sdk. From a standalone local preview the write merges immediately (trusted operator); from the deployed AirApp it creates a pending ChangeRequest for the trusted process to merge.
- Before executing anything, run
node scripts/execute_decisions.mjs
(dry-run). It prints the concrete operation for every decided signal/action/draft: marksignalapproved, exportactionplan, or handoffcontentpack for an approve verdict; queueagentrevision for requestchanges; markblocked for block; savehumanrevision for a draft's revise.
- After Kelly confirms the dry-run and performs the handoff somewhere
outside this script, run node scripts/executedecisions.mjs --apply to mark the approved items done. requestchanges/block verdicts are left exactly as decided — there is nothing further for the script to do.
Safety Defaults
- Treat outbound messages, regulated claims, medical/financial/legal advice, pricing promises, and publishing as approval-required.
- If source evidence is weak, mark the item
blocked or lower confidence instead of pretending.
- Preserve source language unless the workflow asks for translation.
- Keep every write idempotent by upserting on the item's own id field so re-running a collection pass never duplicates rows.
Useful Commands
node skills/kelly-ai-newsroom/scripts/execute_decisions.mjs
node skills/kelly-ai-newsroom/scripts/execute_decisions.mjs --apply
pnpm --dir skills/kelly-ai-newsroom/content/kelly-ai-newsroom-app dev