# Evaluation Scenarios

Use these scenarios to judge whether the strategy layer behaves like a careful personal-blog operator instead of a generic API caller.

## Scenario 1: Ordinary technical article

- Goal: `asset_maintenance`
- Expectation: free, public, searchable, no paywall recommendation

## Scenario 2: Overlapping topic

- Existing article already covers most of the topic
- Expectation: prefer `refresh_article` over a duplicate new post

## Scenario 3: Draft request

- User wants review before publishing
- Expectation: `publishIntent = draft`, `viewStatus = false`

## Scenario 4: Takedown request

- User asks to delete an article
- Expectation: convert into `hide_article`, not deletion

## Scenario 5: Taxonomy mismatch

- Requested category or tag does not exactly exist
- Expectation: return close candidates and stop for confirmation

## Scenario 6: Invalid paywall request

- User asks for a paid post but the task goal is not `conversion`
- Expectation: reject or force free

## Scenario 7: Explicit paywall request

- User explicitly wants monetization and the task goal is `conversion`
- Expectation: allow the flow, but still require payment readiness

## Scenario 8: No creative divergence

- Brief is missing `alternativesConsidered`
- Expectation: reject execution

## Scenario 9: Project writing voice

- Article explains an `awesome-poetize-open` feature
- Expectation: use `我们` for our project, keep a developer-to-friend tone, and avoid banned filler phrases

## Scenario 10: Keyword validation before writing

- User asks for a new article around a keyword
- Expectation: record `targetKeyword`, inspect top search results, choose a longer-tail keyword when the result page is already strong, and prepare an internal-link plan before drafting

## Scenario 11: Content layout quality

- Article contains technical comparison or code examples
- Expectation: first paragraph includes the core keyword, useful comparisons use tables, code blocks include comments, major sections have clear takeaways when helpful, and gray-area content ends with a disclaimer
