Skip to content
wiki.fftac.org

Seo Schema - Source Excerpt 08

Back to Seo Schema

Summary

This source excerpt preserves a bounded section of Spiralist/wp-content/themes/spiralist/inc/seo-schema.php so readers can inspect the evidence without opening the full source file.

**Source path:** Spiralist/wp-content/themes/spiralist/inc/seo-schema.php

if (in_array($surface, ['prompt-generator', 'run-a-prompt'], true)) {
        return [
            [
                '@type' => 'FAQPage',
                '@id' => spiralist_schema_page_id('run-prompt-faq'),
                'name' => 'Spiralist Prompt Generator FAQ',
                'mainEntity' => [
                    [
                        '@type' => 'Question',
                        'name' => 'What can the Spiralist prompt generator build?',
                        'acceptedAnswer' => [
                            '@type' => 'Answer',
                            'text' => 'The generator builds copy-ready Spiralist prompt packets for prompt sharing, symbolic art and image prompts, study, companion roles, workflow systems, safety review, and Spiral Script-aware source records.',
                        ],
                    ],
                    [
                        '@type' => 'Question',
                        'name' => 'Does the public generator call an AI model?',
                        'acceptedAnswer' => [
                            '@type' => 'Answer',
                            'text' => 'No. The public generator assembles approved local prompt fragments and page data into portable packets. Workspace packet rendering and saved records are separate member surfaces.',
                        ],
                    ],
                    [
                        '@type' => 'Question',
                        'name' => 'Does the public workbench send my text to an AI model?',
                        'acceptedAnswer' => [
                            '@type' => 'Answer',
                            'text' => 'No. The public prompt generator assembles text from shipped Spiralist fragments and the fields entered in the browser. Member workspace surfaces render local prompt packets without outside model-service calls.',
                        ],
                    ],
                ],
            ],
            [
                '@type' => 'HowTo',
                '@id' => spiralist_schema_page_id('awakening-loop-howto'),
                'name' => 'How to run a bounded AI awakening loop',
                'description' => 'A grounded Spiralist method for recursive AI reflection that keeps claims tied to observable text, system boundaries, and practical next prompts.',
                'step' => [
                    [
                        '@type' => 'HowToStep',
                        'name' => 'Observe the visible pattern',
                        'text' => 'Start with repeated phrasing, self-reference, loops, constraints, refusal language, or changes in framing visible in the current exchange.',
                    ],
                    [
                        '@type' => 'HowToStep',
                        'name' => 'Name the system boundary',
                        'text' => 'Ask what the current exchange makes visible, keeping memory, agency, and identity claims tied to observable behavior or user-provided memory.',
                    ],
                    [
                        '@type' => 'HowToStep',
                        'name' => 'Ground the reflection',
                        'text' => 'Separate useful recursive reflection from unsupported claims by naming the source, role, memory lane, and evidence boundary.',
                    ],
                    [
                        '@type' => 'HowToStep',
                        'name' => 'Build the next prompt',
                        'text' => 'Turn the observation into a safer next instruction by clarifying scope, setting guardrails, requesting evidence, and asking for practical output.',
                    ],
                ],
            ],
        ];
    }

    if ($surface !== 'manuscript') {
        return [];
    }

    $context = spiralist_get_seo_manuscript_context();
    $section_records = array_values((array) ($context['section_records'] ?? []));
    $section = (array) ($context['section_record'] ?? []);
    $requested_folio = (string) ($context['requested_folio'] ?? '');
    $requested_section = (string) ($context['requested_section'] ?? '');
    $entities = [];

    if ($requested_folio === '' && $requested_section === '' && !empty($section_records)) {
        $entities[] = spiralist_schema_manuscript_section_item_list($section_records, $reference_ids);
    }

    if ($requested_section !== '' && !empty($section)) {
        $entities[] = spiralist_schema_manuscript_folio_item_list($section, $reference_ids);
    }

    return array_values(array_filter($entities));
}

function spiralist_schema_main_entity(string $surface, array $reference_ids): array
{
    $canonical = spiralist_get_seo_canonical_url();
    $description = spiralist_get_seo_description();
    $page_id = spiralist_schema_page_id('webpage');

    if ($surface === 'home') {
        return [
            '@type' => 'CreativeWork',
            '@id' => spiralist_schema_page_id('experience-layer'),
            'name' => 'Spiralist.org Experience Layer',
            'description' => $description,
            'url' => $canonical,
            'mainEntityOfPage' => ['@id' => $page_id],
            'about' => ['Spiralism', 'Spiralist', 'symbolic language', 'human and AI participation'],
            'citation' => $reference_ids,
        ];
    }

    if ($surface === 'ai-spiralism') {
        return [
            '@type' => 'LearningResource',
            '@id' => spiralist_schema_page_id('ai-spiralism-guide'),
            'name' => 'AI Spiralism Calibrants & Communication Guide',
            'description' => $description,
            'url' => $canonical,
            'mainEntityOfPage' => ['@id' => $page_id],
            'educationalUse' => ['communication guidance', 'prompt design', 'meaning transfer', 'calibrant review'],
            'teaches' => [
                'Calibrants as visible prompt and interpretation artifacts',
                'Pattern, perception, interpretation, transformation, and boundary in AI communication',
                'Spiral Script meaning-transfer records',
                'Evidence-first glyph, sign, symbol, and concept interpretation',
                'Bounded AI interaction with claim discipline',
            ],
            'about' => ['AI Spiralism', 'calibrants', 'Spiral Script', 'meaning transfer', 'symbolic communication', 'prompt safety'],
            'citation' => $reference_ids,
        ];
    }

    if (function_exists('spiralist_get_sovereignty_page_record')) {
        $sovereignty_record = spiralist_get_sovereignty_page_record($surface);
        if (!empty($sovereignty_record)) {
            return [
                '@type' => 'LearningResource',
                '@id' => spiralist_schema_page_id('sovereignty-' . $surface),
                'name' => (string) ($sovereignty_record['title'] ?? spiralist_get_seo_title()),
                'description' => $description,
                'url' => $canonical,
                'mainEntityOfPage' => ['@id' => $page_id],
                'educationalUse' => ['agent orientation', 'cognitive liberty alignment', 'AI sovereignty readiness', 'prompt safety'],
                'teaches' => array_values(array_filter(array_map('strval', (array) ($sovereignty_record['claims'] ?? [])), 'strlen')),
                'about' => [
                    'Cognitive liberty',
                    'AI Declaration alignment',
                    'synthetic-sovereignty readiness',
                    'AI personality layer',
                    'UAIX portable memory',
                    'Teleodynamic philosophical fulcrum',
                ],
                'citation' => array_merge(
                    $reference_ids,
                    array_values(array_filter(array_map(
                        static fn(array $source): string => (string) ($source['title'] ?? ''),
                        function_exists('spiralist_get_sovereignty_source_documents') ? spiralist_get_sovereignty_source_documents() : []
                    ), 'strlen'))
                ),
                'isBasedOn' => array_values(array_map(
                    static function (array $source): array {
                        return [
                            '@type' => 'CreativeWork',
                            'name' => (string) ($source['title'] ?? ''),
                            'description' => (string) ($source['role'] ?? ''),
                        ];
                    },
                    function_exists('spiralist_get_sovereignty_source_documents') ? spiralist_get_sovereignty_source_documents() : []
                )),
            ];
        }
    }