跳到正文
cccskills
免费在 GitHub 公开

render-apple-notes-chat

Assemble an Apple Notes list video ad from a note + end-card JSON — a frame-accurate fake iPhone screen recording of a short list being typed into Apple Notes (character by character, key pops, blinking caret, the note scrolling up as it fills) crossfaded into a checklist end card (the note's picks as ticked rows, real product photos, logo, CTA, in the brand's colours and fonts), with an optional music bed. FREE assembly (Playwright + ffmpeg); the recipe supplies the per-brand note + end card and gates the paid music call to its own capability. The Apple Notes sibling of render-imessage-chat and render-chatgpt-chat. Use for the apple-notes format.

中文简介正在准备中。当前显示原文说明。

集成工具Playwright
查看安装方法

包含的文件(13)

  • SKILL.md6.8 KB
  • scripts/config.example.json1.5 KB
  • scripts/end-card.template.html6.2 KB
  • scripts/mockup/generate.js7.8 KB
  • scripts/mockup/templates/icons.js6.4 KB
  • scripts/mockup/templates/note.css8.4 KB
  • scripts/package-lock.json1.1 KB
  • scripts/package.json331 B
  • scripts/record-notes.js12.2 KB
  • scripts/render-end-card.js4.1 KB
  • scripts/stitch.sh2.3 KB
  • skill.meta.json345 B
  • tests/smoke-test.md1.5 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Superseded: the video kit now does this with the phone-chat part, version 1.2.0, in the parts folder of this repository. Every phone-chat style is a style file that draws the same screen frame by frame from the plan's scenes, with the original sounds, in the kit's browser. This atom stays, unchanged in behaviour, for skills outside the kit until they move; its scripts still run.

render-apple-notes-chat

The free renderer for the apple-notes video ad format: someone types a short, honest list into Apple Notes ("my chai cheat sheet", "chai for every mood") and every line points to a real product. It ends on a checklist end card with the products and the CTA. Deterministic Playwright + ffmpeg; no generative video of the UI, so every typed character stays pixel-crisp.

