This repository stores reusable launch playbooks, course messaging, outreach lists, copy banks, proof libraries, and social post research for DataTalks.Club courses.
Use it when preparing a new live cohort, refreshing course pages, writing newsletter, Slack, Telegram, YouTube, website, or GitHub copy, planning a launch campaign, or mining previous social posts for reusable patterns.
For a new cohort:
- Create or open a folder under
campaigns/, for examplecampaigns/ai-dev-tools-zoomcamp-2026/. - Copy the root process templates into
campaigns/<course>-<year>/processes/if they are not already there. - Fill
00-cohort-brief.mdwith the course, dates, registration target, campaign intensity, channels, events, and owners. - Use
01-launch-checklist.mdto track asset updates, events, promotion tasks, and outreach. - Use
02-course-launch-social-system.mdto choose campaign phases, post types, cadence, CTAs, and channel adaptations. - Fill
02-campaign-calendar.csvwith the planned announcement schedule. Replace placeholders such as{{ course_name }},{{ course_topic }}, and registration links with cohort-specific values. - Adapt the relevant course folder's
course.yaml,copy-bank/, andproof-library/assets into the campaign folder when the campaign needs cohort-specific versions. - Use
typefully/when you need examples of past course-promotion posts or a taxonomy for social post ideas. - After the cohort, complete
03-retrospective.mdso next year's launch has numbers, reusable proof, and lessons learned.
| Path | Purpose |
|---|---|
00-cohort-brief.md |
Planning template for cohort basics, registration gap, channel decisions, event decisions, owners, and approval. |
01-launch-checklist.md |
Execution checklist for asset updates, events, promotion, and outreach. |
02-course-launch-social-system.md |
Main social launch system: campaign phases, post types, cadence, channel adaptation, metrics, and reusable strategy. |
02-campaign-calendar.csv |
Campaign calendar skeleton with relative timing, phase, platform, post type, CTA, needed assets, and status. |
03-retrospective.md |
Post-cohort retrospective template for final numbers, best channels, best posts, repeated questions, and next-year improvements. |
influencer-list.csv |
Outreach list for practitioners, influencers, communities, and potential amplifiers. |
podcast-list.csv |
Podcast and guest-appearance outreach list. |
scripts/download_typefully_posts.py |
Typefully exporter for collecting and filtering course-related social posts. |
typefully/ |
Curated Typefully examples, export manifest, and social post taxonomy. |
campaigns/ |
Cohort-specific campaign workspaces copied from reusable playbooks and course assets. |
skills/ |
Local Codex skills and scripts used for social content, carousels, transcript mining, and video clipping workflows. |
*-zoomcamp/ |
Course-specific metadata, copy banks, proof libraries, and optional course assets. |
Each course folder keeps durable course facts and reusable launch assets close together.
Current course folders:
ai-dev-tools-zoomcamp/de-zoomcamp/llm-zoomcamp/ml-zoomcamp/mlops-zoomcamp/
Common structure:
| Path | Purpose |
|---|---|
course.yaml |
Structured source of truth for course metadata: URLs, cadence, delivery, prerequisites, audience, topics, tools, certificate rules, CTAs, and logistics. |
copy-bank/faq.md |
Reusable FAQ copy and objection-handling snippets. |
copy-bank/email/ |
Email copy and reusable newsletter/module-email templates. |
copy-bank/events/ |
Event descriptions such as course launch sessions and pre-course live Q&A sessions. |
copy-bank/website/ |
Website banner, landing page, and page-copy blocks where available. |
copy-bank/github/ |
GitHub README update blocks where available. |
copy-bank/youtube/ |
YouTube descriptions and pinned comment blocks where available. |
copy-bank/telegram/ |
Telegram pinned posts and module announcement templates. |
copy-bank/slack/ |
Slack-specific support nudges, discussion prompts, and moderator replies where available. |
copy-bank/social-media/ |
Reserved for course-specific social examples, exports, or drafts. |
course-assets/ |
Reserved for course-specific assets that support copy, pages, or campaigns. |
proof-library/testimonials.md |
Learner quotes and testimonials. |
proof-library/previous-cohorts-stats.md |
Registration, completion, certificate, GitHub, or cohort metrics. |
proof-library/student-projects.md |
Student project examples and portfolio proof. |
ai-dev-tools-zoomcamp/ is currently the most complete folder. In addition to the shared structure, it has:
positioning.md: positioning, audience fit, differentiation, claims to use, and claims to avoid.audience.md: learner segments and messaging angles.curriculum-and-outcomes.md: curriculum framing and learner outcomes.faq-and-objections.md: common objections and answer angles.copy-bank/README.md: channel map and positioning guardrails.- Fully drafted email, Telegram, and Slack support sequences.
- Owned-channel blocks for website banners, landing pages, GitHub README updates, and YouTube descriptions or pinned comments.
Use ai-dev-tools-zoomcamp/ as the reference implementation when deepening the copy banks for the other courses.
campaigns/ stores campaign-specific copies of reusable assets. Use it for work tied to a particular course cohort, year, registration target, and launch calendar.
Current campaign workspace:
campaigns/ai-dev-tools-zoomcamp-2026/
Typical structure:
| Path | Purpose |
|---|---|
campaigns/<course>-<year>/course.yaml |
Cohort-specific course metadata and links. |
campaigns/<course>-<year>/positioning.md |
Campaign-specific positioning, claims, and exclusions. |
campaigns/<course>-<year>/audience.md |
Audience segments and messaging angles for this cohort. |
campaigns/<course>-<year>/curriculum-and-outcomes.md |
Curriculum and outcome framing for campaign copy. |
campaigns/<course>-<year>/faq-and-objections.md |
Cohort-specific FAQ and objection handling. |
campaigns/<course>-<year>/processes/ |
Cohort brief, checklist, campaign calendar, social system, and retrospective. |
campaigns/<course>-<year>/copy-bank/ |
Cohort-specific channel copy. |
campaigns/<course>-<year>/proof-library/ |
Metrics, testimonials, and project proof used by this campaign. |
Keep reusable assets in the course folder. Put cohort-specific edits, dates, URLs, and final campaign decisions in campaigns/.
Start from campaigns/<course>-<year>/processes/00-cohort-brief.md. If the campaign folder does not exist yet, create it from the root process templates and the relevant course folder.
The most important decision is whether this is a normal launch or an extra-push launch. Extra-push launches add channels such as alumni outreach, influencer outreach, partner posts, external newsletters, communities, podcasts, short clips, SEO, or paid distribution.
Once the brief is complete, use 01-launch-checklist.md to track execution. The checklist intentionally separates asset updates, events, promotion, and outreach so owners can work in parallel.
Use 02-course-launch-social-system.md first to pick the launch shape. Then fill 02-campaign-calendar.csv in the campaign's processes/ folder.
The calendar columns are:
Date,Relative week,Relative date: timing.Phase: campaign phase such as foundation, awareness, consideration, launch, or urgency.Platform: channel or channel group.Post type: reusable social pattern.Typefully examples: example IDs from the Typefully research.Working title / angle: draft idea.Audience,Primary CTA,Assets needed: targeting and inputs.Why this belongs in this phase: strategy note.Status: planning state.
Keep the calendar as the coordination artifact. Drafts can live elsewhere, but every planned campaign item should have a row.
Use course.yaml as the structured source of truth before editing prose. Pull durable facts from it: URLs, start dates, duration, prerequisites, tools, module names, certificate rules, submission platform, Slack/Telegram links, and CTAs.
If a campaign has its own campaigns/<course>-<year>/course.yaml, use that for cohort-specific dates and URLs. Use the reusable course folder for durable copy patterns.
Use copy-bank/ for reusable copy:
- Put event descriptions in
copy-bank/events/. - Put newsletter and module email copy in
copy-bank/email/. - Put Telegram announcements in
copy-bank/telegram/. - Put Slack support prompts in
copy-bank/slack/. - Put website and landing page blocks in
copy-bank/website/. - Put GitHub README snippets in
copy-bank/github/. - Put YouTube descriptions and pinned comments in
copy-bank/youtube/. - Put course FAQ and objection-handling copy in
copy-bank/faq.md.
Use placeholders such as {{ cohort_year }}, {{ registration_url }}, {{ module_number }}, and {{ module_title }} for values that change by cohort.
Use proof-library/ before making performance claims. Proof should come from:
previous-cohorts-stats.mdfor numbers.testimonials.mdfor learner quotes.student-projects.mdfor concrete learner output.
Prefer grounded claims over hype. If a claim needs a number or example, put the source in the proof library first.
After the cohort, fill in the campaign's 03-retrospective.md with final numbers, best-performing channels, best posts, best proof assets, repeated learner questions, and changes for next year. This is the input for the next launch brief.
The typefully/ folder stores Alexey social post research for posts that mention terms such as zoomcamp or free course.
Important files:
| Path | Purpose |
|---|---|
typefully/README.md |
Detailed export instructions. |
typefully/manifest.json |
Latest export summary and file pointers. |
typefully/typefully-examples.json |
Curated normalized examples from the export. |
typefully/typefully-examples.csv |
Spreadsheet-friendly version of the examples. |
typefully/typefully-examples.md |
Human-readable post digest. |
typefully/post-type-taxonomy.md |
Human-readable taxonomy for reusable course social post types. |
typefully/post-type-taxonomy.json |
Machine-readable taxonomy. |
typefully/post-type-taxonomy-analysis.md |
Notes and analysis behind the taxonomy. |
Run the exporter from the repo root. Use --output-dir typefully when refreshing the central research snapshot:
TYPEFULLY_API_KEY=... python3 scripts/download_typefully_posts.py \
--social-set-name-match alexey \
--limit 50 \
--hydrate-details \
--output-dir typefullyThe script can also write to its default course-specific path under ai-dev-tools-zoomcamp/copy-bank/social-media/typefully/. It writes raw API responses, filtered JSON, filtered CSV, filtered Markdown, and an updated manifest.
Do not commit or store Typefully API keys in this repository.
Use influencer-list.csv and podcast-list.csv when the cohort brief selects extra outreach.
Typical workflow:
- Filter for the course topic and audience fit.
- Decide the outreach angle from
course.yaml,positioning.md, or the copy bank. - Track planned outreach separately or add campaign moments to
02-campaign-calendar.csv. - Record reusable outcomes or proof in the relevant course folder.
The skills/ folder contains local Codex skills and helper scripts used by this workspace:
skills/social-content-studio/: structured social post creation and export workflows.skills/alexey-carousel-generator/: social carousel and resource-image rendering workflows.skills/transcript-post-miner/: transcript analysis for post ideas and clip recommendations.skills/video-clip-cutter/: ffmpeg-based clip cutting from timestamp manifests.skills/.system/: system skills copied into this workspace.
These are supporting automation assets, not course copy. Edit them only when updating the automation workflow itself.
- Keep durable course facts in
course.yaml. - Keep reusable launch copy in
copy-bank/. - Keep proof points in
proof-library/. - Keep reusable planning templates in the root playbook files.
- Keep campaign execution in
campaigns/<course>-<year>/. - Use placeholders for cohort-specific values.
- Avoid secrets in the repository, especially API keys.
- Preserve source links for stats, testimonials, and examples whenever possible.
- Prefer concrete learner outcomes, project examples, dates, and logistics over vague promotional language.