{"id":"9cd046de-844a-49c0-bbc8-31bf79cbcd59","shortId":"zpQvNz","kind":"skill","title":"sn-infographic","tagline":"Generates professional infographics with various layout types and visual styles.\nAnalyzes content, recommends layout and style, and generates publication-ready infographics.\nUse when user asks to create \"infographic\", \"信息图\", \"visual summary\", or \"可视化\".","description":"# sn-infographic\n\nInfo graphic generation scene skill (tier 1), relying on the `sn-image-generate`, `sn-image-recognize`, and `sn-text-optimize` tools provided by `sn-image-base` (tier 0).\n\nFeatures:\n\n- Evaluation of prompt quality (auto mode)\n- Prompt expansion (force/auto mode)\n- Multiple rounds of image generation and VLM review\n- Output the best result based on quality ranking\n\n## Input Specification\n\n| Parameter | Type | Default Value | Description |\n|-----------|------|---------------|-------------|\n| `user_prompt` | string | **Required** | User original request |\n| `max_rounds` | int | `1` | Maximum number of generation rounds |\n| `output_mode` | string | `friendly` | Output mode: friendly / verbose |\n| `prompts_expand_mode` | string | `auto` | expand strategy: auto / force / disable |\n\n## API Configuration\n\nAll API calls in this skill are executed through the `sn_agent_runner.py` of the `sn-image-base` skill, with authentication parameters using default values (CLI > environment variables > built-in defaults),无需显式传入。\n\n| Call Type | Tool | Authentication Parameters | Description |\n|-----------|------|---------------------------|-------------|\n| **LLM** | sn-text-optimize (evaluation/expansion) | Default reads `SN_TEXT_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | Built-in default points to Sensenova internal network service |\n| **VLM** | sn-image-recognize (image review) | Default reads `SN_VISION_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | Built-in default points to Sensenova internal network service |\n| **Image Generation** | sn-image-generate | Default reads `SN_IMAGE_GEN_API_KEY` -> `SN_API_KEY`; `SN_IMAGE_GEN_API_KEY` is only needed for image-specific override | Default uses image generation configuration of `sn-image-base` |\n\n**When encountering `MissingApiKeyError` or needing to specify a model**: pass explicitly via CLI parameters, parameter reference `$SN_IMAGE_BASE/references/api_spec.md`.\n\n**`$SN_IMAGE_BASE` path explanation**: `$SN_IMAGE_BASE` is the installation directory of the `sn-image-base` skill (`SKILL.md` exists).\nThe agent can locate this path by skill name `sn-image-base` in the list of installed skills.\n\n## Architecture: Main Agent + Worker Agent\n\nThis skill uses a two-tier agent architecture:\n\n| Role | Responsibility |\n|------|----------------|\n| **Main Agent** | Receive user request, normalize parameters, send preflight, start Worker, collect results, send text and images to user |\n| **Worker Agent** | Execute orchestration loop (expand → multiple rounds of generation + review → sort), return structured JSON |\n\n**Responsibility Boundaries**:\n\n- Worker Agent **does not send any messages to the user directly**, only returns structured JSON\n- Main Agent is responsible for sending all user-visible messages\n- Worker Agent's last message **must be and only be** the JSON string defined in the Return Contract\n- Worker Agent's internal VLM calls **always execute directly**, without spawning subagents\n\n## Workflow\n\n### Main Agent Workflow\n\n1. Extract `user_prompt`, `max_rounds` (default 1), `output_mode` (default `friendly`), and `prompts_expand_mode` (default `auto`) from user request\n2. Send uniform preflight message: `\"Using sn-infographic skill to generate infographic, please wait...\"`\n3. Start Worker Agent (Sub-Agent), passing in complete parameters and working directory\n4. When Worker Agent returns `status=ok` and `need_main_agent_send=true`:\n   - **max_rounds = 1**: Send a one-sentence description of the image content, then send the rank=1 single image\n   - **max_rounds > 1, friendly mode**: Generate a one-sentence natural language description based on `result` and `violations`, send the evaluation text, then send the rank=1 single image\n   - **max_rounds > 1, verbose mode**: Send complete text summary message, then send all images in rank order to the user\n5. If Worker Agent returns `status=error`, report the real `error` field content to the user\n\n### Worker Agent Workflow\n\nWorker Agent receives `user_prompt`, `max_rounds`, `output_mode`, `prompts_expand_mode`, and the working directory of this skill (`SN_IMAGE_INFOG`).\n\n#### Step 0 — Initialization\n\n1. Generate `task_id` (using timestamp, format `YYYYMMDD_HHMMSS`)\n2. Create a uniform temporary directory: `/tmp/openclaw/sn-infographic/<task_id>/` as `TEMP_DIR`\n3. Initialize an empty `rounds` list\n4. Infer `aspect_ratio` (default `16:9`) and `image_size` (default `2k`) from `user_prompt` based on the rules in `$SKILL_DIR/references/runtime-parameters.md`\n\n#### Step 1 — `prompts_expand_mode` Processing\n\n**`disable` mode**:\n\n- Skip expand, directly use `user_prompt` as `expanded_prompt`\n- Assign variable and write to temporary directory:\n\n  ```bash\n  EXPANDED_PROMPT=\"$USER_PROMPT\"\n  echo \"$EXPANDED_PROMPT\" > \"$TEMP_DIR/expanded-prompt.txt\"\n  ```\n\n- Record `prompts_expand_skipped = true`\n\n**`force` mode**:\n\n- Directly execute Step 2\n\n**`auto` mode**:\n\n1. Call sn-text-optimize for evaluation\n2. Parse JSON, extract `required_results` and `optional_results`\n3. Determine logic:\n   - `required_pass`: All `answer` in `required_results` are `\"yes\"`\n   - `optional_pass`: The number of `answer=\"yes\"` in `optional_results` / total ≥ 0.6\n   - `should_expand = not (required_pass and optional_pass)`\n4. If JSON parsing fails, default `should_expand = true` (conservative strategy)\n5. If `should_expand = false`: Skip Step 2, assign variable and write to temporary directory, record `prompts_expand_skipped = true`:\n\n   ```bash\n   EXPANDED_PROMPT=\"$USER_PROMPT\"\n   echo \"$EXPANDED_PROMPT\" > \"$TEMP_DIR/expanded-prompt.txt\"\n   ```\n\n6. If `should_expand = true`: Execute Step 2\n\n**Evaluation Call** (using `sn-image-base`'s `sn-text-optimize` tool):\n\n```bash\npython \"$SN_IMAGE_BASE/scripts/sn_agent_runner.py\" sn-text-optimize \\\n  --system-prompt-path \"$SKILL_DIR/references/evaluation-standard.md\" \\\n  --user-prompt \"$USER_PROMPT\" \\\n  --output-format json\n```\n\n#### Step 2 — Content Analysis + Layout & Style Selection + Prompt Expansion\n\n**2.0 Content Analysis** (using `sn-image-base`'s `sn-text-optimize` tool):\n\n```bash\nANALYSIS=$(python \"$SN_IMAGE_BASE/scripts/sn_agent_runner.py\" sn-text-optimize \\\n  --system-prompt-path \"$SKILL_DIR/references/analysis-framework.md\" \\\n  --user-prompt \"$USER_PROMPT\" \\\n  --output-format json)\n```\n\nSave analysis result stdout to `analysis.json` in temporary directory `$TEMP_DIR/analysis.json`:\n\n```bash\necho \"$ANALYSIS\" > \"$TEMP_DIR/analysis.json\"\n```\n\n**2.1 Layout & Style Selection**\n\n1. Read analysis result from temporary directory `$TEMP_DIR/analysis.json`;\n\n  ```bash\n  ANALYSIS=$(cat \"$TEMP_DIR/analysis.json\")\n  ```\n\n2. Based on `data_type`, `tone`, `audience`, select `layout` and `style` based on the rules in `$SKILL_DIR/references/layout-style-selection.md`;\n3. Read layout/style definition files:\n\n  ```bash\n  LAYOUT_DEF=$(cat \"$SKILL_DIR/references/layouts/<layout>.md\")\n  STYLE_DEF=$(cat \"$SKILL_DIR/references/styles/<style>.md\")\n  ```\n\n  If file does not exist, fallback to `hub-spoke` + `corporate-memphis`.\n\n4. Save selection result to temporary directory: `$TEMP_DIR/layout-style.json`;\n\nFormat of `layout-style.json`:\n\n```json\n{\n  \"layout\": \"<layout>\",\n  \"style\": \"<style>\"\n}\n```\n\n**2.2 Structured Content Generation**\n\nRead analysis result and structured content template, convert `user_prompt` into a design-ready structured content based on the template rules:\n\n```bash\nANALYSIS=$(cat \"$TEMP_DIR/analysis.json\")\nLAYOUT_STYLE=$(cat \"$TEMP_DIR/layout-style.json\")\nSTRUCTURED_CONTENT_TEMPLATE=$(cat \"$SKILL_DIR/references/structured-content-template.md\")\n```\n\nFollow the three phases defined in the template (High-Level Outline → Section Development → Data Integrity Check),\ncombine the learning objectives, visual opportunities, and key data in `analysis.json`, generate structured content, and save it to the temporary directory:\n\n```bash\ncat > \"$TEMP_DIR/structured-content.md\" << 'EOF'\n<Content generated based on structured-content-template.md format>\nEOF\n```\n\n**Rules**: All data must be preserved exactly. Do not rewrite. Do not add information that is not in the source.\n\n**2.3 Prompt Expansion** (using `sn-image-base`'s `sn-text-optimize` tool):\n\nRead structured content and layout/style selection from temporary directory, dynamically concatenate system prompt, and write to temporary file:\n\n```bash\nSTRUCTURED_CONTENT=$(cat \"$TEMP_DIR/structured-content.md\")\nLAYOUT_STYLE=$(cat \"$TEMP_DIR/layout-style.json\")\nLAYOUT=$(echo \"$LAYOUT_STYLE\" | jq -r '.layout')\nSTYLE=$(echo \"$LAYOUT_STYLE\" | jq -r '.style')\nLAYOUT_DEF=$(cat \"$SKILL_DIR/references/layouts/${LAYOUT}.md\")\nSTYLE_DEF=$(cat \"$SKILL_DIR/references/styles/${STYLE}.md\")\n\ncat > \"$TEMP_DIR/expand-system-prompt.md\" << EOF\n$(cat \"$SKILL_DIR/references/prompts-expand-system.md\")\n\n---\n\n## Selected Layout: $LAYOUT\n\n$LAYOUT_DEF\n\n---\n\n## Selected Style: $STYLE\n\n$STYLE_DEF\n\n---\n\n## Output Template Reference\n\n$(cat \"$SKILL_DIR/references/base-prompt.md\")\nEOF\n```\n\nUse the content of `structured-content.md` as user-prompt, read system prompt from temporary file and call sn-text-optimize:\n\n```bash\npython \"$SN_IMAGE_BASE/scripts/sn_agent_runner.py\" sn-text-optimize \\\n  --system-prompt-path \"$TEMP_DIR/expand-system-prompt.md\" \\\n  --user-prompt \"$STRUCTURED_CONTENT\" \\\n  --output-format json\n```\n\nParse JSON stdout, extract `result` field as `expanded_prompt`, and write to temporary directory:\n\n```bash\necho \"$EXPANDED_PROMPT\" > \"$TEMP_DIR/expanded-prompt.txt\"\n```\n\nIf parsing fails or truncation is suspected (the returned content is incomplete), notify the user and terminate the workflow.\n\n#### Step 3 — Image Generation Loop\n\nExecute `round` from `1` to `max_rounds` sequentially:\n\n**Generate Image** (using `sn-image-base`'s `sn-image-generate` tool):\n\n```bash\npython \"$SN_IMAGE_BASE/scripts/sn_agent_runner.py\" sn-image-generate \\\n  --prompt \"$EXPANDED_PROMPT\" \\\n  --image-size \"$IMAGE_SIZE\" \\\n  --aspect-ratio \"$ASPECT_RATIO\" \\\n  --save-path \"$TEMP_DIR/round_<N>.png\" \\\n  -o json\n```\n\n**Review Image** (only executed when `max_rounds > 1`):\n\nVLM configuration requirements:\n\n- When `max_rounds > 1`, call VLM for review\n- Select VLM model from OpenClaw configuration as parameter for image recognition\n- If no suitable VLM model exists in OpenClaw configuration:\n  - Notify user that current parameter combination cannot be executed\n  - Suggest adding VLM configuration or changing max_rounds to 1 to avoid VLM calls\n- If VLM call times out or fails: do not fallback, report the real error directly\n\n```bash\npython \"$SN_IMAGE_BASE/scripts/sn_agent_runner.py\" sn-image-recognize \\\n  --system-prompt-path \"$SN_IMAGE_INFOG/references/prompts-critic-system.md\" \\\n  --user-prompt \"Evaluate the diagram in the image against the rules. Output your assessment.\" \\\n  --images \"$TEMP_DIR/round_<N>.png\" \\\n  --output-format json\n```\n\nSystem prompt comes from `references/prompts-critic-system.md`, user prompt is provided directly.\n\n**Save Round Result**：\n\n```json\n{\n  \"round\": 1,\n  \"image\": \"$TEMP_DIR/round_1.png\",\n  \"result\": \"PASS|FAIL\",\n  \"violations_count\": 0,\n  \"violations\": [],\n  \"reasoning\": \"<Reasoning process, empty string when max_rounds=1>\",\n  \"timing\": {\n    \"image_generation\": { \"elapsed_seconds\": 12.34, \"model\": \"sn_image_model\" },\n    \"vlm_review\": { \"elapsed_seconds\": 5.67, \"model\": \"sensenova-6.7-flash-lite\" }\n  }\n}\n```\n\nNote: `elapsed_seconds` is read from the `--output-format json` return of each CLI call; `image_generation.model` is fixed to the hardcoded placeholder `\"sn_image_model\"` (sn-image-generate does not return the model field); `vlm_review.model` is read from the JSON return of sn-image-recognize. `timing.vlm_review` is omitted when `max_rounds=1`.\n\n**Early Termination Check** (only executed when `max_rounds > 1`):\n\n- If `result=PASS`, immediately exit the loop, do not continue generating\n- If `result=FAIL`, continue to the next round (if there are remaining rounds)\n\n#### Step 4 — Image Quality Ranking\n\nSort images by `violations_count` ascending + `round` ascending, return structured JSON to Main Agent.\n\n### Return Contract\n\nAfter Worker Agent completes, its last message must be and only be the following JSON string (bare JSON, no code fences, no preceding or trailing text).\n\n**Normal Flow:**\n\n```json\n{\n  \"status\": \"ok\",\n  \"need_main_agent_send\": true,\n  \"output_mode\": \"friendly|verbose\",\n  \"expanded_prompt\": \"<always contains when output_mode=verbose; value is original user_prompt when prompts_expand_skipped=true, otherwise is expanded result>\",\n  \"prompts_expand_skipped\": true,\n  \"early_terminated\": true,\n  \"timing\": {\n    \"total_elapsed_seconds\": 35.12,\n    \"prompt_detection\": { \"elapsed_seconds\": 2.11, \"model\": \"sensenova-6.7-flash-lite\" },\n    \"content_analysis\": { \"elapsed_seconds\": 3.22, \"model\": \"sensenova-6.7-flash-lite\" },\n    \"prompt_expand\": { \"elapsed_seconds\": 8.45, \"model\": \"sensenova-6.7-flash-lite\" }\n  },\n  \"rounds\": [\n    {\n      \"round\": 1,\n      \"image\": \"$TEMP_DIR/round_1.png\",\n      \"result\": \"PASS|FAIL\",\n      \"violations_count\": 0,\n      \"violations\": [],\n      \"reasoning\": \"<Reasoning process, empty string when max_rounds=1>\",\n      \"timing\": {\n        \"image_generation\": { \"elapsed_seconds\": 12.34, \"model\": \"sn_image_model\" },\n        \"vlm_review\": { \"elapsed_seconds\": 5.67, \"model\": \"sensenova-6.7-flash-lite\" }\n      }\n    }\n  ]\n}\n```\n\n**Error Flow:**\n\n```json\n{\n  \"status\": \"error\",\n  \"error\": \"<Actual error information>\"\n}\n```\n\n**Rules:**\n\n- `status=ok` must contain `need_main_agent_send: true`\n- `expanded_prompt` must contain when `output_mode=verbose`; value is original `user_prompt` when `prompts_expand_skipped=true`\n- `prompts_expand_skipped` must contain when expand is not executed (value is `true`), covering two cases: `prompts_expand_mode=disable` and `prompts_expand_mode=auto` and evaluation passes and skip expand\n- `early_terminated` must contain when early termination (value is `true`), omitted when normal execution completes\n- `violations` is an array of strings, from review results\n- `reasoning` is an empty string when `max_rounds=1`\n- Top-level `timing` contains:\n  - `total_elapsed_seconds`: Worker Agent's wall time from Step 0 to returning JSON, calculated by Worker Agent itself\n  - `prompt_detection`: Step 1 evaluation call, containing `elapsed_seconds` and `model` (read from sn-text-optimize JSON return); omitted when `prompts_expand_mode=disable`\n  - `content_analysis`: Step 2.0 content analysis call, containing `elapsed_seconds` and `model` (read from sn-text-optimize JSON return); omitted when expand is skipped\n  - `prompt_expand`: Step 2.3 prompt expansion call, containing `elapsed_seconds` and `model` (read from sn-text-optimize JSON return); omitted when expand is skipped\n- `rounds[].timing.image_generation.model` is fixed to the hardcoded placeholder `\"sn_image_model\"`\n- `rounds[].timing.vlm_review` is omitted when `max_rounds=1`\n\n## Output Format\n\n### friendly mode (default)\n\n**Text Summary:**\n\n- **when `max_rounds = 1`**: Generate a one-sentence description of the image content based on `expanded_prompt`,不超过50字\n- **when `max_rounds > 1`**: Generate a one-sentence description of the image content based on `result` and `violations`,不超过50字：\n  - `result=PASS`: Describe in a positive tone\n  - `result=FAIL` (1-2 violations): Gently point out specific issues\n  - `result=FAIL` (3 or more): Objectively summarize the main issues\n\n**Image**: rank=1 best single image\n\n### verbose mode\n\n```\nQuality ranking result (high -> low)\n---\nExpanded prompt: [expanded | not expanded, using original prompt]\n<expanded_prompt>\n---\n#1 round=<n> result=<PASS|FAIL> violations=<n> [early terminated]\n#2 round=<n> result=<PASS|FAIL> violations=<n>\n...\n---\nTime statistics: Total <total>s | Prompt evaluation <t>s | Content analysis <t>s | Prompt expansion <t>s | Image generation <t>s×<n> rounds | VLM review <t>s×<n> rounds\n---\nImages (sent in rank order)\n```\n\n## Call Relationship\n\n- Bottom-level dependency: `sn-image-base` → `sn-image-generate`, `sn-image-recognize`, `sn-text-optimize`\n\n## References\n\n- `references/analysis-framework.md` - Analysis methodology\n- `references/base-prompt.md` - Prompt template\n- `references/evaluation-standard.md` - Evaluation standard\n- `references/layout-style-selection.md` - Layout and style selection rules\n- `references/prompts-expand-system.md` - Prompt expansion system prompt\n- `references/prompts-critic-system.md` - Prompt critic system prompt\n- `references/runtime-parameters.md` - Runtime parameters\n- `references/structured-content-template.md` - Structured content template\n- `references/layouts/<layout>.md` - Layout definitions (87 layouts)\n- `references/styles/<style>.md` - Style definitions (66 styles)","tags":["infographic","sensenova","skills","opensensenova","agent","agent-skills","ai-agents","ai-assistant","data-analysis","document-processing","office-automation","presentation-slides"],"capabilities":["skill","source-opensensenova","skill-sn-infographic","topic-agent","topic-agent-skills","topic-ai-agents","topic-ai-assistant","topic-data-analysis","topic-document-processing","topic-office-automation","topic-presentation-slides"],"categories":["SenseNova-Skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/OpenSenseNova/SenseNova-Skills/sn-infographic","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add OpenSenseNova/SenseNova-Skills","source_repo":"https://github.com/OpenSenseNova/SenseNova-Skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 1627 github stars · SKILL.md body (16,693 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:53:05.205Z","embedding":null,"createdAt":"2026-05-15T06:53:10.327Z","updatedAt":"2026-05-18T18:53:05.205Z","lastSeenAt":"2026-05-18T18:53:05.205Z","tsv":"'/tmp/openclaw/sn-infographic':641 '0':72,624 '0.6':760 '1':47,117,450,457,515,530,535,559,564,626,674,720,923 '16':656 '2':471,635,717,728,787,817,856,937 '2.0':864 '2.1':919 '2k':662 '3':486,645,737,955 '4':500,651,769 '5':582,780 '6':810 '9':657 'agent':320,340,342,350,355,374,391,406,417,435,448,489,492,503,510,585,599,602 'alway':440 'analysi':858,866,879,904,916,925,933 'analysis.json':908 'analyz':14 'answer':743,754 'api':141,144,191,195,198,221,225,228,251,254,259 'architectur':338,351 'ask':29 'aspect':653 'assign':690,788 'audienc':943 'authent':162,178 'auto':78,135,138,467,718 'base':70,96,159,278,300,305,315,331,546,666,824,871,938,948 'base/references/api_spec.md':297 'base/scripts/sn_agent_runner.py':835,883 'bash':697,800,831,878,914,932,960 'best':94 'boundari':389 'built':171,201,231 'built-in':170,200,230 'call':145,175,439,721,819 'cat':934,963,969 'chat':194,224 'cli':167,291 'collect':365 'complet':495,568 'configur':142,273 'conserv':778 'content':15,525,594,857,865 'contract':433 'creat':31,636 'data':940 'def':962,968 'default':104,165,173,187,203,217,233,246,269,456,460,466,655,661,774 'defin':429 'definit':958 'descript':106,180,521,545 'determin':738 'dir':644 'dir/analysis.json':913,918,931,936 'dir/expanded-prompt.txt':706,809 'dir/references/analysis-framework.md':893 'dir/references/evaluation-standard.md':845 'dir/references/layout-style-selection.md':954 'dir/references/layouts':965 'dir/references/runtime-parameters.md':672 'dir/references/styles':971 'direct':400,442,683,714 'directori':309,499,616,640,696,794,911,929 'disabl':140,679 'echo':702,805,915 'empti':648 'encount':280 'environ':168 'error':588,592 'evalu':74,553,727,818 'evaluation/expansion':186 'execut':150,375,441,715,815 'exist':318 'expand':132,136,378,464,611,676,682,688,698,703,709,762,776,783,797,801,806,813 'expans':81,863 'explan':302 'explicit':289 'extract':451,731 'fail':773 'fals':784 'featur':73 'field':593 'file':959 'forc':139,712 'force/auto':82 'format':632,853,901 'friend':126,129,461,536 'gen':250,258 'generat':4,21,43,54,88,121,241,245,272,382,482,538,627 'graphic':42 'hhmmss':634 'id':629 'imag':53,57,69,87,158,213,215,240,244,249,257,266,271,277,296,299,304,314,330,370,524,532,561,575,621,659,823,834,870,882 'image-specif':265 'infer':652 'info':41 'infog':622 'infograph':3,6,25,32,40,479,483 'initi':625,646 'input':100 'instal':308,336 'int':116 'intern':207,237,437 'json':387,404,427,730,771,854,902 'key':192,196,199,222,226,229,252,255,260 'languag':544 'last':419 'layout':9,17,859,920,945,961 'layout/style':957 'list':334,650 'llm':181 'locat':322 'logic':739 'loop':377 'main':339,354,405,447,509 'max':114,454,513,533,562,606 'maximum':118 'md':966 'messag':396,415,420,475,571 'missingapikeyerror':281 'mode':79,83,124,128,133,459,465,537,566,609,612,677,680,713,719 'model':287 'multipl':84,379 'must':421 'name':327 'natur':543 'need':263,283,508 'network':208,238 'normal':359 'number':119,752 'ok':506 'one':519,541 'one-sent':518,540 'optim':63,185,725,829,839,876,887 'option':735,749,757,767 'orchestr':376 'order':578 'origin':112 'output':92,123,127,458,608,852,900 'output-format':851,899 'overrid':268 'paramet':102,163,179,292,293,360,496 'pars':729,772 'pass':288,493,741,750,765,768 'path':301,324,843,891 'pleas':484 'point':204,234 'preflight':362,474 'process':678 'profession':5 'prompt':76,80,108,131,453,463,605,610,665,675,686,689,699,701,704,708,796,802,804,807,842,848,850,862,890,896,898 'provid':65 'public':23 'publication-readi':22 'python':832,880 'qualiti':77,98 'rank':99,529,558,577 'ratio':654 'read':188,218,247,924,956 'readi':24 'real':591 'receiv':356,603 'recogn':58,214 'recommend':16 'record':707,795 'refer':294 'reli':48 'report':589 'request':113,358,470 'requir':110,732,740,745,764 'respons':353,388,408 'result':95,366,548,733,736,746,758,905,926 'return':385,402,432,504,586 'review':91,216,383 'role':352 'round':85,115,122,380,455,514,534,563,607,649 'rule':669,951 'save':903 'scene':44 'select':861,922,944 'send':361,367,394,410,472,511,516,527,551,556,567,573 'sensenova':206,236 'sentenc':520,542 'servic':209,239 'singl':531,560 'size':660 'skill':45,148,160,316,326,337,344,480,619,671,844,892,953,964,970 'skill-sn-infographic' 'skill.md':317 'skip':681,710,785,798 'sn':2,39,52,56,61,68,157,183,189,193,197,212,219,223,227,243,248,253,256,276,295,298,303,313,329,478,620,723,822,827,833,837,869,874,881,885 'sn-image-bas':67,156,275,312,328,821,868 'sn-image-gener':51,242 'sn-image-recogn':55,211 'sn-infograph':1,38,477 'sn-text-optim':60,182,722,826,836,873,884 'sn_agent_runner.py':153 'sort':384 'source-opensensenova' 'spawn':444 'specif':101,267 'specifi':285 'start':363,487 'status':505,587 'stdout':906 'step':623,673,716,786,816,855 'strategi':137,779 'string':109,125,134,428 'structur':386,403 'style':13,19,860,921,947,967 'sub':491 'sub-ag':490 'subag':445 'summari':35,570 'system':841,889 'system-prompt-path':840,888 'task':628 'temp':643,705,808,912,917,930,935 'temporari':639,695,793,910,928 'text':62,184,190,368,554,569,724,828,838,875,886 'tier':46,71,349 'timestamp':631 'tone':942 'tool':64,177,830,877 'topic-agent' 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-assistant' 'topic-data-analysis' 'topic-document-processing' 'topic-office-automation' 'topic-presentation-slides' 'total':759 'true':512,711,777,799,814 'two':348 'two-tier':347 'type':10,103,176,941 'uniform':473,638 'use':26,164,270,345,476,630,684,820,867 'user':28,107,111,357,372,399,413,452,469,581,597,604,664,685,700,803,847,849,895,897 'user-prompt':846,894 'user-vis':412 'valu':105,166 'variabl':169,691,789 'various':8 'verbos':130,565 'via':290 'violat':550 'visibl':414 'vision':220 'visual':12,34 'vlm':90,210,438 'wait':485 'without':443 'work':498,615 'worker':341,364,373,390,416,434,488,502,584,598,601 'workflow':446,449,600 'write':693,791 'yes':748,755 'yyyymmdd':633 '信息图':33 '可视化':37 '无需显式传入':174","prices":[{"id":"c3a3d7bb-190c-45f6-a348-bbee91001e56","listingId":"9cd046de-844a-49c0-bbc8-31bf79cbcd59","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"OpenSenseNova","category":"SenseNova-Skills","install_from":"skills.sh"},"createdAt":"2026-05-15T06:53:10.327Z"}],"sources":[{"listingId":"9cd046de-844a-49c0-bbc8-31bf79cbcd59","source":"github","sourceId":"OpenSenseNova/SenseNova-Skills/sn-infographic","sourceUrl":"https://github.com/OpenSenseNova/SenseNova-Skills/tree/main/skills/sn-infographic","isPrimary":false,"firstSeenAt":"2026-05-15T06:53:10.327Z","lastSeenAt":"2026-05-18T18:53:05.205Z"}],"details":{"listingId":"9cd046de-844a-49c0-bbc8-31bf79cbcd59","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"OpenSenseNova","slug":"sn-infographic","github":{"repo":"OpenSenseNova/SenseNova-Skills","stars":1627,"topics":["agent","agent-skills","ai-agents","ai-assistant","data-analysis","document-processing","office-automation","presentation-slides"],"license":"mit","html_url":"https://github.com/OpenSenseNova/SenseNova-Skills","pushed_at":"2026-05-15T04:43:37Z","description":"Modular SenseNova skills for building AI-powered office assistants and productivity workflows","skill_md_sha":"aa666e606ee28966d7edbe96670dedecb27b9ca1","skill_md_path":"skills/sn-infographic/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/OpenSenseNova/SenseNova-Skills/tree/main/skills/sn-infographic"},"layout":"multi","source":"github","category":"SenseNova-Skills","frontmatter":{"name":"sn-infographic","description":"Generates professional infographics with various layout types and visual styles.\nAnalyzes content, recommends layout and style, and generates publication-ready infographics.\nUse when user asks to create \"infographic\", \"信息图\", \"visual summary\", or \"可视化\"."},"skills_sh_url":"https://skills.sh/OpenSenseNova/SenseNova-Skills/sn-infographic"},"updatedAt":"2026-05-18T18:53:05.205Z"}}