Skip to content

feat: installer-first get-started funnel plus dev.to crosspost and weekly metrics scripts - #140

Merged
abrichr merged 1 commit into
mainfrom
growth/docs-funnel
Aug 22, 2026
Merged

feat: installer-first get-started funnel plus dev.to crosspost and weekly metrics scripts#140
abrichr merged 1 commit into
mainfrom
growth/docs-funnel

Conversation

@abrichr

@abrichr abrichr commented Aug 22, 2026

Copy link
Copy Markdown
Member

Summary

Growth-launch "ops-docs" lane for docs.openadapt.ai.

1. Get-started funnel rewrite (docs/get-started/index.md, docs/get-started/first-workflow.md)

  • Primary install path is now the uv installer pair:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    curl -fsSL https://raw.githubusercontent.com/OpenAdaptAI/openadapt-flow/main/scripts/install.sh | sh
  • The pip two-command path (pip install 'openadapt[browser]'openadapt quickstart) sits directly below, labeled "Manual path". Shell-specific quoting tabs are kept on first-workflow under the manual label.
  • Page links early to the hosted demo, template gallery, and blog.
  • Plain definition added at the first use of the word: "Qualification means we test your workflow against real failures before it runs."
  • Filenames unchanged, so mkdocs.yml nav is untouched. docs/llms.txt (hand-maintained surface; no generator found in-repo) updated to track the new get-started descriptions.

2. scripts/crosspost_devto.py — reads the blog RSS (verified from blog Hugo config: https://blog.openadapt.ai/index.xml; /feed.xml is not served) and creates dev.to articles via POST /api/articles with canonical_url set to the original post URL. Dry-run ON by default; idempotent by checking existing canonical URLs via GET /api/articles/me/all; API key only from DEVTO_API_KEY; stdlib + httpx only.

3. scripts/metrics_weekly.py — writes deterministic reports/growth-metrics-YYYY-WW.md: GitHub stars/forks (OpenAdapt, openadapt-flow, openadapt-capture), HN Algolia hits with summed points/comments, pypistats 7-day downloads (openadapt, openadapt-flow), blog post count from sitemap. reports/ gitignored. Documented in new scripts/README.md with a suggested weekly cron line; no cron workflow shipped.

4. llms.txt — updated per existing hand-maintenance pattern (item 4 above).

Dependency flag (needs sequencing)

The prescribed raw.githubusercontent install URL 404s until OpenAdaptAI/openadapt-flow PR #387 (growth/installer-first branch adds scripts/install.sh) lands on main. This PR should merge after that one, or the docs quickstart breaks. Not merged here.

Verification

  • uv run pytest tests/ -q238 passed (15 new: fixture-feed dry-run offline-safe, idempotency planning, pagination, apply-path with mocked HTTP; metrics report rendering determinism + mocked-HTTP collection, zero network in tests)
  • uv run mkdocs build --strict → passes
  • uv run python scripts/validate_docs.py → Validation passed! (product-doc contract intact)
  • python scripts/crosspost_devto.py --dry-run-equivalent against tests/fixtures/sample_feed.xml runs fully offline
  • metrics_weekly.py --help works; live read-only run produced a correct W34 table
  • ruff check on all changed Python files → clean

Notes / minor deviations

  • Added httpx>=0.27 to the dev extra (task specifies stdlib+httpx); uv.lock diff is otherwise format-only metadata churn (lock revision 3 upload-time fields) — no package versions changed.
  • Removed first-workflow's pointer to the older https://openadapt.ai/install.sh one-liner since it competes with the canonical two-command path (the hosted script itself remains served for the landing page).

…ekly metrics scripts

Reorder the get-started funnel so the uv installer script is the primary
install path (astral uv bootstrap followed by the openadapt-flow
scripts/install.sh onboarding), keep the pip two-command path directly below
as the labeled manual path, link early to the hosted demo, template gallery,
and blog, and define qualification in plain language at its first use. The
pip tabs on first-workflow stay for shell-specific quoting guidance; page
filenames are unchanged so nav needs no edits, and docs/llms.txt descriptions
track the new content.

Add scripts/crosspost_devto.py (dry-run by default; posts blog RSS entries to
dev.to with canonical_url set to the original post; idempotent via the
authenticated article list; key only from DEVTO_API_KEY) and
scripts/metrics_weekly.py (deterministic growth-metrics-YYYY-WW.md into
gitignored reports/: GitHub stars/forks, HN Algolia points/comments, pypistats
7-day downloads, blog sitemap post count). Document both under scripts/README.md
with a suggested weekly cron line instead of shipping a cron workflow.

Note: the raw.githubusercontent.com install.sh URL requires OpenAdaptAI/
openadapt-flow PR #387 (growth/installer-first) to land on main first.

Signed-off-by: abrichr <richard.abrich@mldsai.com>
@abrichr
abrichr merged commit 0f6f0f5 into main Aug 22, 2026
5 checks passed
@abrichr
abrichr deleted the growth/docs-funnel branch August 22, 2026 22:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant