SoyaOS

Research WeChat article Skills and deliver an HTML report

Use SoyaOS Cloud, live GitHub search, and deterministic quality gates to create a traceable single-file Skill comparison report.

This is a real, runnable SoyaOS Cloud recipe. It finds multiple WeChat Official Account article Skills from live web results, compares their trade-offs, recommends one, and delivers a single HTML file that passes content, structure, design, and security checks.

The requirement

The original request is polished for flow without changing its scope:

Search the web for Skills that can help create WeChat Official Account articles. Provide several genuinely available candidates and compare their strengths, weaknesses, and best-fit scenarios. Recommend one, explain why, and state the trade-offs. Deliver the complete result as one modern, attractive, clearly structured HTML file. Before finishing, verify that the file opens correctly and that its content, structure, and design meet expectations; fix any issue before delivery.

Why this is not one Chat request

Cloud v0.2.0 exposes soya:starter as a hosted text Agent. It does not provide a browser, shell, or Tool Calls. A model claiming that it searched the web—or freely emitting a large, unchecked block of HTML—would not be a real example.

The Recipe separates responsibilities:

  1. A local Node.js program searches repositories through the public GitHub API.
  2. It retrieves candidate SKILL.md files and records source URLs, repository update times, and search time.
  3. SoyaOS Cloud compares only the allowlisted sources and returns constrained JSON.
  4. A versioned template renders the JSON; model text cannot inject tags, scripts, or styles.
  5. The program writes the final file only after all four machine gates pass.

This is client-side Recipe orchestration with Cloud inference, not native Cloud Tool Calls.

Prerequisites

  • Node.js 22 or newer.
  • Sign in by following the Cloud quickstart.
  • Create an API key and save it immediately in a password manager. Treat the key as an opaque string; clients do not need to understand its format.

Get the source:

git clone https://github.com/soyaos/cloud-recipes.git
cd cloud-recipes

Run the Recipe

Set the key only in the current shell. Never put it in source control:

export SOYA_API_KEY='your-soyaos-api-key'
npm run run:wechat-skill-research

The default output is output/wechat-skill-research.html.

The public GitHub API normally works without authentication. If you receive github_rate_limited, retry after the reset or temporarily provide a least-privilege GITHUB_TOKEN:

export GITHUB_TOKEN='your-github-token'
npm run run:wechat-skill-research

To intentionally replace an existing output file:

node recipes/wechat-skill-research/run.mjs --force

Prove that it succeeded

A successful result reports at least three candidates, one or more SoyaOS Cloud requestIds that you can inspect in Portal Traces, and all four qualityGates: content, structure, design, and security.

GateWhat it checks
ContentCandidate count, pros and cons, one recommendation, allowlisted sources, and live search time
StructureDoctype, language, viewport, one main region, heading hierarchy, required sections, and a closed document
DesignEmbedded design tokens, candidate cards, recommendation emphasis, responsive layout, focus styles, and print layout
SecurityNo scripts, iframes, forms, event handlers, external CSS/JS/fonts/images, or key leakage

If any gate fails, the Recipe exits unsuccessfully instead of delivering a file that merely looks plausible.

Why results can change

Candidates come from live GitHub search. Repository contents, update times, and ranking change. The Recipe guarantees a traceable process and quality contract, not a frozen candidate list. Each report retains the sources observed during that run.

Privacy and quota

  • GitHub receives the search queries and public repository requests.
  • Candidate excerpts and your requirement are sent to the SoyaOS Cloud hosted model; the Recipe does not ask the service to persist the bodies.
  • The local HTML contains the analysis and public repository links. Review custom prompts for sensitive information before sharing it.
  • A normal run uses one Cloud request. Malformed model JSON may trigger at most one repair request.

Troubleshooting

  • missing_api_key: SOYA_API_KEY is not set in the current shell.
  • cloud_http_error ... invalid_api_key: the key is invalid or revoked; create a new one in the Portal.
  • github_rate_limited: wait for reset or temporarily set GITHUB_TOKEN.
  • insufficient_live_candidates: fewer than three live candidates qualified; do not substitute fixtures for a successful run.
  • html_quality_failed: fix the named gate before running again.

Source and tests: soyaos/cloud-recipes

Edit this page on GitHub