Siblings: render-imessage-chat (a peer's reply is the punchline) and render-chatgpt-chat (an AI answer is the punchline). Reach for this one when the creative is a list someone keeps for themselves.

Choices

The recipe asks these before any paid step; this renderer only draws what the config says.

  • list_angle — what the list is (a "which one should I get" cheat sheet, one pick per personality, one per mood or moment, a routine, a gift guide). Sets note.title, note.lines and end_card.head1/head2.
  • voice — how the writer types (lowercase and casual, tidy, deadpan). Sets the wording and capitalisation of note.lines.
  • clock — the time on the status bar (a 2 AM list reads differently from a 9 AM one). Sets note.status_bar.time.
  • music — the bed passed to stitch.sh --music, or none (silent).

Brand facts (logo, colours, fonts, product photos, CTA, claims) come from the brand kit.

What it renders

  1. The note (record-notes.js) — one PNG per visual state, each held for its own duration, concatenated into a 1080×1920 30fps MP4:
    • the note opens on its title with a blinking caret and the keyboard up;
    • each line types character by character at type_seconds, with a key pop on every letter, a darker space/return key, and a human rhythm (slower after spaces and punctuation);
    • between lines: return key, then pre_pause_seconds of blinking "thinking";
    • the note eases up so the caret never goes under the keyboard;
    • after post_hold_seconds the writer taps Done: the keyboard drops, the note settles back to the top and the whole list holds for finish_hold_seconds (default 2). With the keyboard up there is room for the title and about three lines, so without this the title and first lines have scrolled away by the end and the viewer never sees the list in one piece. finish_hold_seconds: 0 keeps the old ending.
  2. The end card (render-end-card.js) — a paper card slides and tilts in over the brand colour; the heading has a hand-drawn underline; each row's check draws in turn. Real product cut-outs sit above the rows; the logo (or a wordmark) and CTA pill sit below.
  3. The master (stitch.sh) — ~0.3 s crossfade into the end card, music faded in and out and normalised to −14 LUFS (peaks ≤ −1.5 dBFS). No music → silent master.

Run

cd scripts && npm install            # once — installs Playwright
npx playwright install chromium      # once
node record-notes.js    --config config.json --out-dir <work> --still-only   # free review stills
node record-notes.js    --config config.json --out-dir <work>                # → notes.mp4
node render-end-card.js --config config.json --out-dir <work>                # → endcard.png + endcard.mp4
bash stitch.sh --notes <work>/notes.mp4 --end <work>/endcard.mp4 \
     --out <work>/master.mp4 [--music <work>/music-bed.mp3]

--still-only writes note-hook.png (the opening frame), note-still.png (the last typed frame) and note-finish.png (the whole list after Done) for the review, without recording the video.

Config

See scripts/config.example.json. Two blocks:

BlockFields
notetitle, lines[] (text, type_seconds, pre_pause_seconds), post_hold_seconds, finish_hold_seconds, status_bar (time, battery_pct), keyboard_state
end_cardhead1, head2, underline (a word in head2), rows[] (label, value; max 4), products[] (src, h = height %, wide), logo (file) or wordmark, cta, fine_print, theme (bg, bg2, paper, ink, accent, label), fonts (heading, label — Google Fonts family names), seconds

Image paths are resolved relative to the config file. Pacing that reads well: ~1.6–2.8 s per line (about 18 characters a second), 1.0 s before the first line, 0.55 s between lines, 0.9 s before the last line.

Contract

  • FREE: Playwright frame capture + ffmpeg. No model draws text: the note, the end-card copy and the logo are real HTML and real files.
  • record-notes.js refuses a line with an em or en dash (people don't type them in Notes) or over 80 characters.
  • render-end-card.js refuses an end card with no rows or no logo/wordmark, and fails if the chosen fonts don't load.
  • The Apple Notes chat body is the bundled create-apple-notes-mockup generator (scripts/mockup/), so this runs standalone with no sibling fetch.
  • Requires ffmpeg/ffprobe on PATH, Node 18+, and Playwright Chromium.

Gaps

  • The phone UI uses the system font stack (-apple-system, SF Pro). It's exact on macOS; on Linux/Windows it falls back to the nearest sans.
  • No typing sound effects: Notes is silent, and the chai test ads shipped with music only.
  • Product photos must be clean cut-outs (transparent PNG). The recipe decides what to do when a product has none; this renderer only places what it's given.

Self-QC (always /watch the master)

  • The caret never sits under the keyboard; the note scrolls smoothly, never jumps.
  • Every line is fully typed before the next return; no text is cut off.
  • The end card: every check draws, nothing overlaps the logo or CTA, fonts are the brand's (not a fallback), the pad under the card matches theme.bg.
  • Audio (if any) fades in and out; no clipping.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Research supported advertising promises from a specific buyer's context, current product facts, customer language and observed ads. Turn them into static, video or copy ideas; match video ideas to actual recipes and save a product-scoped angle bank for write-video-ad-script. Product-led discovery can use verified facts without reviews. Reference persistence and reach are observations, not proof of performance.

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12632026年10月22日 更新

Analyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling.

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12632026年10月22日 更新

For paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12632026年10月22日 更新

The intake stage of a Meta ad harness. Researches the brand first, states what it assumes, and asks only what it cannot infer and what would change money, claims or legal exposure if guessed wrong — at most four questions a turn, in plain business language. Writes the brand's stable facts (ads/brand.md), the campaign brief, and a log of what was asked vs assumed. Use it when someone wants to run Meta ads and the brand's ad facts are not yet recorded.

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12632026年10月22日 更新

Checks paid ads against the ad platform's rules (Meta, TikTok, Google, LinkedIn and others) and the brand's category rules: the copy, on-image or on-screen text, pictures and people. Rewrites what can be fixed honestly, adds the disclosures that are needed, and flags anything that needs a human or legal review, with one pass, fixed or flag line per ad and platform. Use alone when you already have the ad text or images and know where they will run; otherwise run the playbook for the job (e.g. make-static-ads, make-content, email-lifecycle).

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12632026年10月22日 更新

Analyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12632026年10月22日 更新

查看 gooseworks-ai 的全部技能

报告此技能的问题