felo-inc/felo-skills

felo-landingpage

Generate landing pages/webpages with the Felo Landing Page Task API in Claude Code.

First seen Apr 29, 2026

Installation

$ npx skills add felo-inc/felo-skills --skill felo-landingpage

Summary

  • Generate landing pages/webpages with the Felo Landing Page Task API in Claude Code.
  • Use when users ask to create/make/generate a landing page, marketing page, single-page website, AI webpage, HTML page result, or when explicit commands like /felo-landingpage are used.
  • Handles API key check, task creation, polling shared task history, and final ai_page_html output.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from felo-inc/felo-skills · top by installs.

npx skills add felo-inc/felo-skills

Browse all from felo-inc/felo-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 242
License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,787 B
  • docs SUMMARY.md 390 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 55 installs

SKILL.md

Felo Landing Page Skill

When to Use

Trigger this skill for requests about creating generated webpages:

  • Create/generate a landing page from a topic, product, feature, or campaign brief
  • Turn a marketing description into a shareable single-page website
  • Build an AI webpage and return the final hosted HTML result URL
  • Generate a web page directly without follow-up questions when the user asks for immediate output

Trigger keywords:

  • Chinese prompts about landing pages or webpages: 着陆页, 落地页, 官网页, 单页网站, 网页, HTML 页面
  • English: landing page, marketing page, single-page website, webpage, AI page, HTML page
  • Explicit commands: /felo-landingpage, "use felo landing page"

Do NOT use this skill for:

  • Presentation/PPT generation (use felo-slides)
  • Mindmap generation (use felo-mindmap)
  • Real-time information lookup only (use felo-search)
  • Editing local website source files unless the user explicitly asks for local code changes

Setup

1. Get API key

  1. Visit felo.ai
  2. Open Settings -> API Keys
  3. Create and copy your API key

2. Configure environment variable

Linux/macOS:

export FELO_API_KEY="your-api-key-here"

Windows PowerShell:

$env:FELO_API_KEY="your-api-key-here"

How to Execute

Use Bash tool commands and follow this workflow exactly.

Step 1: Precheck API key

if [ -z "$FELO_API_KEY" ]; then
  echo "ERROR: FELO_API_KEY not set"
  exit 1
fi

If the key is missing, stop and return setup instructions.

Step 2: Run Node Script (create + poll)

Use the bundled script (no jq dependency):

node felo-landingpage/scripts/run_landingpage_task.mjs \
  --query "USER_PROMPT_HERE" \
  --interval 10 \
  --max-wait 1800 \
  --timeout 60

For best results, include a direct-generation instruction in the query when the user has not provided one:

In all cases, generate the webpage directly and do not ask any follow-up questions.

To resume polling an existing task without creating a duplicate landing page:

node felo-landingpage/scripts/run_landingpage_task.mjs \
  --task-id "TASK_ID_HERE" \
  --interval 10 \
  --max-wait 1800

Script behavior:

Optional debug output:

node felo-landingpage/scripts/run_landingpage_task.mjs \
  --query "USER_PROMPT_HERE" \
  --interval 10 \
  --max-wait 1800 \
  --json \
  --verbose

This outputs structured JSON including:

  • task_id
  • task_status
  • aipagehtml
  • pptbizid
  • ppt_url
  • error_message

Step 3: Return structured result

On success, return:

  • aipagehtml immediately (script default output)
  • if --json is used, also include task_id, terminal status, and optional metadata

Output Format

Use this response structure:

## Landing Page Generation Result

- Task ID: <task_id>
- Status: <status>
- HTML URL: <ai_page_html>
- PPT Biz ID: <ppt_biz_id or N/A>
- PPT URL: <ppt_url or N/A>

Error format:

## Landing Page Generation Failed

- Error Type: <error code or category>
- Message: <readable message>
- Suggested Action: <next step>

Open API Workflow

Use only the public Open API endpoints:

  1. Create task: POST /v2/landing_page
  2. Read data.task_id
  3. Poll result: GET /v2/tasks/{task_id}/historical
  4. Continue polling while task_status == RUNNING or another non-terminal status
  5. When taskstatus == COMPLETED, use data.aipage_html as the final webpage result URL

Authentication uses the user's Felo API key:

Authorization: Bearer <user_api_key>

Historical lookup currently reuses the shared task history shape, so pptbizid and ppturl may still appear alongside aipage_html.

Error Handling

Known/expected failures:

  • INVALIDAPIKEY or HTTP 401: key invalid or revoked
  • Create task response missing task_id: API shape changed or task creation failed
  • Completed task missing aipagehtml: query history again with --task-id, or report the task ID
  • Timeout reached: return last known status and the task_id so the user can resume later

Timeout handling:

  • If timeout is reached, return the last known status and instruct the user to retry later
  • Include task_id so the user can query again
  • To resume a timed-out task, use --task-id instead of --query to avoid creating a duplicate landing page

Important Notes

  • Always execute this skill when user intent is landing page or generated webpage creation.
  • Always return task_id so follow-up queries can continue from the same task.
  • Do not claim completion without a terminal status.
  • Use aipagehtml as the final result; ppt_url is legacy/shared history metadata, not the landing page output.
  • Keep API calls minimal: create once, then poll.

References