, i.e. AFTER this script executes, so the query returned null
// on every prerendered page and the classifier stamped
// "noindex, follow" into the DOM of real, unique pages. The prerenderer
// now stamps data-prerendered="1" on , which exists before any
// script runs. The canonical check is kept as a secondary guard.
var docEl = document.documentElement;
if (docEl && docEl.getAttribute('data-prerendered') === '1') return;
if (document.querySelector('link[rel="canonical"]')) return;
var origin = 'https://terraincognitaacademy.com';
var path = location.pathname || '/';
var malformedAbsoluteTarget = null;
try { path = decodeURIComponent(path); } catch (_) {}
path = path.replace(/^\/+https?:\/+((www\.)?terraincognitaacademy\.com)(?=\/|$)/i, function(){
malformedAbsoluteTarget = true;
return '';
});
if (!path) path = '/';
if (path.length > 1) path = path.replace(/\/+$/, '');
var canonical = origin + path;
// Routes that must NEVER be indexed (private/auth-gated/redirect aliases).
var NOINDEX_PREFIXES = [
'/spell-launcher','/instructor/apply','/course-finder','/dashboard','/admin',
'/checkout','/cart','/auth','/login','/signup','/messages','/profile/edit',
'/profile/settings','/settings','/student','/achievements','/my-invoices',
'/forum/new-topic','/forum/bookmarks','/instructor/earnings','/instructor/analytics',
'/instructor/courses','/instructor/content-library','/category-management',
'/gift-success','/claim-gift','/shop/success','/shop/download','/install','/search',
'/spirit-alignment-codex/result','/directory/manage','/directory/search'
];
// Legacy aliases that must canonicalize to current URLs (and stay noindex on the alias itself).
var REDIRECT_MAP = {
'/course-finder': '/spirit-alignment-codex',
'/your-path-assistant': '/spirit-alignment-codex',
'/spiritual-path-assistant': '/spirit-alignment-codex',
'/spirit-codex': '/spirit-alignment-codex',
'/codex': '/spirit-alignment-codex',
'/spirit-encyclopedia': '/encyclopedia',
'/ritual-design-system': '/rituals',
'/blog-posts': '/blog',
'/power-points': '/spiritual-world',
'/temple-teachings': '/forum',
'/affiliate': '/ambassador',
'/affiliates': '/ambassador',
'/affiliate/register': '/ambassador',
'/category/free': '/courses/category/free-spiritual-courses',
'/spiritual-development/usa': '/spiritual-development/united-states',
'/spiritual-development/uk': '/spiritual-development/united-kingdom',
'/spiritual-development/uae': '/spiritual-development/united-arab-emirates'
};
// Hub/listing routes that share filesystem space with item children
// (e.g. /courses cannot exist as a static file because dist/courses/
// is a directory). Inject SEO synchronously so Googlebot and SPA
// visitors get the correct title/description even when served from
// the root SPA fallback shell.
var HUB_SEO = {
'/courses': {
title: 'Occult Courses Online | Terra Incognita Academy',
description: 'Learn witchcraft, ceremonial magic, hermeticism and chaos magick with 300+ occult courses online. Expert instructors, lifetime access. Start today.'
},
'/shop': {
title: 'Grimoires & Occult PDF Books | Terra Incognita Academy',
description: 'Download grimoires, occult books and esoteric PDFs: Goetia, Solomonic magic, Book of Shadows, angelic and planetary rituals. Instant delivery, lifetime access.'
},
'/bundles': {
title: 'Occult Course Bundles | Terra Incognita Academy',
description: 'Save up to 50% on occult course bundles: witchcraft, ceremonial magic, hermeticism and evocation packages. Lifetime access, one payment.'
},
'/forum': {
title: 'Witchcraft & Occult Forum | Terra Incognita Academy',
description: 'Join our witchcraft forum and occult community. Discuss grimoires, rituals, evocation, meditation and esoteric practice with practitioners worldwide.'
},
'/blog': {
title: 'Blog — Spiritual Teachings | Terra Incognita Academy',
description: 'Read in-depth articles on spirit work, ritual practice, grimoire study and consciousness development from Terra Incognita Academy instructors.'
},
'/encyclopedia': {
title: 'Spirit Compatibility Guide | Terra Incognita Academy',
description: 'Explore the encyclopedia of spirits, domains, archetypes and intents. A comprehensive reference for serious practitioners at Terra Incognita Academy.'
},
'/rituals': {
title: 'Ritual Hub — Blueprints | Terra Incognita Academy',
description: 'Design personalized rituals with the Terra Incognita Academy Ritual Hub. Step-by-step blueprints for spirit work, devotion and transformation.'
},
'/glossary': {
title: 'Spiritual & Magical Glossary | Terra Incognita Academy',
description: 'Definitions of key spiritual, magical and esoteric terms used across courses, grimoires and rituals at Terra Incognita Academy.'
},
'/spiritual-world': {
title: 'Sacred Geography & Power Points | Terra Incognita',
description: 'Explore the spiritual world: power points, sacred sites and the geography of spirit. Curated by Terra Incognita Academy.'
},
'/instructors': {
title: 'Meet Our Teachers | Terra Incognita Academy',
description: 'Meet the experienced spiritual instructors of Terra Incognita Academy. Practitioners, scholars and guides leading our courses.'
},
'/pillars': {
title: 'Pillar Hubs — Goetia, Angels & Deities | Terra Incognita Academy',
description: 'Explore our pillar hubs: the 72 Goetic demons, the Shem HaMephorash angels, the Olympic spirits and the Norse, Celtic and Greek deities, with linked courses, grimoires and articles.'
},
'/about': {
title: 'About Us — Our Mission | Terra Incognita Academy',
description: 'Learn about Terra Incognita Academy: our mission to deliver rigorous, benevolent spiritual education for serious modern practitioners.'
}
};
// Indexable-from-the-shell allowlist.
//
// IMPORTANT: this list only ever applies to a URL that has NO prerendered
// HTML file (the script early-returns when a canonical is already present).
// A URL served by the generic shell has the homepage title and no unique
// content, so declaring it indexable produced thousands of identical
// "index,follow" pages — exactly the "Duplicate: Google chose a different
// canonical" and "Crawled - currently not indexed" reports.
//
// Therefore ONLY stable hub/static routes stay indexable here. Every
// item-level route (listings, cities, tags, topics, courses, products,
// profiles, certificates, …) must earn indexability by having a real
// prerendered page; without one it is noindex,follow.
var INDEX_PATTERNS = [
/^\/$/,
/^\/courses$/, /^\/shop$/, /^\/bundles$/, /^\/ebook-bundles$/, /^\/forum$/,
/^\/blog$/, /^\/encyclopedia$/, /^\/encyclopedia\/spirits$/,
/^\/spiritual-world$/, /^\/spirit-alignment-codex$/,
/^\/(theurgy|evocation|spirit-guides|spirit-communication)$/,
/^\/answers$/, /^\/glossary$/, /^\/compendium$/,
/^\/rituals$/, /^\/ritual-builder$/,
/^\/about$/, /^\/about\/faculty$/, /^\/contact$/, /^\/ambassador$/, /^\/instructors$/,
/^\/free-ebook$/, /^\/members$/, /^\/declaration$/, /^\/experienced-practitioners$/,
/^\/become-instructor$/, /^\/standing-faq$/, /^\/platform$/, /^\/sitemap$/, /^\/rss$/,
/^\/academy-transfer$/, /^\/accredited-spiritual-program$/, /^\/updates$/,
/^\/[a-z0-9-]+-school$/, /^\/certified-paths$/,
/^\/(infernal-healer|power-invoker|wealth-architect|infernal-strategist|master-of-knowledge|shadow-alchemist|master-of-influence|infernal-lover|infernal-protector|pathbreaker|infernal-seer|infernal-sovereign)$/,
/^\/privacy-policy$/, /^\/terms-of-service$/, /^\/cookie-policy$/,
/^\/refund-policy$/, /^\/disclaimer$/, /^\/copyright$/,
/^\/verify-certificate$/,
/^\/tags$/, /^\/pillars$/,
/^\/directory$/, /^\/directory\/pricing$/
];
var isNoindex = NOINDEX_PREFIXES.some(function(p){
return path === p || path.indexOf(p + '/') === 0;
});
var redirectTarget = REDIRECT_MAP[path];
// Pattern-based legacy redirects (must mirror the Cloudflare worker
// so direct browser hits behave identically to crawler hits).
if (!redirectTarget) {
var m;
if ((m = path.match(/^\/shop\/product\/(.+)$/))) redirectTarget = '/shop/' + m[1];
else if ((m = path.match(/^\/category\/(.+)$/))) redirectTarget = '/courses/category/' + m[1];
else if ((m = path.match(/^\/bundle\/(.+)$/))) redirectTarget = '/bundles/' + m[1];
else if ((m = path.match(/^\/profile\/(?!settings|edit)([^/]+)$/))) redirectTarget = '/u/' + m[1];
}
if (redirectTarget) {
canonical = origin + redirectTarget;
isNoindex = true; // alias itself is not indexable
// Actually navigate real visitors (bots see canonical+noindex above).
// Lovable hosting has no edge redirects, so we do it client-side.
try {
var ua = (navigator && navigator.userAgent) || '';
var isBot = /bot|crawler|spider|crawling|facebookexternalhit|slurp|bingpreview|linkedinbot|whatsapp|telegram/i.test(ua);
if (!isBot) {
window.location.replace(redirectTarget + (window.location.search || '') + (window.location.hash || ''));
}
} catch (e) {}
}
var isKnownGood = !isNoindex && INDEX_PATTERNS.some(function(re){ return re.test(path); });
var link = document.createElement('link');
link.setAttribute('rel', 'canonical');
link.setAttribute('href', canonical);
document.head.appendChild(link);
var ogUrl = document.createElement('meta');
ogUrl.setAttribute('property', 'og:url');
ogUrl.setAttribute('content', canonical);
document.head.appendChild(ogUrl);
var twUrl = document.createElement('meta');
twUrl.setAttribute('name', 'twitter:url');
twUrl.setAttribute('content', canonical);
document.head.appendChild(twUrl);
// Apply final robots state synchronously. Known public routes get index;
// private routes, redirect aliases, and unknown paths get noindex.
var existing = document.querySelectorAll('meta[name="robots"], meta[name="googlebot"]');
for (var i = 0; i < existing.length; i++) existing[i].parentNode.removeChild(existing[i]);
var robotsValue = isKnownGood
? 'index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1'
: 'noindex, follow';
var robots = document.createElement('meta');
robots.setAttribute('name', 'robots');
robots.setAttribute('content', robotsValue);
document.head.appendChild(robots);
var gbot = document.createElement('meta');
gbot.setAttribute('name', 'googlebot');
gbot.setAttribute('content', robotsValue);
document.head.appendChild(gbot);
var cleanupSeoDuplicates = function(){
var selectors = ['title', 'meta[name="title"]', 'meta[name="description"]'];
for (var s = 0; s < selectors.length; s++) {
var nodes = document.head.querySelectorAll(selectors[s]);
for (var n = 0; n < nodes.length - 1; n++) {
if (nodes[n] && nodes[n].parentNode) nodes[n].parentNode.removeChild(nodes[n]);
}
}
};
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', cleanupSeoDuplicates, { once: true });
} else {
cleanupSeoDuplicates();
}
setTimeout(cleanupSeoDuplicates, 0);
// Synchronous hub-route SEO injection. Hub routes (e.g. /courses,
// /shop) cannot have prerendered extensionless static files because
// their slug exists as a directory (dist/courses/foo.html). Inject
// unique title + description here so Googlebot's first-paint scan
// sees per-route SEO instead of the homepage shell defaults.
var hub = HUB_SEO[path];
if (hub) {
try {
var existingTitles = document.head.querySelectorAll('title');
for (var t = 0; t < existingTitles.length; t++) existingTitles[t].parentNode.removeChild(existingTitles[t]);
var titleEl = document.createElement('title');
titleEl.textContent = hub.title;
document.head.appendChild(titleEl);
var metaSelectors = ['meta[name="title"]','meta[name="description"]','meta[property="og:title"]','meta[property="og:description"]','meta[name="twitter:title"]','meta[name="twitter:description"]'];
for (var ms = 0; ms < metaSelectors.length; ms++) {
var existingMetas = document.head.querySelectorAll(metaSelectors[ms]);
for (var em = 0; em < existingMetas.length; em++) existingMetas[em].parentNode.removeChild(existingMetas[em]);
}
function appendMeta(attr, name, content){
var el = document.createElement('meta');
el.setAttribute(attr, name);
el.setAttribute('content', content);
document.head.appendChild(el);
}
appendMeta('name', 'title', hub.title);
appendMeta('name', 'description', hub.description);
appendMeta('property', 'og:title', hub.title);
appendMeta('property', 'og:description', hub.description);
appendMeta('name', 'twitter:title', hub.title);
appendMeta('name', 'twitter:description', hub.description);
} catch(_) {}
}
// For redirect aliases, perform a client-side hard redirect after canonical
// is in place so users actually land on the canonical URL.
if (malformedAbsoluteTarget) {
try { location.replace(canonical + location.search + location.hash); } catch(_) {}
}
if (redirectTarget && redirectTarget !== path) {
try { location.replace(origin + redirectTarget + location.search + location.hash); } catch(_) {}
}
} catch (e) { /* noop */ }
})();
astrologers in berlin
The presence of professional astrologers in Berlin represents a profound intersection between historical hermeticism and contemporary spiritual inquiry. Within the curriculum of Terra Incognita Academy, the study of celestial movements over this specific European cultural hub serves as a practical application of the ancient axiom, as above, so below. Berlin, a city long associated with intellectual enlightenment and occult resurgence, provides a unique energetic landscape for the observation of planetary influences. For the dedicated student, engaging with the astrological traditions rooted in this region offers a clearer understanding of how cosmic cycles manifest within urban environments, shaping both collective consciousness and individual destiny through the rigorous lens of traditional and modern natal analysis.
Integrating these astrological perspectives into one’s broader practice facilitates a deeper connection to theurgy and ceremonial magic. At Terra Incognita Academy, we perceive the celestial bodies not as distant observers, but as vital participants in the spiritual evolution of the practitioner. By examining the methodologies of practitioners in Berlin, students can enhance their engagement with our extensive compendium articles, which detail the specific signatures of planetary intelligences and their roles in harmonious ritual work. This localized study enriches the theoretical foundations provided in our specialized courses, allowing for a more nuanced interpretation of the celestial mechanics that govern the successful invocation of benevolent energies and the alignment of the human soul with the divine order.
To support this scholarly journey, our academy offers a wealth of resources designed to bridge the gap between theory and praxis. Students are encouraged to explore our diverse range of ebooks and digital downloads, which provide technical guidance on western sidereal and tropical systems prevalent in Central European traditions. Furthermore, our vibrant forum discussions offer a sanctuary for practitioners to share observations on transits and mundane shifts affecting the Berlin meridian. By participating in this academic community, students gain access to a collaborative environment where the wisdom of the stars is translated into actionable insights for spiritual growth. Through these multi-faceted educational tools, the study of astrology becomes an essential pillar of the seeker's comprehensive esoteric development.
Directory Listings
Wild Child Astrology — Wild Child Astrology is an astrologer in Berlin, Germany, located at Weichselstraße 34, 12045 Berlin. The business provides a dedicated setting for people
AstrologieRitter — AstrologieRitter is an astrologer in Berlin, Germany, located at Bonner Str. 12, 14197 Berlin. Listed in the Astrologer category, the business provides a l
Astrologie I Annika Wisniewski — Astrologie I Annika Wisniewski is an astrologer in Berlin, Germany. Located at Ebersstraße 10, 10827 BerlinBezirk TempelhofSchöneberg, the business provide
Das Zwölfte Haus - Schamanismus und Astrologie — Das Zwölfte Haus Schamanismus und Astrologie is an astrologer in Berlin, Germany. Located at Bizetstraße 43, 13088 Berlin, the business offers a local poi
Ilona Clemens Astrologie — Ilona Clemens Astrologie is an astrologer in Berlin, Germany, located at Stresemannstraße 76, 10963 Berlin. As a specialist astrology business, it offers a
Astrologische Beratung - Lennart Trenkelbach — Astrologische Beratung Lennart Trenkelbach is an astrologer in Berlin, Germany. Located at Brunnenstraße 147, 10115 Berlin, the business offers a dedicate
Astrologie Taufiq Norbert Mempel — Astrologie Taufiq Norbert Mempel is an astrologer in Berlin, Germany, located at Danziger Str. 109, 10405 Berlin. The business offers a dedicated setting f
Zehnstern Astrologie — Zehnstern Astrologie is an astrologer in Berlin, Germany, located at Liesenstraße 5a, 10115 Berlin. The business provides a dedicated setting for people in
Good Stars Jyotish — Good Stars Jyotish is an astrologer in Berlin, Germany, located at Mittenwalder Str. 3, 10961 Berlin. As a spiritual business directory listing, it may be