Add content-metrics skill: tie DevRel content to product activation - #2
Open
buildwithtalia wants to merge 1 commit into
Open
Add content-metrics skill: tie DevRel content to product activation#2buildwithtalia wants to merge 1 commit into
buildwithtalia wants to merge 1 commit into
Conversation
Builds a Content -> Product funnel that ranks blog posts and YouTube videos on the same axes and joins them to Postman signups / Day-7 / Day-30 return via Looker. Replaces raw "we shipped 40 things" reporting with an impact_score that dominates on activation and adoption; when the product-side data source isn't configured, scores collapse to resonance and the digest says "attribution pending" instead of misreporting zero. New: - docs/content-funnel.md: 7-stage funnel model, resonance metrics by content type (blogs and videos on parallel axes), YouTube data-source situation (Data API today, Analytics API + channel access needed for the rest), product-attribution architecture, honesty caveats, cadence. - skills/content-metrics/SKILL.md: human-triggered skill that parses a window (default 30 days or a phrase like "last week"), pulls the data, has Claude draft a Content -> Product commentary, and posts a Block Kit digest to Slack. - skills/content-metrics/references/pull-metrics.py: WordPress + YouTube Data API pull, Looker adapter for product attribution (with column- name overrides), stubs for GA4/Amplitude/warehouse/postman-admin, score computation, CSV I/O, Slack digest with product-outcome header. Config: - .gitignore: exclude /content-metrics/ runtime CSVs; anchor to root so skills/content-metrics/ still tracks. - README.md: skill listed alongside the others. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/devrel-skills:content-metricsskill that pulls blog posts from blog.postman.com and videos from youtube.com/postman over a configurable window (default 30 days), joins per-content Postman product attribution via Looker, has Claude draft a factual Content → Product commentary, and posts a Block Kit digest to Slack.docs/content-funnel.mddesign doc: 7-stage funnel, resonance metrics with blogs and videos on parallel axes, YouTube data-source situation, product-attribution architecture with the Looker adapter as the implemented reference,impact_score = resonance + activation + adoptionmodel, honesty caveats and volume-trap red flags.attribution pendinginstead of a misleading zero.What's implemented today
status=publishpost in the window.UCocudCGVb3MmhWQ1aoIgUQw: views, likes, comments per video.PRODUCT_ANALYTICS_SOURCE=looker. Authenticates via API v4 (client_id / client_secret), runs a saved Look, remaps rows to{content_id: {signups, first_run, day7_return, day30_return}}. Column names configurable viaLOOKER_*_COLenv vars; adapter prints available columns if defaults don't match.Content → Product — YYYY-Www), context (window + ship count), product-outcome headline, Claude's commentary, top-10-by-views table, footer with pending-instrumentation reminder.resonance_score,activation_score,adoption_score,impact_scorewritten to CSV.What's stubbed (adapter interfaces reserved, not implemented)
PRODUCT_ANALYTICS_SOURCE=ga4|amplitude|warehouse|postman-admin— dispatch is wired, adapters raiseNotImplementedError. Implement in_fetch_*_attribution()when a data source becomes accessible.YT_OAUTH_CLIENT_ID,YT_OAUTH_CLIENT_SECRET,YT_OAUTH_REFRESH_TOKEN). Adapter TBD.Files
docs/content-funnel.md(new, 319 lines)skills/content-metrics/SKILL.md(new, 201 lines)skills/content-metrics/references/pull-metrics.py(new, 808 lines).gitignore— anchor/content-metrics/to repo root so skill dir isn't accidentally ignoredREADME.md— one-row addition in the Other Skills tableTest plan
WP_USERNAME/WP_APP_PASSWORDto~/.claude/settings.json(already required by other skills)python3 skills/content-metrics/references/pull-metrics.py --days 30and confirm blog rows land incontent-metrics/YYYY-Www.csvYT_API_KEY(with YouTube Data API v3 enabled) and confirm YouTube rows land in the same CSVPRODUCT_ANALYTICS_SOURCE=looker+LOOKER_CLIENT_ID+LOOKER_CLIENT_SECRET+LOOKER_LOOK_ID) and confirmattributed_*columns populateSLACK_WEBHOOK_URLfor the DevRel team channel and confirm the Content → Product digest lands correctly/devrel-skills:content-metricsend-to-end and confirm Claude's commentary matches the CSV contentsGenerated with Claude Code