When to use
- The user asks "Why did BestBlogs recommend this one?"
- The user wants to see theirinterest profile summary。
- The user wants to knowwhich subscription sources contribute the most to my morning digest, as a basis for deciding whether to keep following them.
- The user wants to know a certain resource'sscore。
Primitives
| Primitive | CLI | Description |
|---|---|---|
bestblogs.interest_profile.get |
bestblogs explain profile --json |
Profile summary |
bestblogs.source.contribution.list |
bestblogs explain sources --days 7 --json |
Contribution of followed sources to the morning digest over the last N days |
bestblogs.resource.score.get |
bestblogs explain score <id> --json |
Resource score |
Related fields (inlined in discovery-type responses)
Note: Each candidate in discovery-type interfaces already has inlined candidateSource / selectionReason / fallbackApplied / personalized. To explain "why this one was recommended", first look at these fields—you don't necessarily need to call the explanation interface separately. Only go through the explain primitive when you need more depth (profile dimensions / source level / scoring dimensions).
Actions
Profile summary
bestblogs explain profile --json
Fields of interest:
onboardingCompletedlanguagePreferencedriftDetected— drift detection (when true, it is recommended to remind the user to reset their interests)explicitInterests[]— tags actively chosen by the userimplicitInterests[]— behavior inferencerecentActiveTopics[]— active topics in the last 7 days
Source contribution
bestblogs explain sources --days 7 --json
Returns a source list sorted by count in descending order:
{
"success": true,
"data": {
"days": 7,
"contributions": [
{ "sourceId": "SRC_xxx", "sourceName": "阮一峰的网络日志", "count": 4 },
...
]
}
}
Resource score
bestblogs explain score RAW_xxx --json
Returns including score / resourceType / language / qualified / sourceName。
Error handling
401→ not logged in (profileandsourcesrequire login;scorecan be anonymous for public resources)- Empty list (contribution is 0) → tell the user "no sources were recommended in the last N days", and suggest adjusting
--daysor following more high-quality sources
Combination suggestions
- User complains "recommendations have been mediocre lately" → call in sequence
profile(check drift) +sources(see which sources are dragging it down) + suggest the user go tobestblogs-subscriptionto unfollow sources with low contribution (this skill is not available in this period; prompt the user to do it on the website) - When the Agent outputs candidates to the user: display
candidateSource + selectionReasonwhen the user asks "why does this one score high"explain score