plans
Plan — Folder profiles and social links (slice 1)
A Tooling note gets its GitHub org, LinkedIn page, and other socials from the company's own homepage. No API key needed.
Plan — Folder profiles and social links (slice 1)
Why Care?
Of ~1,200 Tooling notes with a URL, nine have a LinkedIn URL and seven an X URL. Probing 80 of their homepages found X on 73% and LinkedIn on 63%. The data is on the page; nobody has had time to copy it over.
Scope
Social-link extractor (
src/services/socialLinks.ts, pure, tested). Platforms: GitHub org, GitHub repo, LinkedIn company, X, YouTube, Discord, Instagram, Facebook, Bluesky, Crunchbase. Each has a match rule, a denylist (share buttons, GitHub's own pages), and a canonical form.Ranking that refuses to guess. In order: JSON-LD
sameAs, then footer links, then header/nav links, then a handle that resembles the domain or site name. A link found only in the body, unrelated to the brand, is never chosen. When the top two distinct candidates score the same, write neither and report both.Profiles (
src/services/frontmatterProfiles.ts). Files inzz-cf-lib/frontmatter/(configurable) withapplies-to-pathsglobs and onemetafetch-profilefence. Each field has eitherplatform:(a social classifier) orpage:(one of the direct-fetch values: title, description, image, favicon, site_name, type, authors, published), plus optionalaliases.Command: "Fill frontmatter from folder profile." Resolves the most specific matching profile (asking only on a tie), fetches the note's
url, and also fetches the site root when socials are wanted and the URL is a deeper page. Fills only empty fields and never blanks one. Reports what was filled, what was ambiguous, and what wasn't found.Command: "Create example frontmatter profile." Writes a Tooling socials profile into the profiles folder if it isn't there. Nothing is created automatically.
Provisional decisions (exploration questions 1–3)
The parser lives in Metafetch, copied (globs from Perplexed), per the family rule.
Aliases are read-through. If
github_profle_urlhas a value,github_profile_urlcounts as filled and is skipped. Nothing is renamed. Renaming can come later as its own explicit command.No provenance property in this slice. The notice and console report say what came from where.
github_urlis never read or written (the operator is sorting those by hand).
Out of scope
Recipes, secrets, Firecrawl/Tavily, models, batch over a folder. A profile field whose only sources are non-direct is skipped and reported.
Verification
Unit tests per platform and ranking case; a command test end to end against stubbed pages; a re-probe of the 80 Tooling homepages comparing chosen links with the raw probe.