Social intake and OpenProfile.md per person - #72
Merged
Merged
Conversation
…or each POST /api/v1/people/from-social opens a person from a network handle (the accounts myna follows, or their followers), puts them in a campaign, keeps the bio as a content_topic signal so a card can trigger, and queues one `openprofile` job per person. The job reads the network's public profile (Bluesky AppView, Mastodon lookup, or the page's OpenGraph card), follows the home page it names for its card and rel=me links, and looks for a published /.well-known/openprofile.md. A rel=me back to the profile is two sources agreeing: the person goes to 0.9 and the site's accounts become identities, a mailto among them included. Otherwise 0.5, and the links are only links. The Markdown follows logicsrc.com/openprofile and is served at GET /api/v1/people/:id/openprofile.md as text/markdown, workspace-scoped. `og add-social` and `og openprofile` on the CLI; `add_people_from_social` and `get_openprofile` on the MCP server. Migration 0035 adds `openprofiles`. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S7yeJUHGxA4P5N74xnsRPQ
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.
What
POST /api/v1/people/from-social: open people from a network handle (what myna follows, or their followers). Each lands in a campaign, the bio becomes acontent_topic/social_biosignal, and anopenprofilejob is queued per person. Idempotent on (network, handle).openprofilejob: reads the profile (Bluesky public AppView, Mastodon lookup, else OpenGraph on the page), then the home page it names (OpenGraph card,rel=melinks,/.well-known/openprofile.md). Arel=meback to the profile raises the person to 0.9 and records the site's accounts as identities,mailto:included; otherwise 0.5 and links stay links. Builds the Markdown per https://logicsrc.com/openprofile, stores it inopenprofiles, then re-decides the person throughregenerateForso a card can appear.GET /api/v1/people/:id/openprofile.mdserves it astext/markdown(withLink: rel=canonicalwhen the person publishes their own).GET /people/:idcarries anopenprofilesummary.og add-social bluesky:ada.example https://hachyderm.io/@ada,og openprofile <personId>. MCP:add_people_from_social,get_openprofile.0035_openprofiles.sql.Why
myna is gaining an
afterFollowhook and a--outreachgraphflag (mynaposter PR to follow) so every account it follows can be queued here for assessment. Until now a person could only enter from a GitHub handle, a company URL or a CSV.Tests
bun test: 1,491 pass across 102 files, including 19 new (providers builder and readers, pipeline intake and job with stubbed HTTP, API routes).tscandprettier --checkclean.Not verified live: the worker running the job against real Bluesky and Mastodon endpoints. Both readers use the same public endpoints the existing providers already call.
🤖 Generated with Claude Code
https://claude.ai/code/session_01S7yeJUHGxA4P5N74xnsRPQ