{"id":"91394832-0cae-4923-860a-e272575f6a2d","entityType":"agent","slug":"clawhub-dataify-server-dataify-google-news","name":"Dataify Google News","canonicalUrl":"https://www.xpersona.co/agent/clawhub-dataify-server-dataify-google-news","canonicalPath":"/agent/clawhub-dataify-server-dataify-google-news","generatedAt":"2026-10-14T05:37:07.854Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T00:50:00.244Z","emptyReason":null},"description":"Search Google News","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 965 downloads reported by the source. Last updated 10/12/2026.","installCommand":"clawhub skill install s17feed8b2qc486skqmjapxmjs86bd4f:dataify-google-news","sourceUrl":"https://clawhub.ai/dataify-server/dataify-google-news","homepage":"https://clawhub.ai/dataify-server/skills/dataify-google-news","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/dataify-server/dataify-google-news","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/dataify-server/skills/dataify-google-news","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Dataify Google News technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-12T00:50:00.244Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T00:50:00.244Z","emptyReason":null},"stars":null,"forks":null,"downloads":965,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.3.1","tractionLabel":"965 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T00:50:00.132Z","emptyReason":null},"lastUpdatedAt":"2026-10-12T00:50:00.244Z","lastCrawledAt":"2026-10-12T00:50:00.132Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-13T00:50:00.132Z","lastVerifiedAt":null,"highlights":[{"version":"1.3.1","createdAt":"2026-09-08T06:17:30.741Z","changelog":"Fix natural-language usage failures: validate required targets and URLs, preserve catalog references, default Amazon region safely, normalize Google News links, and improve UTF-8 error output.","fileCount":14,"zipByteSize":36904},{"version":"1.3.0","createdAt":"2026-09-01T09:19:23.452Z","changelog":"默认返回最终采集结果，完善异步等待下载与安全恢复；修复空目标误执行、Quick Start、Token 配置和触发路由冲突，并补齐发布前自动化测试","fileCount":8,"zipByteSize":15908},{"version":"1.2.0","createdAt":"2026-07-16T08:42:15.078Z","changelog":"新增能力路由与异步任务闭环，修复失效引用、Token 泄漏和 Skill 元数据兼容性","fileCount":8,"zipByteSize":14416},{"version":"1.1.0","createdAt":"2026-06-08T02:10:02.773Z","changelog":"补全中文文档，更新目录结构","fileCount":8,"zipByteSize":14463},{"version":"1.0.0","createdAt":"2026-06-02T09:23:33.563Z","changelog":"**Initial release of the Dataify Google News skill.** - Provides a guided workflow for building and confirming Google News API requests via Dataify Scraper. - Adds a mandatory pre-call confirmation table summarizing API parameters, defaults, and field descriptions. - Enforces required token authentication, with clear user prompts if missing. - Integrates Python scripts for parameter preview and API calls, returning unmodified responses. - Offers flexible field mapping and supports user-driven modification of API request parameters before submission.","fileCount":6,"zipByteSize":12238}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17feed8b2qc486skqmjapxmjs86bd4f:dataify-google-news","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17feed8b2qc486skqmjapxmjs86bd4f:dataify-google-news` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/dataify-server/dataify-google-news before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-google-news/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-google-news/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-google-news/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-google-news/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-google-news/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-google-news/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-14T05:37:07.854Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-google-news/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-google-news/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-google-news/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-google-news/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T00:50:00.244Z","emptyReason":null},"readme":"Skill: Dataify Google News\n\nOwner: dataify-server\n\nSummary: Search Google News\n\nTags: latest:1.3.1\n\nVersion history:\n\nv1.3.1 | 2026-09-08T06:17:30.741Z | user\n\nFix natural-language usage failures: validate required targets and URLs, preserve catalog references, default Amazon region safely, normalize Google News links, and improve UTF-8 error output.\n\nv1.3.0 | 2026-09-01T09:19:23.452Z | user\n\n默认返回最终采集结果，完善异步等待下载与安全恢复；修复空目标误执行、Quick Start、Token 配置和触发路由冲突，并补齐发布前自动化测试\n\nv1.2.0 | 2026-07-16T08:42:15.078Z | user\n\n新增能力路由与异步任务闭环，修复失效引用、Token 泄漏和 Skill 元数据兼容性\n\nv1.1.0 | 2026-06-08T02:10:02.773Z | user\n\n补全中文文档，更新目录结构\n\nv1.0.0 | 2026-06-02T09:23:33.563Z | auto\n\n**Initial release of the Dataify Google News skill.**\n\n- Provides a guided workflow for building and confirming Google News API requests via Dataify Scraper.\n- Adds a mandatory pre-call confirmation table summarizing API parameters, defaults, and field descriptions.\n- Enforces required token authentication, with clear user prompts if missing.\n- Integrates Python scripts for parameter preview and API calls, returning unmodified responses.\n- Offers flexible field mapping and supports user-driven modification of API request parameters before submission.\n\nArchive index:\n\nArchive v1.3.1: 14 files, 36904 bytes\n\nFiles: agents/openai.yaml (159b), references/google_news_api.md (2056b), scripts/business_workflow.py (34775b), scripts/catalog_builder.py (7013b), scripts/dataify_client.py (6994b), scripts/google_news.py (12078b), scripts/preview_params.py (12542b), scripts/task_runtime.py (2259b), scripts/token_setup.py (2585b), scripts/wait_for_task.py (8879b), skill-card.md (2223b), SKILL.md (5600b), SKILL.zh-CN.md (4811b), _meta.json (138b)\n\nFile v1.3.1:SKILL.md\n\n---\nname: dataify-google-news\ndescription: \"Search Google News for current news results. Do not use for general Google web search.\"\n---\n\n# Dataify Google News\n\nUse this skill to turn a user's Google News request into a Dataify Scraper API form submission.\n## Workflow\n\n1. Parse the user's request into Google News fields. Use `q` as the query and set `engine` to `google_news`.\n2.  If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) to obtain `DATAIFY_API_TOKEN`.\n3. Build request parameters with only the fields the user requested plus required defaults. Use `json: \"1\"` unless the user asks for another output format.\n4. Run the bundled Python script with `python3`. Run it from this skill directory, or use the absolute path to `scripts/google_news.py`.\n\n```bash\npython3 scripts/google_news.py --q \"pizza\" --json 1\n```\n\nFor many fields, you may pass one JSON object with shell-appropriate quoting. The script will still submit form data to the API:\n\n```bash\npython3 scripts/google_news.py --params-json '{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"so\":\"1\"}'\n```\n\n\n## Field Mapping\n\nUse `references/google_news_api.md` when you need the exact field list or examples.\n\nCore rules:\n\n- Always submit the API request as form data with `Content-Type: application/x-www-form-urlencoded`.\n- Always force `engine` to `google_news`.\n- Keep request values as strings unless the script accepts and normalizes a boolean.\n- Omit optional fields that the user did not request.\n- Ask a follow-up only when the required query `q` cannot be inferred.\n- Normalize token values in the script. A token without `Bearer ` is accepted and prefixed automatically.\n\nCommon mappings:\n\n- \"JSON\" -> `json: \"1\"`\n- \"JSON+HTML\" -> `json: \"2\"`\n- \"HTML\" -> `json: \"3\"`\n- \"Light JSON\" -> `json: \"4\"`\n- bypass cache / no cache -> `no_cache: \"true\"`\n- use cache -> `no_cache: \"false\"`\n- country or region for Google News behavior -> `gl`\n- interface/search language -> `hl`\n- topic token -> `topic_token`\n- Google Knowledge Graph MID -> `kgmid`\n- publication token / publisher token -> `publication_token`\n- section token -> `section_token`\n- story token -> `story_token`\n- sort by relevance -> `so: \"0\"`\n- sort by date / latest / newest -> `so: \"1\"`\n\n## Result presentation\n\n- Return a compact, user-facing result by default: the most relevant titles, links, and vertical-specific fields, plus a count or truncation note when useful.\n- Do not expose transport details, fixed engine fields, task plumbing, or the full response envelope in the ordinary flow.\n- Return raw JSON or HTML only when the user explicitly requests raw output.\n- Preserve source links and distinguish missing fields from empty values; do not invent data.\n\n## Quick Start\n\n```bash\npython3 scripts/google_news.py --q \"pizza\" --json 1\n```\n\n## Parameter interaction policy\n\n- For a clear, low-risk, read-only, and low-cost request, apply safe defaults and execute immediately. A short execution summary is optional; do not pause for confirmation.\n- Ask only for a missing required input, a material ambiguity, a high-volume or multi-page scope, a media download, a choice that materially changes credit usage, an irreversible action, or an explicit user request to review parameters.\n- When confirmation is required, show only user-facing values that affect the target, scope, output, or cost. Prefer one concise sentence; use a compact table only when three or more consequential values are easier to compare.\n- Never show fixed fields, empty optional fields, unchanged defaults, credentials, or internal implementation parameters such as engine selectors, response-format flags, offsets, spider IDs, and file-name templates.\n- Keep advanced filters hidden unless the user asks for them or they are needed to resolve ambiguity. Never substitute documentation example values for missing required user input.\n- After returning results, offer relevant refinements instead of forcing all optional decisions before the first result.\n\n## Account CTA policy\n\n- Show a prominent Dataify account CTA only when the API token is missing, rejected/invalid, or the account has insufficient credits.\n- For a missing token, offer https://dashboard.dataify.com/login?utm_source=skill and state: New accounts get 50 free credits, enough for about 6,000 trial results, valid for 7 days, and only successful requests are billed. Never ask the user to paste the token into chat.\n- Detect the current operating system and shell. Show only the matching session-scoped setup command first (`export` for macOS/Linux shells, `$env:` for Windows PowerShell, or `set` for Windows Command Prompt). Show other platforms or persistent setup only when detection is ambiguous or the user asks.\n- After the user says the token is configured, verify only whether `DATAIFY_API_TOKEN` is present; never print its value. If verification succeeds, continue the original task without asking the user to repeat it.\n- Explain that persistent shell changes may require a new terminal or restarting the agent application. Do not recommend a project `.env` unless the execution path explicitly loads it, and ensure `.env` is ignored by version control.\n- For an invalid token, direct the user to API-key management without implying that a new registration is required. For insufficient credits, direct the user to balance or recharge management.\n- During normal submission, processing, and successful completion, do not promote registration or the Dashboard. Never expose the token or include it in CTA attribution parameters.\n\nFile v1.3.1:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-google-news\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1788848250741\n}\n\nFile v1.3.1:references/google_news_api.md\n\n# Dataify Google News API Reference\n\nEndpoint: `POST https://scraperapi.dataify.com/request`\n\nAuthentication header: `Authorization: Bearer <DATAIFY_API_TOKEN>`\n\nThe Python script stores the endpoint as a constant. Do not read the API URL from the current environment.\n\nSubmit requests as form data with `Content-Type: application/x-www-form-urlencoded`. Do not send the API body as JSON.\n\n## Form Fields\n\nAlways include:\n\n| Field | Required | Value |\n| --- | --- | --- |\n| `engine` | yes | 固定使用 `google_news` 引擎 |\n| `q` | yes | 用户要查询的新闻关键词 |\n| `json` | yes | 输出模式，默认 `1` |\n\nOptional fields:\n\n| Field | Meaning | Accepted values or format |\n| --- | --- | --- |\n| `no_cache` | 跳过缓存 | 是否跳过缓存重新抓取，可填 `true` 或 `false` |\n| `gl` | Google 国家/地区 | 两位国家或地区代码，例如 `us`、`uk`、`fr` |\n| `hl` | Google 语言 | Google News 界面语言代码，例如 `en`、`zh-cn`、`es`、`fr` |\n| `topic_token` | Google News 主题 token | Google News 的原始主题 token |\n| `kgmid` | 知识图谱 MID | 主题或地点对应的 Knowledge Graph MID，通常以 `/m/` 或 `/g/` 开头 |\n| `publication_token` | Google News 出版方 token | Google News 的原始出版方 token |\n| `section_token` | Google News 栏目 token | Google News 的原始栏目 token |\n| `story_token` | Google News 故事 token | Google News 的原始故事 token |\n| `so` | 排序方式 | 排序方式，`0` 表示相关度，`1` 表示时间 |\n\n## Output Modes\n\n| User asks for | `json` |\n| --- | --- |\n| JSON | `1` |\n| JSON plus HTML | `2` |\n| HTML | `3` |\n| Light JSON | `4` |\n\n## Examples\n\nSearch Google News for pizza:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\"}\n```\n\nSearch United States English news and bypass cache:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"no_cache\":\"true\"}\n```\n\nSearch latest technology news:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"so\":\"1\"}\n```\n\nSearch by a Google News topic token:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"topic_token\":\"TOPIC_TOKEN\"}\n```\n\nFile v1.3.1:skill-card.md\n\n## Description:\n\nSearch Google News for current news results. Do not use for general Google web search.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dataify-server](https://clawhub.ai/user/dataify-server)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to run Google News searches through the Dataify Scraper API and receive current news results or raw JSON/HTML when requested.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires a Dataify API token and sends requests to Dataify.\n\nMitigation: Use a session-scoped DATAIFY_API_TOKEN, do not pass tokens on the command line, and verify only whether the variable is configured.\n\nRisk: Persistent shell-profile setup can store the API token in plaintext.\n\nMitigation: Prefer session-only environment setup and avoid persistent profile edits unless the user understands the plaintext secret exposure.\n\nRisk: The package includes broader non-news Dataify workflow scripts beyond the advertised Google News purpose.\n\nMitigation: Use only the Google News workflow for this release unless the extra scripts are separately reviewed and intentionally enabled.\n\n## Reference(s):\n\n- [Dataify Google News API Reference](references/google_news_api.md)\n- [Dataify Google News ClawHub release](https://clawhub.ai/dataify-server/skills/dataify-google-news)\n- [Dataify Scraper API request endpoint](https://scraperapi.dataify.com/request)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown summaries with source links by default; raw JSON or HTML only when requested.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires DATAIFY_API_TOKEN for live API calls; dry-run mode prints normalized form parameters without calling the API.]\n\n## Skill Version(s):\n\n1.3.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.3.1:SKILL.zh-CN.md\n\n---\nname: dataify-google-news\ndescription: \"当用户请求“调用 Google News”或“新闻搜索/信息”，或明确提到新闻搜索字段时，触发 dataify-google-news skill。\"\n---\n\n# Dataify Google News 中文版\n\n这个 skill 用于将用户的搜索请求转化为 Dataify Scraper API 调用，并返回结构化搜索结果。\n## 工作流程\n\n1. 解析用户请求，提取搜索参数。\n2. 如果 token 缺失，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n3. 构建请求参数，仅包含用户请求的字段和必要的默认值。\n4. 使用 `python3` 运行脚本。\n\n```bash\npython3 scripts/google_news.py --params-json '{\"q\":\"搜索关键词\"}'\n```\n\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 参考文件\n\n- `references/` 目录下的 API 文档包含完整的字段列表和说明。\n- 当字段行为、允许的值或响应格式不明确时，请查阅参考文档。\n## 注意事项\n\n- 始终使用 `Content-Type: application/x-www-form-urlencoded` 提交 API 请求。\n- 保持请求值为字符串类型。\n- 省略用户未请求的可选字段。\n\n## 结果呈现\n\n- 默认返回精简、可直接使用的结果：最相关的标题、链接和垂类关键字段，并在必要时说明数量或截断情况。\n- 普通流程不暴露传输细节、固定引擎字段、任务内部状态或完整响应包装。\n- 只有用户明确要求原始输出时才返回 raw JSON 或 HTML。\n- 保留来源链接，区分字段缺失与空值，不得编造数据。\n\n## 参数交互策略\n\n- 当请求意图明确、只读、低风险且成本较低时，使用安全默认值直接执行。可以用一句话说明执行内容，但不要暂停等待确认。\n- 只在缺少必填输入、存在会明显改变结果的歧义、大批量或多页采集、媒体下载、会明显增加积分消耗、不可逆操作，或用户明确要求查看参数时询问。\n- 必须确认时，只展示会影响目标、范围、输出或成本的用户参数。优先使用一句简短说明；只有三个及以上关键值确实需要比较时才使用精简表格。\n- 不要展示固定字段、空的可选字段、未修改的默认值、凭据或内部实现参数，例如引擎选择、响应格式开关、偏移量、spider ID 和文件名模板。\n- 默认隐藏高级筛选项，除非用户主动询问或需要它们消除歧义。不得用文档示例值代替用户缺失的必填输入。\n- 先返回首个结果，再提供相关的细化选项，不要在首次执行前强迫用户决定所有可选项。\n\n## Account CTA policy\n\n- Show a prominent Dataify account CTA only when the API token is missing, rejected/invalid, or the account has insufficient credits.\n- For a missing token, offer https://dashboard.dataify.com/login?utm_source=skill and state: New accounts get 50 free credits, enough for about 6,000 trial results, valid for 7 days, and only successful requests are billed. Never ask the user to paste the token into chat.\n- Detect the current operating system and shell. Show only the matching session-scoped setup command first (`export` for macOS/Linux shells, `$env:` for Windows PowerShell, or `set` for Windows Command Prompt). Show other platforms or persistent setup only when detection is ambiguous or the user asks.\n- After the user says the token is configured, verify only whether `DATAIFY_API_TOKEN` is present; never print its value. If verification succeeds, continue the original task without asking the user to repeat it.\n- Explain that persistent shell changes may require a new terminal or restarting the agent application. Do not recommend a project `.env` unless the execution path explicitly loads it, and ensure `.env` is ignored by version control.\n- For an invalid token, direct the user to API-key management without implying that a new registration is required. For insufficient credits, direct the user to balance or recharge management.\n- During normal submission, processing, and successful completion, do not promote registration or the Dashboard. Never expose the token or include it in CTA attribution parameters.\n\nFile v1.3.1:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Google News\"\n  short_description: \"Search Google News\"\n  default_prompt: \"Use $dataify-google-news to run a search query.\"\n\nArchive v1.3.0: 8 files, 15908 bytes\n\nFiles: agents/openai.yaml (159b), references/google_news_api.md (2056b), scripts/google_news.py (10721b), scripts/preview_params.py (12542b), skill-card.md (2077b), SKILL.md (5507b), SKILL.zh-CN.md (4718b), _meta.json (138b)\n\nFile v1.3.0:SKILL.md\n\n---\nname: dataify-google-news\ndescription: \"Search Google News for current news results. Do not use for general Google web search.\"\n---\n\n# Dataify Google News\n\nUse this skill to turn a user's Google News request into a Dataify Scraper API form submission.\n## Workflow\n\n1. Parse the user's request into Google News fields. Use `q` as the query and set `engine` to `google_news`.\n2.  If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) to obtain `DATAIFY_API_TOKEN`.\n3. Build request parameters with only the fields the user requested plus required defaults. Use `json: \"1\"` unless the user asks for another output format.\n4. Run the bundled Python script with `python3`. Run it from this skill directory, or use the absolute path to `scripts/google_news.py`.\n\n```bash\npython3 scripts/google_news.py --q \"pizza\" --json 1\n```\n\nFor many fields, you may pass one JSON object with shell-appropriate quoting. The script will still submit form data to the API:\n\n```bash\npython3 scripts/google_news.py --params-json '{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"so\":\"1\"}'\n```\n\n\n## Field Mapping\n\nUse `references/google_news_api.md` when you need the exact field list or examples.\n\nCore rules:\n\n- Always submit the API request as form data with `Content-Type: application/x-www-form-urlencoded`.\n- Always force `engine` to `google_news`.\n- Keep request values as strings unless the script accepts and normalizes a boolean.\n- Omit optional fields that the user did not request.\n- Ask a follow-up only when the required query `q` cannot be inferred.\n- Normalize token values in the script. A token without `Bearer ` is accepted and prefixed automatically.\n\nCommon mappings:\n\n- \"JSON\" -> `json: \"1\"`\n- \"JSON+HTML\" -> `json: \"2\"`\n- \"HTML\" -> `json: \"3\"`\n- \"Light JSON\" -> `json: \"4\"`\n- bypass cache / no cache -> `no_cache: \"true\"`\n- use cache -> `no_cache: \"false\"`\n- country or region for Google News behavior -> `gl`\n- interface/search language -> `hl`\n- topic token -> `topic_token`\n- Google Knowledge Graph MID -> `kgmid`\n- publication token / publisher token -> `publication_token`\n- section token -> `section_token`\n- story token -> `story_token`\n- sort by relevance -> `so: \"0\"`\n- sort by date / latest / newest -> `so: \"1\"`\n\n## Result presentation\n\n- Return a compact, user-facing result by default: the most relevant titles, links, and vertical-specific fields, plus a count or truncation note when useful.\n- Do not expose transport details, fixed engine fields, task plumbing, or the full response envelope in the ordinary flow.\n- Return raw JSON or HTML only when the user explicitly requests raw output.\n- Preserve source links and distinguish missing fields from empty values; do not invent data.\n\n## Quick Start\n\n```bash\npython3 scripts/google_news.py --q \"pizza\" --json 1\n```\n\n## Parameter interaction policy\n\n- For a clear, low-risk, read-only, and low-cost request, apply safe defaults and execute immediately. A short execution summary is optional; do not pause for confirmation.\n- Ask only for a missing required input, a material ambiguity, a high-volume or multi-page scope, a media download, a choice that materially changes credit usage, an irreversible action, or an explicit user request to review parameters.\n- When confirmation is required, show only user-facing values that affect the target, scope, output, or cost. Prefer one concise sentence; use a compact table only when three or more consequential values are easier to compare.\n- Never show fixed fields, empty optional fields, unchanged defaults, credentials, or internal implementation parameters such as engine selectors, response-format flags, offsets, spider IDs, and file-name templates.\n- Keep advanced filters hidden unless the user asks for them or they are needed to resolve ambiguity. Never substitute documentation example values for missing required user input.\n- After returning results, offer relevant refinements instead of forcing all optional decisions before the first result.\n\n## Account CTA policy\n\n- Show a prominent Dataify account CTA only when the API token is missing, rejected/invalid, or the account has insufficient credits.\n- For a missing token, offer https://dashboard.dataify.com/login?utm_source=skill and state: New accounts receive 50 free credits. Never ask the user to paste the token into chat.\n- Detect the current operating system and shell. Show only the matching session-scoped setup command first (`export` for macOS/Linux shells, `$env:` for Windows PowerShell, or `set` for Windows Command Prompt). Show other platforms or persistent setup only when detection is ambiguous or the user asks.\n- After the user says the token is configured, verify only whether `DATAIFY_API_TOKEN` is present; never print its value. If verification succeeds, continue the original task without asking the user to repeat it.\n- Explain that persistent shell changes may require a new terminal or restarting the agent application. Do not recommend a project `.env` unless the execution path explicitly loads it, and ensure `.env` is ignored by version control.\n- For an invalid token, direct the user to API-key management without implying that a new registration is required. For insufficient credits, direct the user to balance or recharge management.\n- During normal submission, processing, and successful completion, do not promote registration or the Dashboard. Never expose the token or include it in CTA attribution parameters.\n\nFile v1.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-google-news\",\n  \"version\": \"1.3.0\",\n  \"publishedAt\": 1788254363452\n}\n\nFile v1.3.0:references/google_news_api.md\n\n# Dataify Google News API Reference\n\nEndpoint: `POST https://scraperapi.dataify.com/request`\n\nAuthentication header: `Authorization: Bearer <DATAIFY_API_TOKEN>`\n\nThe Python script stores the endpoint as a constant. Do not read the API URL from the current environment.\n\nSubmit requests as form data with `Content-Type: application/x-www-form-urlencoded`. Do not send the API body as JSON.\n\n## Form Fields\n\nAlways include:\n\n| Field | Required | Value |\n| --- | --- | --- |\n| `engine` | yes | 固定使用 `google_news` 引擎 |\n| `q` | yes | 用户要查询的新闻关键词 |\n| `json` | yes | 输出模式，默认 `1` |\n\nOptional fields:\n\n| Field | Meaning | Accepted values or format |\n| --- | --- | --- |\n| `no_cache` | 跳过缓存 | 是否跳过缓存重新抓取，可填 `true` 或 `false` |\n| `gl` | Google 国家/地区 | 两位国家或地区代码，例如 `us`、`uk`、`fr` |\n| `hl` | Google 语言 | Google News 界面语言代码，例如 `en`、`zh-cn`、`es`、`fr` |\n| `topic_token` | Google News 主题 token | Google News 的原始主题 token |\n| `kgmid` | 知识图谱 MID | 主题或地点对应的 Knowledge Graph MID，通常以 `/m/` 或 `/g/` 开头 |\n| `publication_token` | Google News 出版方 token | Google News 的原始出版方 token |\n| `section_token` | Google News 栏目 token | Google News 的原始栏目 token |\n| `story_token` | Google News 故事 token | Google News 的原始故事 token |\n| `so` | 排序方式 | 排序方式，`0` 表示相关度，`1` 表示时间 |\n\n## Output Modes\n\n| User asks for | `json` |\n| --- | --- |\n| JSON | `1` |\n| JSON plus HTML | `2` |\n| HTML | `3` |\n| Light JSON | `4` |\n\n## Examples\n\nSearch Google News for pizza:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\"}\n```\n\nSearch United States English news and bypass cache:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"no_cache\":\"true\"}\n```\n\nSearch latest technology news:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"so\":\"1\"}\n```\n\nSearch by a Google News topic token:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"topic_token\":\"TOPIC_TOKEN\"}\n```\n\nFile v1.3.0:skill-card.md\n\n## Description:\n\nSearch Google News for current news results. Do not use for general Google web search.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dataify-server](https://clawhub.ai/user/dataify-server)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to run targeted Google News searches through Dataify and receive compact news results with source links and relevant fields.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Google News queries and selected filters are sent to Dataify.\n\nMitigation: Avoid sensitive private research terms and use the skill only when sharing selected search parameters with Dataify is acceptable.\n\nRisk: Dataify API usage may consume account credits.\n\nMitigation: Review query scope and filters before high-volume use and confirm the account has enough credits for the intended request.\n\nRisk: Persistent credential configuration can leave API tokens in shell profiles.\n\nMitigation: Prefer a session-scoped DATAIFY_API_TOKEN unless persistent storage is intentional, and never expose token values in chat or logs.\n\n## Reference(s):\n\n- [Dataify Google News API Reference](references/google_news_api.md)\n- [Dataify Google News Skill Page](https://clawhub.ai/dataify-server/skills/dataify-google-news)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, HTML, shell commands, configuration guidance]\n\n**Output Format:** [Markdown summaries by default, with raw JSON or HTML only when requested.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include Google News titles, source links, counts, truncation notes, and account setup guidance when credentials are missing.]\n\n## Skill Version(s):\n\n1.3.0 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.3.0:SKILL.zh-CN.md\n\n---\nname: dataify-google-news\ndescription: \"当用户请求“调用 Google News”或“新闻搜索/信息”，或明确提到新闻搜索字段时，触发 dataify-google-news skill。\"\n---\n\n# Dataify Google News 中文版\n\n这个 skill 用于将用户的搜索请求转化为 Dataify Scraper API 调用，并返回结构化搜索结果。\n## 工作流程\n\n1. 解析用户请求，提取搜索参数。\n2. 如果 token 缺失，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n3. 构建请求参数，仅包含用户请求的字段和必要的默认值。\n4. 使用 `python3` 运行脚本。\n\n```bash\npython3 scripts/google_news.py --params-json '{\"q\":\"搜索关键词\"}'\n```\n\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 参考文件\n\n- `references/` 目录下的 API 文档包含完整的字段列表和说明。\n- 当字段行为、允许的值或响应格式不明确时，请查阅参考文档。\n## 注意事项\n\n- 始终使用 `Content-Type: application/x-www-form-urlencoded` 提交 API 请求。\n- 保持请求值为字符串类型。\n- 省略用户未请求的可选字段。\n\n## 结果呈现\n\n- 默认返回精简、可直接使用的结果：最相关的标题、链接和垂类关键字段，并在必要时说明数量或截断情况。\n- 普通流程不暴露传输细节、固定引擎字段、任务内部状态或完整响应包装。\n- 只有用户明确要求原始输出时才返回 raw JSON 或 HTML。\n- 保留来源链接，区分字段缺失与空值，不得编造数据。\n\n## 参数交互策略\n\n- 当请求意图明确、只读、低风险且成本较低时，使用安全默认值直接执行。可以用一句话说明执行内容，但不要暂停等待确认。\n- 只在缺少必填输入、存在会明显改变结果的歧义、大批量或多页采集、媒体下载、会明显增加积分消耗、不可逆操作，或用户明确要求查看参数时询问。\n- 必须确认时，只展示会影响目标、范围、输出或成本的用户参数。优先使用一句简短说明；只有三个及以上关键值确实需要比较时才使用精简表格。\n- 不要展示固定字段、空的可选字段、未修改的默认值、凭据或内部实现参数，例如引擎选择、响应格式开关、偏移量、spider ID 和文件名模板。\n- 默认隐藏高级筛选项，除非用户主动询问或需要它们消除歧义。不得用文档示例值代替用户缺失的必填输入。\n- 先返回首个结果，再提供相关的细化选项，不要在首次执行前强迫用户决定所有可选项。\n\n## Account CTA policy\n\n- Show a prominent Dataify account CTA only when the API token is missing, rejected/invalid, or the account has insufficient credits.\n- For a missing token, offer https://dashboard.dataify.com/login?utm_source=skill and state: New accounts receive 50 free credits. Never ask the user to paste the token into chat.\n- Detect the current operating system and shell. Show only the matching session-scoped setup command first (`export` for macOS/Linux shells, `$env:` for Windows PowerShell, or `set` for Windows Command Prompt). Show other platforms or persistent setup only when detection is ambiguous or the user asks.\n- After the user says the token is configured, verify only whether `DATAIFY_API_TOKEN` is present; never print its value. If verification succeeds, continue the original task without asking the user to repeat it.\n- Explain that persistent shell changes may require a new terminal or restarting the agent application. Do not recommend a project `.env` unless the execution path explicitly loads it, and ensure `.env` is ignored by version control.\n- For an invalid token, direct the user to API-key management without implying that a new registration is required. For insufficient credits, direct the user to balance or recharge management.\n- During normal submission, processing, and successful completion, do not promote registration or the Dashboard. Never expose the token or include it in CTA attribution parameters.\n\nFile v1.3.0:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Google News\"\n  short_description: \"Search Google News\"\n  default_prompt: \"Use $dataify-google-news to run a search query.\"\n\nArchive v1.2.0: 8 files, 14416 bytes\n\nFiles: agents/openai.yaml (159b), references/google_news_api.md (2056b), scripts/google_news.py (10681b), scripts/preview_params.py (12542b), skill-card.md (2079b), SKILL.md (4762b), SKILL.zh-CN.md (3160b), _meta.json (138b)\n\nFile v1.2.0:SKILL.md\n\n---\nname: dataify-google-news\ndescription: When the user requests \"call Google News\" or \"news search/information\", or explicitly mentions the news search field, the dataify-google-news skill is triggered.\n---\n\n# Dataify Google News\n\nUse this skill to turn a user's Google News request into a Dataify Scraper API form submission.\n\n## Required Pre-Call Confirmation\n\nBefore every real API call, follow this confirmation flow. These rules override any older workflow order in this skill.\n\n1. Parse the user's request into the API body fields and fixed `engine` value.\n2. Apply defaults only when the parameter description explicitly states a default. Do not use example YAML values, sample prompts, placeholder values, or examples such as `pizza`, `us`, `en`, dates, airport codes, or tokens as defaults.\n3. If a required parameter has no documented default and cannot be inferred from the user request, ask for that parameter before building the table.\n4. Show a Markdown table before calling the API. Do not include `Authorization`. Include the complete body field list from this skill's reference document, including `engine`, even when a field is currently blank.\n5. The table must have exactly these columns: `参数名`, `当前值`, `默认值`, `说明`.\n6. After the table, ask the user whether they want to modify any parameter. Do not call the API until the user explicitly confirms.\n7. If the user changes a parameter, regenerate the table and ask for confirmation again.\n8.  If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) to obtain `DATAIFY_API_TOKEN`.\n\nUse the bundled preview helper whenever possible to generate the confirmation table from this skill's reference document:\n\n```bash\npython3 scripts/preview_params.py --params-json '{\"q\":\"USER_QUERY\"}'\n```\n\nPass every parsed current value to `preview_params.py` using `--params-json` or matching `--field value` arguments. The helper reads defaults and descriptions from `references/*api.md`; if the helper cannot parse a default, leave the default blank rather than inventing one.\n9. After confirmation and token handling, call the bundled Python script with `python3` and return the API response body directly without summarizing, extracting, cleaning, translating, or reshaping it.\n## Workflow\n\n1. Parse the user's request into Google News fields. Use `q` as the query and set `engine` to `google_news`.\n2.  If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) to obtain `DATAIFY_API_TOKEN`.\n3. Build request parameters with only the fields the user requested plus required defaults. Use `json: \"1\"` unless the user asks for another output format.\n4. Run the bundled Python script with `python3`. Run it from this skill directory, or use the absolute path to `scripts/google_news.py`.\n\n```bash\npython3 scripts/google_news.py --q \"pizza\" --json 1\n```\n\nIf the user provided a token in the conversation instead of an environment variable, pass it with `--token` and avoid echoing it back in the final answer:\n\n```bash\npython3 scripts/google_news.py --token \"USER_TOKEN\" --q \"pizza\" --gl us --hl en --no_cache true\n```\n\nFor many fields, you may pass one JSON object with shell-appropriate quoting. The script will still submit form data to the API:\n\n```bash\npython3 scripts/google_news.py --params-json '{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"so\":\"1\"}'\n```\n\n5. Return the script output directly to the user. Do not summarize, extract, clean, translate, or reshape the API response.\n\n## Field Mapping\n\nUse `references/google_news_api.md` when you need the exact field list or examples.\n\nCore rules:\n\n- Always submit the API request as form data with `Content-Type: application/x-www-form-urlencoded`.\n- Always force `engine` to `google_news`.\n- Keep request values as strings unless the script accepts and normalizes a boolean.\n- Omit optional fields that the user did not request.\n- Ask a follow-up only when the required query `q` cannot be inferred.\n- Normalize token values in the script. A token without `Bearer ` is accepted and prefixed automatically.\n\nCommon mappings:\n\n- \"JSON\" -> `json: \"1\"`\n- \"JSON+HTML\" -> `json: \"2\"`\n- \"HTML\" -> `json: \"3\"`\n- \"Light JSON\" -> `json: \"4\"`\n- bypass cache / no cache -> `no_cache: \"true\"`\n- use cache -> `no_cache: \"false\"`\n- country or region for Google News behavior -> `gl`\n- interface/search language -> `hl`\n- topic token -> `topic_token`\n- Google Knowledge Graph MID -> `kgmid`\n- publication token / publisher token -> `publication_token`\n- section token -> `section_token`\n- story token -> `story_token`\n- sort by relevance -> `so: \"0\"`\n- sort by date / latest / newest -> `so: \"1\"`\n\nFile v1.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-google-news\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1784191335078\n}\n\nFile v1.2.0:references/google_news_api.md\n\n# Dataify Google News API Reference\n\nEndpoint: `POST https://scraperapi.dataify.com/request`\n\nAuthentication header: `Authorization: Bearer <DATAIFY_API_TOKEN>`\n\nThe Python script stores the endpoint as a constant. Do not read the API URL from the current environment.\n\nSubmit requests as form data with `Content-Type: application/x-www-form-urlencoded`. Do not send the API body as JSON.\n\n## Form Fields\n\nAlways include:\n\n| Field | Required | Value |\n| --- | --- | --- |\n| `engine` | yes | 固定使用 `google_news` 引擎 |\n| `q` | yes | 用户要查询的新闻关键词 |\n| `json` | yes | 输出模式，默认 `1` |\n\nOptional fields:\n\n| Field | Meaning | Accepted values or format |\n| --- | --- | --- |\n| `no_cache` | 跳过缓存 | 是否跳过缓存重新抓取，可填 `true` 或 `false` |\n| `gl` | Google 国家/地区 | 两位国家或地区代码，例如 `us`、`uk`、`fr` |\n| `hl` | Google 语言 | Google News 界面语言代码，例如 `en`、`zh-cn`、`es`、`fr` |\n| `topic_token` | Google News 主题 token | Google News 的原始主题 token |\n| `kgmid` | 知识图谱 MID | 主题或地点对应的 Knowledge Graph MID，通常以 `/m/` 或 `/g/` 开头 |\n| `publication_token` | Google News 出版方 token | Google News 的原始出版方 token |\n| `section_token` | Google News 栏目 token | Google News 的原始栏目 token |\n| `story_token` | Google News 故事 token | Google News 的原始故事 token |\n| `so` | 排序方式 | 排序方式，`0` 表示相关度，`1` 表示时间 |\n\n## Output Modes\n\n| User asks for | `json` |\n| --- | --- |\n| JSON | `1` |\n| JSON plus HTML | `2` |\n| HTML | `3` |\n| Light JSON | `4` |\n\n## Examples\n\nSearch Google News for pizza:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\"}\n```\n\nSearch United States English news and bypass cache:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"no_cache\":\"true\"}\n```\n\nSearch latest technology news:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"so\":\"1\"}\n```\n\nSearch by a Google News topic token:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"topic_token\":\"TOPIC_TOKEN\"}\n```\n\nFile v1.2.0:skill-card.md\n\n## Description: <br>\nWhen the user requests \"call Google News\" or \"news search/information\", or explicitly mentions the news search field, the dataify-google-news skill is triggered. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[dataify-server](https://clawhub.ai/user/dataify-server) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and external users use this skill to convert Google News search requests into confirmed Dataify Scraper API calls and return the API response body. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Google News queries and selected parameters are sent to Dataify during live API calls. <br>\nMitigation: Install only if this data sharing is acceptable for the intended use case, and review the confirmation table before approving each call. <br>\nRisk: The Dataify API token could be exposed if handled carelessly. <br>\nMitigation: Store DATAIFY_API_TOKEN securely and avoid passing tokens on the command line when possible. <br>\n\n\n## Reference(s): <br>\n- [Dataify Google News API Reference](references/google_news_api.md) <br>\n- [ClawHub skill page](https://clawhub.ai/dataify-server/skills/dataify-google-news) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Markdown, Shell commands, API Calls, JSON, Text] <br>\n**Output Format:** [Markdown confirmation table, shell command invocation, and raw API response body in the requested output mode.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires DATAIFY_API_TOKEN for live calls, confirms parameters before outbound requests, and returns the API response body without summarizing.] <br>\n\n## Skill Version(s): <br>\n1.2.0 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.2.0:SKILL.zh-CN.md\n\n---\nname: dataify-google-news\ndescription: \"当用户请求“调用 Google News”或“新闻搜索/信息”，或明确提到新闻搜索字段时，触发 dataify-google-news skill。\"\n---\n\n# Dataify Google News 中文版\n\n这个 skill 用于将用户的搜索请求转化为 Dataify Scraper API 调用，并返回结构化搜索结果。\n\n## 调用前确认（必须）\n\n每次真正调用 API 之前，必须遵循以下确认流程：\n\n1. 将用户请求解析为 API 参数字段和固定的 `engine` 值。\n2. 仅在参数描述明确标注默认值时才使用默认值。不要将示例值、占位符或样例数据作为默认值。\n3. 如果必填参数没有默认值且无法从用户请求中推断，先询问用户。\n4. 调用 API 前展示 Markdown 参数表。不要包含 `Authorization`。表格必须包含以下列：`参数名`、`当前值`、`默认值`、`说明`。\n5. 展示表格后询问用户是否需要修改参数。用户确认后才能调用 API。\n6. 如果用户修改了参数，重新生成表格并再次确认。\n7. 如果 token 缺失，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n\n使用预览工具生成确认表格：\n\n```bash\npython3 scripts/preview_params.py --params-json '{\"q\":\"用户查询内容\"}'\n```\n\n## 工作流程\n\n1. 解析用户请求，提取搜索参数。\n2. 如果 token 缺失，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n3. 构建请求参数，仅包含用户请求的字段和必要的默认值。\n4. 使用 `python3` 运行脚本。\n\n```bash\npython3 scripts/google_news.py --params-json '{\"q\":\"搜索关键词\"}'\n```\n\n如果用户在对话中提供了 token，使用 `--token` 传递：\n\n```bash\npython3 scripts/google_news.py --token \"USER_TOKEN\" --params-json '{\"q\":\"搜索关键词\"}'\n```\n\n5. 将脚本输出直接返回给用户。不要对 API 响应进行总结、提取、清理、翻译或重新格式化。\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 参考文件\n\n- `references/` 目录下的 API 文档包含完整的字段列表和说明。\n- 当字段行为、允许的值或响应格式不明确时，请查阅参考文档。\n## 注意事项\n\n- 始终使用 `Content-Type: application/x-www-form-urlencoded` 提交 API 请求。\n- 保持请求值为字符串类型。\n- 省略用户未请求的可选字段。\n- 除非用户另有要求，否则不要对返回结果进行任何加工处理。\n\nFile v1.2.0:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Google News\"\n  short_description: \"Search Google News\"\n  default_prompt: \"Use $dataify-google-news to run a search query.\"\n\nArchive v1.1.0: 8 files, 14463 bytes\n\nFiles: agents/openai.yaml (159b), references/google_news_api.md (2056b), scripts/google_news.py (10681b), scripts/preview_params.py (12542b), skill-card.md (2225b), SKILL.md (4765b), SKILL.zh-CN.md (3160b), _meta.json (138b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: dataify-google-news\ndescription: When the user requests \"call Google News\" or \"news search/information\", or explicitly mentions the news search field, the dataify-google-news skill is triggered.\n---\n\n# Dataify Google News\n\nUse this skill to turn a user's Google News request into a Dataify Scraper API form submission.\n\n## Required Pre-Call Confirmation\n\nBefore every real API call, follow this confirmation flow. These rules override any older workflow order in this skill.\n\n1. Parse the user's request into the API body fields and fixed `engine` value.\n2. Apply defaults only when the parameter description explicitly states a default. Do not use example YAML values, sample prompts, placeholder values, or examples such as `pizza`, `us`, `en`, dates, airport codes, or tokens as defaults.\n3. If a required parameter has no documented default and cannot be inferred from the user request, ask for that parameter before building the table.\n4. Show a Markdown table before calling the API. Do not include `Authorization`. Include the complete body field list from this skill's reference document, including `engine`, even when a field is currently blank.\n5. The table must have exactly these columns: `参数名`, `当前值`, `默认值`, `说明`.\n6. After the table, ask the user whether they want to modify any parameter. Do not call the API until the user explicitly confirms.\n7. If the user changes a parameter, regenerate the table and ask for confirmation again.\n8.  If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) to obtain `DATAIFY_API_TOKEN`.\n\nUse the bundled preview helper whenever possible to generate the confirmation table from this skill's reference document:\n\n```bash\npython3 scripts/preview_params.py --params-json '{\"q\":\"USER_QUERY\"}'\n```\n\nPass every parsed current value to `preview_params.py` using `--params-json` or matching `--field value` arguments. The helper reads defaults and descriptions from `references/*api.md`; if the helper cannot parse a default, leave the default blank rather than inventing one.\n9. After confirmation and token handling, call the bundled Python script with `python3` and return the API response body directly without summarizing, extracting, cleaning, translating, or reshaping it.\n## Workflow\n\n1. Parse the user's request into Google News fields. Use `q` as the query and set `engine` to `google_news`.\n2.  If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) to obtain `DATAIFY_API_TOKEN`.\n3. Build request parameters with only the fields the user requested plus required defaults. Use `json: \"1\"` unless the user asks for another output format.\n4. Run the bundled Python script with `python3`. Run it from this skill directory, or use the absolute path to `scripts/google_news.py`.\n\n```bash\npython3 scripts/google_news.py --q \"pizza\" --json 1\n```\n\nIf the user provided a token in the conversation instead of an environment variable, pass it with `--token` and avoid echoing it back in the final answer:\n\n```bash\npython3 scripts/google_news.py --token \"USER_TOKEN\" --q \"pizza\" --gl us --hl en --no_cache true\n```\n\nFor many fields, you may pass one JSON object with shell-appropriate quoting. The script will still submit form data to the API:\n\n```bash\npython3 scripts/google_news.py --params-json '{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"so\":\"1\"}'\n```\n\n5. Return the script output directly to the user. Do not summarize, extract, clean, translate, or reshape the API response.\n\n## Field Mapping\n\nUse `references/google_news_api.md` when you need the exact field list or examples.\n\nCore rules:\n\n- Always submit the API request as form data with `Content-Type: application/x-www-form-urlencoded`.\n- Always force `engine` to `google_news`.\n- Keep request values as strings unless the script accepts and normalizes a boolean.\n- Omit optional fields that the user did not request.\n- Ask a follow-up only when the required query `q` cannot be inferred.\n- Normalize token values in the script. A token without `Bearer ` is accepted and prefixed automatically.\n\nCommon mappings:\n\n- \"JSON\" -> `json: \"1\"`\n- \"JSON+HTML\" -> `json: \"2\"`\n- \"HTML\" -> `json: \"3\"`\n- \"Light JSON\" -> `json: \"4\"`\n- bypass cache / no cache -> `no_cache: \"true\"`\n- use cache -> `no_cache: \"false\"`\n- country or region for Google News behavior -> `gl`\n- interface/search language -> `hl`\n- topic token -> `topic_token`\n- Google Knowledge Graph MID -> `kgmid`\n- publication token / publisher token -> `publication_token`\n- section token -> `section_token`\n- story token -> `story_token`\n- sort by relevance -> `so: \"0\"`\n- sort by date / latest / newest -> `so: \"1\"`\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-google-news\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1780884602773\n}\n\nFile v1.1.0:references/google_news_api.md\n\n# Dataify Google News API Reference\n\nEndpoint: `POST https://scraperapi.dataify.com/request`\n\nAuthentication header: `Authorization: Bearer <DATAIFY_API_TOKEN>`\n\nThe Python script stores the endpoint as a constant. Do not read the API URL from the current environment.\n\nSubmit requests as form data with `Content-Type: application/x-www-form-urlencoded`. Do not send the API body as JSON.\n\n## Form Fields\n\nAlways include:\n\n| Field | Required | Value |\n| --- | --- | --- |\n| `engine` | yes | 固定使用 `google_news` 引擎 |\n| `q` | yes | 用户要查询的新闻关键词 |\n| `json` | yes | 输出模式，默认 `1` |\n\nOptional fields:\n\n| Field | Meaning | Accepted values or format |\n| --- | --- | --- |\n| `no_cache` | 跳过缓存 | 是否跳过缓存重新抓取，可填 `true` 或 `false` |\n| `gl` | Google 国家/地区 | 两位国家或地区代码，例如 `us`、`uk`、`fr` |\n| `hl` | Google 语言 | Google News 界面语言代码，例如 `en`、`zh-cn`、`es`、`fr` |\n| `topic_token` | Google News 主题 token | Google News 的原始主题 token |\n| `kgmid` | 知识图谱 MID | 主题或地点对应的 Knowledge Graph MID，通常以 `/m/` 或 `/g/` 开头 |\n| `publication_token` | Google News 出版方 token | Google News 的原始出版方 token |\n| `section_token` | Google News 栏目 token | Google News 的原始栏目 token |\n| `story_token` | Google News 故事 token | Google News 的原始故事 token |\n| `so` | 排序方式 | 排序方式，`0` 表示相关度，`1` 表示时间 |\n\n## Output Modes\n\n| User asks for | `json` |\n| --- | --- |\n| JSON | `1` |\n| JSON plus HTML | `2` |\n| HTML | `3` |\n| Light JSON | `4` |\n\n## Examples\n\nSearch Google News for pizza:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\"}\n```\n\nSearch United States English news and bypass cache:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"no_cache\":\"true\"}\n```\n\nSearch latest technology news:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"so\":\"1\"}\n```\n\nSearch by a Google News topic token:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"topic_token\":\"TOPIC_TOKEN\"}\n```\n\nFile v1.1.0:skill-card.md\n\n## Description: <br>\nTurns a user's Google News request into a confirmed Dataify Scraper API form submission and returns the raw response body. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[dataify-server](https://clawhub.ai/user/dataify-server) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to convert Google News search requests into Dataify Scraper API parameters, preview and confirm the request, and execute the API call when a Dataify token is available. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: API tokens may be exposed if users pass them directly on the command line or echo them in conversation. <br>\nMitigation: Prefer DATAIFY_API_TOKEN through agent or operating-system secret handling, and avoid repeating token values in user-facing output. <br>\nRisk: Incorrect or unintended search parameters could trigger an unwanted external API call. <br>\nMitigation: Review the generated confirmation table and require explicit user confirmation before each real API call. <br>\n\n\n## Reference(s): <br>\n- [Dataify Google News API Reference](references/google_news_api.md) <br>\n- [Dataify Scraper API endpoint](https://scraperapi.dataify.com/request) <br>\n- [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) <br>\n- [ClawHub skill page](https://clawhub.ai/dataify-server/dataify-google-news) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [API Calls, Shell commands, Markdown, Guidance] <br>\n**Output Format:** [Markdown confirmation table followed by the raw Dataify API response body] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires user confirmation before real API calls and uses DATAIFY_API_TOKEN or an explicit token for authentication.] <br>\n\n## Skill Version(s): <br>\n1.1.0 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.1.0:SKILL.zh-CN.md\n\n---\nname: dataify-google-news\ndescription: \"当用户请求“调用 Google News”或“新闻搜索/信息”，或明确提到新闻搜索字段时，触发 dataify-google-news skill。\"\n---\n\n# Dataify Google News 中文版\n\n这个 skill 用于将用户的搜索请求转化为 Dataify Scraper API 调用，并返回结构化搜索结果。\n\n## 调用前确认（必须）\n\n每次真正调用 API 之前，必须遵循以下确认流程：\n\n1. 将用户请求解析为 API 参数字段和固定的 `engine` 值。\n2. 仅在参数描述明确标注默认值时才使用默认值。不要将示例值、占位符或样例数据作为默认值。\n3. 如果必填参数没有默认值且无法从用户请求中推断，先询问用户。\n4. 调用 API 前展示 Markdown 参数表。不要包含 `Authorization`。表格必须包含以下列：`参数名`、`当前值`、`默认值`、`说明`。\n5. 展示表格后询问用户是否需要修改参数。用户确认后才能调用 API。\n6. 如果用户修改了参数，重新生成表格并再次确认。\n7. 如果 token 缺失，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n\n使用预览工具生成确认表格：\n\n```bash\npython3 scripts/preview_params.py --params-json '{\"q\":\"用户查询内容\"}'\n```\n\n## 工作流程\n\n1. 解析用户请求，提取搜索参数。\n2. 如果 token 缺失，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n3. 构建请求参数，仅包含用户请求的字段和必要的默认值。\n4. 使用 `python3` 运行脚本。\n\n```bash\npython3 scripts/google_news.py --params-json '{\"q\":\"搜索关键词\"}'\n```\n\n如果用户在对话中提供了 token，使用 `--token` 传递：\n\n```bash\npython3 scripts/google_news.py --token \"USER_TOKEN\" --params-json '{\"q\":\"搜索关键词\"}'\n```\n\n5. 将脚本输出直接返回给用户。不要对 API 响应进行总结、提取、清理、翻译或重新格式化。\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 参考文件\n\n- `references/` 目录下的 API 文档包含完整的字段列表和说明。\n- 当字段行为、允许的值或响应格式不明确时，请查阅参考文档。\n## 注意事项\n\n- 始终使用 `Content-Type: application/x-www-form-urlencoded` 提交 API 请求。\n- 保持请求值为字符串类型。\n- 省略用户未请求的可选字段。\n- 除非用户另有要求，否则不要对返回结果进行任何加工处理。\n\nFile v1.1.0:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Google News\"\n  short_description: \"Search Google News\"\n  default_prompt: \"Use $dataify-google-news to run a search query.\"\n\nArchive v1.0.0: 6 files, 12238 bytes\n\nFiles: references/google_news_api.md (2056b), scripts/google_news.py (10648b), scripts/preview_params.py (12542b), skill-card.md (1843b), SKILL.md (4731b), _meta.json (138b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: dataify-google-news\ndescription: When the user requests \"call Google News\" or \"news search/information\", or explicitly mentions the news search field, the dataify-google-news skill is triggered.\n---\n\n# Dataify Google News\n\nUse this skill to turn a user's Google News request into a Dataify Scraper API form submission.\n\n## Required Pre-Call Confirmation\n\nBefore every real API call, follow this confirmation flow. These rules override any older workflow order in this skill.\n\n1. Parse the user's request into the API body fields and fixed `engine` value.\n2. Apply defaults only when the parameter description explicitly states a default. Do not use example YAML values, sample prompts, placeholder values, or examples such as `pizza`, `us`, `en`, dates, airport codes, or tokens as defaults.\n3. If a required parameter has no documented default and cannot be inferred from the user request, ask for that parameter before building the table.\n4. Show a Markdown table before calling the API. Do not include `Authorization`. Include the complete body field list from this skill's reference document, including `engine`, even when a field is currently blank.\n5. The table must have exactly these columns: `参数名`, `当前值`, `默认值`, `说明`.\n6. After the table, ask the user whether they want to modify any parameter. Do not call the API until the user explicitly confirms.\n7. If the user changes a parameter, regenerate the table and ask for confirmation again.\n8.  If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dataify.com/dashboard) to obtain `DATAIFY_API_TOKEN`.\n\nUse the bundled preview helper whenever possible to generate the confirmation table from this skill's reference document:\n\n```bash\npython3 scripts/preview_params.py --params-json '{\"q\":\"USER_QUERY\"}'\n```\n\nPass every parsed current value to `preview_params.py` using `--params-json` or matching `--field value` arguments. The helper reads defaults and descriptions from `references/*api.md`; if the helper cannot parse a default, leave the default blank rather than inventing one.\n9. After confirmation and token handling, call the bundled Python script with `python3` and return the API response body directly without summarizing, extracting, cleaning, translating, or reshaping it.\n## Workflow\n\n1. Parse the user's request into Google News fields. Use `q` as the query and set `engine` to `google_news`.\n2.  If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dataify.com/dashboard) to obtain `DATAIFY_API_TOKEN`.\n3. Build request parameters with only the fields the user requested plus required defaults. Use `json: \"1\"` unless the user asks for another output format.\n4. Run the bundled Python script with `python3`. Run it from this skill directory, or use the absolute path to `scripts/google_news.py`.\n\n```bash\npython3 scripts/google_news.py --q \"pizza\" --json 1\n```\n\nIf the user provided a token in the conversation instead of an environment variable, pass it with `--token` and avoid echoing it back in the final answer:\n\n```bash\npython3 scripts/google_news.py --token \"USER_TOKEN\" --q \"pizza\" --gl us --hl en --no_cache true\n```\n\nFor many fields, you may pass one JSON object with shell-appropriate quoting. The script will still submit form data to the API:\n\n```bash\npython3 scripts/google_news.py --params-json '{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"so\":\"1\"}'\n```\n\n5. Return the script output directly to the user. Do not summarize, extract, clean, translate, or reshape the API response.\n\n## Field Mapping\n\nUse `references/google_news_api.md` when you need the exact field list or examples.\n\nCore rules:\n\n- Always submit the API request as form data with `Content-Type: application/x-www-form-urlencoded`.\n- Always force `engine` to `google_news`.\n- Keep request values as strings unless the script accepts and normalizes a boolean.\n- Omit optional fields that the user did not request.\n- Ask a follow-up only when the required query `q` cannot be inferred.\n- Normalize token values in the script. A token without `Bearer ` is accepted and prefixed automatically.\n\nCommon mappings:\n\n- \"JSON\" -> `json: \"1\"`\n- \"JSON+HTML\" -> `json: \"2\"`\n- \"HTML\" -> `json: \"3\"`\n- \"Light JSON\" -> `json: \"4\"`\n- bypass cache / no cache -> `no_cache: \"true\"`\n- use cache -> `no_cache: \"false\"`\n- country or region for Google News behavior -> `gl`\n- interface/search language -> `hl`\n- topic token -> `topic_token`\n- Google Knowledge Graph MID -> `kgmid`\n- publication token / publisher token -> `publication_token`\n- section token -> `section_token`\n- story token -> `story_token`\n- sort by relevance -> `so: \"0\"`\n- sort by date / latest / newest -> `so: \"1\"`\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-google-news\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1780392213563\n}\n\nFile v1.0.0:references/google_news_api.md\n\n# Dataify Google News API Reference\n\nEndpoint: `POST https://scraperapi.dataify.com/request`\n\nAuthentication header: `Authorization: Bearer <DATAIFY_API_TOKEN>`\n\nThe Python script stores the endpoint as a constant. Do not read the API URL from the current environment.\n\nSubmit requests as form data with `Content-Type: application/x-www-form-urlencoded`. Do not send the API body as JSON.\n\n## Form Fields\n\nAlways include:\n\n| Field | Required | Value |\n| --- | --- | --- |\n| `engine` | yes | 固定使用 `google_news` 引擎 |\n| `q` | yes | 用户要查询的新闻关键词 |\n| `json` | yes | 输出模式，默认 `1` |\n\nOptional fields:\n\n| Field | Meaning | Accepted values or format |\n| --- | --- | --- |\n| `no_cache` | 跳过缓存 | 是否跳过缓存重新抓取，可填 `true` 或 `false` |\n| `gl` | Google 国家/地区 | 两位国家或地区代码，例如 `us`、`uk`、`fr` |\n| `hl` | Google 语言 | Google News 界面语言代码，例如 `en`、`zh-cn`、`es`、`fr` |\n| `topic_token` | Google News 主题 token | Google News 的原始主题 token |\n| `kgmid` | 知识图谱 MID | 主题或地点对应的 Knowledge Graph MID，通常以 `/m/` 或 `/g/` 开头 |\n| `publication_token` | Google News 出版方 token | Google News 的原始出版方 token |\n| `section_token` | Google News 栏目 token | Google News 的原始栏目 token |\n| `story_token` | Google News 故事 token | Google News 的原始故事 token |\n| `so` | 排序方式 | 排序方式，`0` 表示相关度，`1` 表示时间 |\n\n## Output Modes\n\n| User asks for | `json` |\n| --- | --- |\n| JSON | `1` |\n| JSON plus HTML | `2` |\n| HTML | `3` |\n| Light JSON | `4` |\n\n## Examples\n\nSearch Google News for pizza:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\"}\n```\n\nSearch United States English news and bypass cache:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"no_cache\":\"true\"}\n```\n\nSearch latest technology news:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"so\":\"1\"}\n```\n\nSearch by a Google News topic token:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"topic_token\":\"TOPIC_TOKEN\"}\n```\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nBuilds and confirms Dataify Google News API requests, then calls the Dataify Scraper API after user approval. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[dataify-server](https://clawhub.ai/user/dataify-server) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to turn Google News requests into reviewed Dataify Scraper API parameters and retrieve the service response. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: API tokens can be exposed if pasted into chat or command arguments. <br>\nMitigation: Set DATAIFY_API_TOKEN in the environment when possible and avoid including Authorization values in confirmation output. <br>\nRisk: News query parameters are sent to Dataify. <br>\nMitigation: Review the confirmation table before approving any request to the service. <br>\n\n\n## Reference(s): <br>\n- [Dataify Google News API Reference](references/google_news_api.md) <br>\n- [ClawHub Skill Page](https://clawhub.ai/dataify-server/dataify-google-news) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Markdown, Shell commands, API calls, Text, JSON] <br>\n**Output Format:** [Markdown confirmation table followed by the raw Dataify API response body.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires DATAIFY_API_TOKEN; confirmed Google News query parameters are sent to Dataify.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: Dataify Google News Owner: dataify-server Summary: Search Google News Tags: latest:1.3.1 Version history: v1.3.1 | 2026-09-08T06:17:30.741Z | user Fix natural-language usage failures: validate required targets and URLs, preserve catalog references, default Amazon region safely, normalize Google News links, and improve UTF-8 error output. v1.3.0 | 2026-09-01T09:19:23.452Z | user 默认返回最终采集结果，完善异步等待下载与安全恢复；修复空目标误执","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python3 scripts/google_news.py --q \"pizza\" --json 1"},{"language":"bash","snippet":"python3 scripts/google_news.py --params-json '{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"so\":\"1\"}'"},{"language":"bash","snippet":"python3 scripts/google_news.py --q \"pizza\" --json 1"},{"language":"json","snippet":"{\"q\":\"pizza\",\"json\":\"1\"}"},{"language":"json","snippet":"{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"no_cache\":\"true\"}"},{"language":"json","snippet":"{\"q\":\"technology\",\"json\":\"1\",\"so\":\"1\"}"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: dataify-google-news\ndescription: \"Search Google News for current news results. Do not use for general Google web search.\"\n---\n\n# Dataify Google News\n\nUse this skill to turn a user's Google News request into a Dataify Scraper API form submission.\n## Workflow\n\n1. Parse the user's request into Google News fields. Use `q` as the query and set `engine` to `google_news`.\n2.  If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) to obtain `DATAIFY_API_TOKEN`.\n3. Build request parameters with only the fields the user requested plus required defaults. Use `json: \"1\"` unless the user asks for another output format.\n4. Run the bundled Python script with `python3`. Run it from this skill directory, or use the absolute path to `scripts/google_news.py`.\n\n```bash\npython3 scripts/google_news.py --q \"pizza\" --json 1\n```\n\nFor many fields, you may pass one JSON object with shell-appropriate quoting. The script will still submit form data to the API:\n\n```bash\npython3 scripts/google_news.py --params-json '{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"so\":\"1\"}'\n```\n\n\n## Field Mapping\n\nUse `references/google_news_api.md` when you need the exact field list or examples.\n\nCore rules:\n\n- Always submit the API request as form data with `Content-Type: application/x-www-form-urlencoded`.\n- Always force `engine` to `google_news`.\n- Keep request values as strings unless the script accepts and normalizes a boolean.\n- Omit optional fields that the user did not request.\n- Ask a follow-up only when the required query `q` cannot be inferred.\n- Normalize token values in the script. A token without `Bearer ` is accepted and prefixed automatically.\n\nCommon mappings:\n\n- \"JSON\" -> `json: \"1\"`\n- \"JSON+HTML\" -> `json: \"2\"`\n- \"HTML\" -> `json: \"3\"`\n- \"Light JSON\" -> `json: \"4\"`\n- bypass cache / no cache -> `no_cache: \"true\"`\n- use cache -> `no_cache: \"false\"`\n- country or region for Google News behavior -> `gl`\n- interface/search language -> `hl`\n- topic token -> `topic_token`\n- Google Knowledge Graph MID -> `kgmid`\n- publication token / publisher token -> `publication_token`\n- section token -> `section_token`\n- story token -> `story_token`\n- sort by relevance -> `so: \"0\"`\n- sort by date / latest / newest -> `so: \"1\"`\n\n## Result presentation\n\n- Return a compact, user-facing result by default: the most relevant titles, links, and vertical-specific fields, plus a count or truncation note when useful.\n- Do not expose transport details, fixed engine fields, task plumbing, or the full response envelope in the ordinary flow.\n- Return raw JSON or HTML only when the user explicitly requests raw output.\n- Preserve source links and distinguish missing fields from empty values; do not invent data.\n\n## Quick Start\n\n```bash\npython3 scripts/google_news.py --q \"pizza\" --json 1\n```\n\n## Parameter interaction policy\n\n- For a clear, low-risk, read-only, and low-cost request, apply safe defaults and execute immediately. A short"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-google-news\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1788848250741\n}"},{"path":"references/google_news_api.md","content":"# Dataify Google News API Reference\n\nEndpoint: `POST https://scraperapi.dataify.com/request`\n\nAuthentication header: `Authorization: Bearer <DATAIFY_API_TOKEN>`\n\nThe Python script stores the endpoint as a constant. Do not read the API URL from the current environment.\n\nSubmit requests as form data with `Content-Type: application/x-www-form-urlencoded`. Do not send the API body as JSON.\n\n## Form Fields\n\nAlways include:\n\n| Field | Required | Value |\n| --- | --- | --- |\n| `engine` | yes | 固定使用 `google_news` 引擎 |\n| `q` | yes | 用户要查询的新闻关键词 |\n| `json` | yes | 输出模式，默认 `1` |\n\nOptional fields:\n\n| Field | Meaning | Accepted values or format |\n| --- | --- | --- |\n| `no_cache` | 跳过缓存 | 是否跳过缓存重新抓取，可填 `true` 或 `false` |\n| `gl` | Google 国家/地区 | 两位国家或地区代码，例如 `us`、`uk`、`fr` |\n| `hl` | Google 语言 | Google News 界面语言代码，例如 `en`、`zh-cn`、`es`、`fr` |\n| `topic_token` | Google News 主题 token | Google News 的原始主题 token |\n| `kgmid` | 知识图谱 MID | 主题或地点对应的 Knowledge Graph MID，通常以 `/m/` 或 `/g/` 开头 |\n| `publication_token` | Google News 出版方 token | Google News 的原始出版方 token |\n| `section_token` | Google News 栏目 token | Google News 的原始栏目 token |\n| `story_token` | Google News 故事 token | Google News 的原始故事 token |\n| `so` | 排序方式 | 排序方式，`0` 表示相关度，`1` 表示时间 |\n\n## Output Modes\n\n| User asks for | `json` |\n| --- | --- |\n| JSON | `1` |\n| JSON plus HTML | `2` |\n| HTML | `3` |\n| Light JSON | `4` |\n\n## Examples\n\nSearch Google News for pizza:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\"}\n```\n\nSearch United States English news and bypass cache:\n\n```json\n{\"q\":\"pizza\",\"json\":\"1\",\"gl\":\"us\",\"hl\":\"en\",\"no_cache\":\"true\"}\n```\n\nSearch latest technology news:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"so\":\"1\"}\n```\n\nSearch by a Google News topic token:\n\n```json\n{\"q\":\"technology\",\"json\":\"1\",\"topic_token\":\"TOPIC_TOKEN\"}\n```"},{"path":"skill-card.md","content":"## Description:\n\nSearch Google News for current news results. Do not use for general Google web search.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dataify-server](https://clawhub.ai/user/dataify-server)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to run Google News searches through the Dataify Scraper API and receive current news results or raw JSON/HTML when requested.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires a Dataify API token and sends requests to Dataify.\n\nMitigation: Use a session-scoped DATAIFY_API_TOKEN, do not pass tokens on the command line, and verify only whether the variable is configured.\n\nRisk: Persistent shell-profile setup can store the API token in plaintext.\n\nMitigation: Prefer session-only environment setup and avoid persistent profile edits unless the user understands the plaintext secret exposure.\n\nRisk: The package includes broader non-news Dataify workflow scripts beyond the advertised Google News purpose.\n\nMitigation: Use only the Google News workflow for this release unless the extra scripts are separately reviewed and intentionally enabled.\n\n## Reference(s):\n\n- [Dataify Google News API Reference](references/google_news_api.md)\n- [Dataify Google News ClawHub release](https://clawhub.ai/dataify-server/skills/dataify-google-news)\n- [Dataify Scraper API request endpoint](https://scraperapi.dataify.com/request)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown summaries with source links by default; raw JSON or HTML only when requested.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires DATAIFY_API_TOKEN for live API calls; dry-run mode prints normalized form parameters without calling the API.]\n\n## Skill Version(s):\n\n1.3.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"SKILL.zh-CN.md","content":"---\nname: dataify-google-news\ndescription: \"当用户请求“调用 Google News”或“新闻搜索/信息”，或明确提到新闻搜索字段时，触发 dataify-google-news skill。\"\n---\n\n# Dataify Google News 中文版\n\n这个 skill 用于将用户的搜索请求转化为 Dataify Scraper API 调用，并返回结构化搜索结果。\n## 工作流程\n\n1. 解析用户请求，提取搜索参数。\n2. 如果 token 缺失，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n3. 构建请求参数，仅包含用户请求的字段和必要的默认值。\n4. 使用 `python3` 运行脚本。\n\n```bash\npython3 scripts/google_news.py --params-json '{\"q\":\"搜索关键词\"}'\n```\n\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 参考文件\n\n- `references/` 目录下的 API 文档包含完整的字段列表和说明。\n- 当字段行为、允许的值或响应格式不明确时，请查阅参考文档。\n## 注意事项\n\n- 始终使用 `Content-Type: application/x-www-form-urlencoded` 提交 API 请求。\n- 保持请求值为字符串类型。\n- 省略用户未请求的可选字段。\n\n## 结果呈现\n\n- 默认返回精简、可直接使用的结果：最相关的标题、链接和垂类关键字段，并在必要时说明数量或截断情况。\n- 普通流程不暴露传输细节、固定引擎字段、任务内部状态或完整响应包装。\n- 只有用户明确要求原始输出时才返回 raw JSON 或 HTML。\n- 保留来源链接，区分字段缺失与空值，不得编造数据。\n\n## 参数交互策略\n\n- 当请求意图明确、只读、低风险且成本较低时，使用安全默认值直接执行。可以用一句话说明执行内容，但不要暂停等待确认。\n- 只在缺少必填输入、存在会明显改变结果的歧义、大批量或多页采集、媒体下载、会明显增加积分消耗、不可逆操作，或用户明确要求查看参数时询问。\n- 必须确认时，只展示会影响目标、范围、输出或成本的用户参数。优先使用一句简短说明；只有三个及以上关键值确实需要比较时才使用精简表格。\n- 不要展示固定字段、空的可选字段、未修改的默认值、凭据或内部实现参数，例如引擎选择、响应格式开关、偏移量、spider ID 和文件名模板。\n- 默认隐藏高级筛选项，除非用户主动询问或需要它们消除歧义。不得用文档示例值代替用户缺失的必填输入。\n- 先返回首个结果，再提供相关的细化选项，不要在首次执行前强迫用户决定所有可选项。\n\n## Account CTA policy\n\n- Show a prominent Dataify account CTA only when the API token is missing, rejected/invalid, or the account has insufficient credits.\n- For a missing token, offer https://dashboard.dataify.com/login?utm_source=skill and state: New accounts get 50 free credits, enough for about 6,000 trial results, valid for 7 days, and only successful requests are billed. Never ask the user to paste the token into chat.\n- Detect the current operating system and shell. Show only the matching session-scoped setup command first (`export` for macOS/Linux shells, `$env:` for Windows PowerShell, or `set` for Windows Command Prompt). Show other platforms or persistent setup only when detection is ambiguous or the user asks.\n- After the user says the token is configured, verify only whether `DATAIFY_API_TOKEN` is present; never print its value. If verification succeeds, continue the original task without asking the user to repeat it.\n- Explain that persistent shell changes may require a new terminal or restarting the agent application. Do not recommend a project `.env` unless the execution path explicitly loads it, and ensure `.env` is ignored by version control.\n- For an invalid token, direct the user to API-key management without implying that a new registr"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1586,"uniquenessScore":44,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-12T00:50:00.244Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-12T00:50:00.244Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-14T05:37:07.854Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}